我正在尝试编写一个程序,它将为数组分配5个随机整数,但到目前为止,它正在用零填充数组。此外,第一个数字不能为零。我究竟做错了什么?
#include <stdio.h>
#include <stdlib.h>
int number[5];
int main() {
int i;
int t=0;
for (int t=0;t<5;t++) {
if (i=0)
{number[i] = rand()%8+1;}
else
{number[i] = rand()%10;}
i++;
printf("%d", number[i]);
}
return (0);
}
答案 0 :(得分:3)
if (i=0)
这是作业,而非平等比较。
int i;
此外,i
未初始化,因此访问其值是未定义的行为。由于您不小心将其分配给它而不是与之进行比较,if (i=0)
不会调用未定义的行为,但如果您修复了第一个错误,它就会出现。
i++;
printf("%d", number[i]);
在打印之前增加i
意味着您总是在您正在处理的单元之后打印单元格。
您实际上并不需要i
; t
执行您希望i
执行的所有操作。我们将删除i
并将t
重命名为i
:
for (int i = 0; i < 5; i++) {
if (i == 0) {
number[i] = rand() % 8 + 1;
} else {
number[i] = rand() % 10;
}
printf("%d", number[i]);
}
答案 1 :(得分:0)
您的代码中出现了一些问题......
<强> 1)强>
您没有初始化变量i
<强> 2)强>
if(i=0)
应该是
if( i == 0 )
第3)强>
您可以使用变量t
代替i
- 意味着变量i
是不必要的
<强> 4)强>
在randomize()
函数调用之前,您应该有rand()
函数的函数调用,这样您就可以得到真正的随机数
<强> 5)强> 如果您只想显示随机数,则甚至不需要使用数组
答案 2 :(得分:0)
通过在程序中调用rand(),您将获得相同的“伪随机”值序列。要更改此序列,必须将“随机数”生成器设置为“种子”。这是通过在程序开头使用种子值调用srand()函数来完成的。
理想情况下,种子使用的值应随程序的每次运行而变化。您可以用作种子的事物是进程ID,时间,日期或任何其他系统提供的值,保证每次运行程序都不同。
void srand(unsigned int seed);
除此之外,您的程序中存在逻辑缺陷,因为其他人已经突出显示,其中if条件分配错误是最严重的。