数组少打印一个数字

时间:2019-04-04 09:06:43

标签: c arrays

我正在尝试创建一个程序,用户在其中输入n个数字,然后计算机将其显示出来。但是计算机显示的数字要少一个。

int aray[100],elements,n;
printf("Enter no of elements");
scanf("%d",&n);
printf("Enter elements");
for(elements=0;elements<n-1;elements++)
{
    scanf("%d%",&aray[elements]);

}
printf("The entered elements are:");
for(elements=0;elements<n-1;elements++)
{
    printf("%d\n",aray[elements]);

}

我希望输出为:

Enter no. of elements: 5
Enter elements: 5
4
87
34
56

The entered elements are: 5
4
87
34
56

但是输出是:

Enter elements: 5
4
87
34
56

The entered elements are: 5
4
87
34

2 个答案:

答案 0 :(得分:2)

在for循环中,您可以将 << / strong>更改为 <= 或将 n-1 更改为 n

答案 1 :(得分:0)

代码片段中存在多个问题:

  • 您应该测试scanf()的返回值,以避免在无效输入上发生未定义的行为。

  • 您应检查用户输入的值n是否为<= 100,以避免访问超出数组末尾的元素。

  • 比较必须为elements < n,因此elements采用值01,... n-1,因此{{1} }有效的索引值。

  • n格式字符串scanf中存在错误。