无法将数组中的数字更改为我想要的数字

时间:2018-05-09 18:20:33

标签: c

我这里没什么问题。自从我使用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]);

        }

1 个答案:

答案 0 :(得分:1)

声明int arr[5]给出一个数组,其中包含5个元素,编号从0到4(含)。访问第6个元素arr[5]未定义。

如果你想要五个元素和一个“哨兵”(零标记),你可以将arr定义为

int arr[6];

您可能也应该将result初始化为0,否则其值是未定义的,因为它是一个局部变量(事实上,严格来说,整个程序的含义在这种情况下是未定义的)。