我正在尝试创建一个程序,用户在其中输入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
答案 0 :(得分:2)
在for循环中,您可以将 << / strong>更改为 <= 或将 n-1 更改为 n
答案 1 :(得分:0)
代码片段中存在多个问题:
您应该测试scanf()
的返回值,以避免在无效输入上发生未定义的行为。
您应检查用户输入的值n
是否为<= 100
,以避免访问超出数组末尾的元素。
比较必须为elements < n
,因此elements
采用值0
,1
,... n-1
,因此{{1} }有效的索引值。
n
格式字符串scanf
中存在错误。