只是尝试生成 60-100 之间的 25 个随机数并将它们存储在数组中。不过需要一些确认。这是它的样子吗?
int main () {
int temp[25], i, sum;
srand( (unsigned) time(NULL) );
for (i=0; i <= 25; i++) {
get_value(i);
sum += temp[25]; //Eventually will be added together to find avg
};
}
int get_value(int temp_random) {
return((rand()%40)+60);
}
最佳答案
你调用了未定义的行为
- 使用超出范围的数组下标。
- 使用未初始化变量的值
sum
具有自动存储期限,这是不确定的。
行sum += temp[25];
应该是 sum += temp[i];
,
并且循环条件应该是 i < 25
或 i < (int)(sizeof(temp)/sizeof(*temp))
而不是 i <= 25
.
还有 sum
必须初始化。
除了未定义的行为,您的程序存在以下问题:
- 什么
get_value()
返回被丢弃。 -
get_value()
未使用且似乎毫无意义的强化temp_random
. - 函数在声明之前使用。
-
get_value()
不会返回100
因为rand()%40
将仅为 0 到 39 之间的数字,包括 0 到 39。
另请注意,属于 for
的 block 后面的分号不需要循环。 (虽然这没有害处)
你的代码应该是这样的:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define GENERATE_NUM 25
#define GENVALUE_MIN 60
#define GENVALUE_MAX 100
int get_value(void);
int main (void) {
int temp[GENERATE_NUM], i, sum = 0;
srand( (unsigned) time(NULL) );
for (i=0; i < GENERATE_NUM; i++) {
temp[i] = get_value();
sum += temp[i]; //Eventually will be added together to find avg
}
return 0;
}
int get_value(void) {
return((rand() % (GENVALUE_MAX - GENVALUE_MIN + 1)) + GENVALUE_MIN);
}
关于C、使用随机数并将它们存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35952033/