用C中的scanf填充数组(最后输入的5个数字需要打印)

时间:2015-10-19 12:03:57

标签: c arrays pointers scanf

我的学校作业有问题,如下所示:

“编写一个程序,反复询问用户输入一个数字,如果用户输入为0,并且循环结束,则打印数组中的最后5个数字。如果扫描的数字少于5个,则未使用值必须为0“

看起来应该是这样的:

click here for the image

这是我的代码:

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。

我做错了什么?

1 个答案:

答案 0 :(得分:6)

你在这里声明一个长度为4的数组:

int i, array[4] = {};

此数组的索引从0到3,因此您永远不应尝试访问 array[4],这将导致未定义的行为