qqQ1157875619 发表于 2016-10-7 10:06:09

这个程序不知道为什么会这样

int main()
{
    int code;
    int i,a;
    for(i=1;i<=5;i++)
    {
      printf("请输入第%d个数据: ",i);
      scanf("%d",&code);
    }
    for(a=1;a<=5;a++)
    {
      printf("第%d个数据是:%d\n",a,code);
    }
    return 0;
}


然后就会这样,为什么明明已经输到第5个数据,然后又要你输入第四个数据,而且这个错误有时会出现,有时不出现。你们可以尝试在你们电脑输入数据是9,10,11,8,3试一下会不会出现我这种问题。帮忙了

无符号整形 发表于 2016-10-7 10:22:02

gcc一切正常。
请输入第1个数据: 9
请输入第2个数据: 10
请输入第3个数据: 11
请输入第4个数据: 8
请输入第5个数据: 5
第1个数据是:9
第2个数据是:10
第3个数据是:11
第4个数据是:8
第5个数据是:5

无符号整形 发表于 2016-10-7 10:22:24

好像数组越界了

qqQ1157875619 发表于 2016-10-7 12:08:02

无符号整形 发表于 2016-10-7 10:22
好像数组越界了

什么意思,求解

qqQ1157875619 发表于 2016-10-7 12:11:32

为什么会这样

无符号整形 发表于 2016-10-7 12:44:53

qqQ1157875619 发表于 2016-10-7 12:11
为什么会这样

多说是数组越界咯

Krant5 发表于 2016-10-7 21:28:40

大小为5的数组下标范围只能 0 -4

烈焰之手 发表于 2016-10-8 13:28:10

for(a=0;a<5;a++)
    {
      printf("第%d个数据是:%d\n",a,code);
    }
试一下这个

huabcdf 发表于 2016-10-14 14:09:45

数组下标从0开始,赋值时和打印的for中,a和i的初值不应为1,要改为0

wang815309286 发表于 2016-10-14 16:28:37

数组下标是从0开始的,但是你写的程序是从1开始的,5结束,但是正确的形式应该是a开始的,a结束的,所以你的数组中应该没有a这个元素的、

花开自有丶花落 发表于 2016-10-16 07:56:44

就是楼上说的,假如你定5个长的数组,但是在使用时应该是从0~4(code【0】code【1】code【2】code【3】code【4】),而不是1~5,
页: [1]
查看完整版本: 这个程序不知道为什么会这样