我的学校作业有问题,如下所示:
“编写一个程序,反复询问用户输入一个数字,如果用户输入为0,并且循环结束,则打印数组中的最后5个数字。如果扫描的数字少于5个,则未使用值必须为0“
看起来应该是这样的:
这是我的代码:
int main()
{
int i, array[4] = {};
while(1)
{
printf("Next number: <0 = quit>: ");
scanf("%i", &i);
if(i!=0)
{
array[0] = array[1];
array[1] = array[2];
array[2] = array[3];
array[3] = array[4];
array[4] = i;
}
else
break;
}
for(i=0; i<=4; i++)
{
printf("Number %i is: %i\n", i+1, array[i]);
}
return 0;
}
但是当我打印数字时,最后一个数字(array [4])为0。
我做错了什么?
答案 0 :(得分:6)
你在这里声明一个长度为4的数组:
int i, array[4] = {};
此数组的索引从0到3,因此您永远不应尝试访问
array[4]
,这将导致未定义的行为