【发布时间】:2015-10-19 12:03:57
【问题描述】:
我的学校作业有问题,如下所示:
"编写一个程序,重复向用户询问一个数字,如果用户的输入为 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。
我做错了什么?
【问题讨论】:
-
如果您将数组声明为
array[4],它将有 4 个数字,并且其中的 last index 将是 3 而不是 4。将你的数组声明为array[5] -
array[4] = {}不会在 C、IIRC 中编译,尽管它可以在 C++ 中编译。