对于这个程序,我们必须创建一个用户定义的函数,从60-100的值返回25个随机变量,但是当我运行程序时,所有25个值都是相同的。我对编程非常陌生,我认为错误存在于定义用户函数的位置,因为我认为不是运行变量25次,而是只运行一次并打印第一个值25次。但我不知道如何实际修复它:(
#include <stdlib.h>
#include <time.h>
int get_value (int Random);
int main ()
{
srand(time(NULL));//to randomize the number after each run
int Random = rand()%40+60;
printf("These are the temperatures for the day\n");
int temp[25], i;
for (i=0; i<25; i++)
{
temp[i] = Random;
printf("%d\n" ,temp[i]);
}
return 0;
}
int get_value (int Random)
{
Random = rand() % 40 + 60;
}
答案 0 :(得分:1)
您分配给Random
一次;然后每次通过循环复制其值,每次报告时给出相同的值。您需要在每次迭代时重新调用rand()
来重新生成随机数。你拨打srand()
一次是正确的;这很重要。
您的功能仅根据问题的要求生成60..99范围内的值,而不是60..100。修复是微不足道的;使用41而不是40。
当然,如果你从不打电话,拥有get_value()
功能是没有用的。 OTOH,它不使用它的输入参数,并且它不返回一个值,所以也许你也从不使用它。
答案 1 :(得分:1)
那是因为get_value()
没有返回任何内容。 Random
参数是您(可能已)传递的Random
的副本。覆盖(非常量)函数争论是合法的,但它不会找到它对调用者的方式。第二个问题是你永远不会调用这个函数,只需重复你生成的第一个随机数。
我建议你重写这个函数
int get_value (void)
{
return rand()%41+60; // range 60 to 100
}
并像这样称呼它
temp[i] = get_value();