我这里没什么问题。自从我使用srand命令后,我不再获得我想要的输出。 我必须创建将创建数组的程序,无论多长时间......我选择了5.然后它必须创建随机数,其中第5个数必须为0然后它必须将所有五个数一起计算。我成功了,我甚至使用了一些printfs来检查arr [5]是否为零。它是。在输出中我收到这个:5个随机数(那些被创建到数组中的数字)0(检查我设置arr [5]的命令是否真的将它设置为零,结果只计算所有5个随机数但不改变第5个arr到0.任何想法为什么?谢谢! 代码如下所示:
#include <stdio.h>
#include <time.h>
main()
{
srand(time(NULL));
int result,i;
int arr[5];
for (i=0;i<5;i++)
{
arr[i] = rand() % 10+1;
printf("%d ",arr[i]);
}
arr[5]=0;
printf("\n");
printf("%d\n",arr[5]);
i=0;
for(;i<5;i++)
{
result +=arr[i];
}
printf("%d\n",result);
printf("%d\n",arr[5]);
}
答案 0 :(得分:1)
声明int arr[5]
给出一个数组,其中包含5个元素,编号从0到4(含)。访问第6个元素arr[5]
未定义。
如果你想要五个元素和一个“哨兵”(零标记),你可以将arr
定义为
int arr[6];
您可能也应该将result
初始化为0,否则其值是未定义的,因为它是一个局部变量(事实上,严格来说,整个程序的含义在这种情况下是未定义的)。