尝试在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);
}
答案 0 :(得分:2)
您通过
调用未定义的行为sum
的值,这是不确定的。行sum += temp[25];
应为sum += temp[i];
,
并且循环条件应为i < 25
或i < (int)(sizeof(temp)/sizeof(*temp))
而不是i <= 25
。
还必须初始化sum
。
未定义行为的Bisides,您的程序存在以下问题:
get_value()
返回的内容被丢弃。get_value()
未使用且似乎毫无意义的句子temp_random
。get_value()
将不会返回100
,因为rand()%40
将只包含0到39之间的数字。另请注意,不需要属于for
循环的块的分号。 (虽然这没有害处)
您的代码应该是这样的:
#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);
}
答案 1 :(得分:2)
许多问题:
get_value
参加了一个参赛,但从未使用过它。i
错误,因为它超出范围。for
循环以[{1}}结尾,但也不正确。请参阅此运行代码 - 不要忘记;
#include<limits.h>
答案 2 :(得分:1)
在a
和b
之间生成随机数的公式为:rand() % (b-a+1) + a
。
也就是说,你的for循环应该看起来像这样:
for (i = 0; i < 25; i++) {
temp[i] = rand() % (100-60+1) + 60;
sum += temp[i];
}
另外,请注意你在for循环条件(i <= 25
)中所做的事情。这将从0(包括)变为25(包括),但数组的最后一个索引是24
。