【发布时间】:2025-12-15 20:00:02
【问题描述】:
我想了解为什么当我将 SIZE 定义为 2 时程序允许我输入 3 个整数。当它返回数组时,它只返回两个数字而不是我输入的三个数字。谢谢你的帮助。
//C How to Program Exercises 2.23
#include <stdio.h>
#include <conio.h>
#define SIZE 2
int main (void){
int myArray[SIZE];
int count;
printf("Please enter 5 integers\n");
for (count=1;count<=SIZE;count++){
scanf("%d\n",&myArray[count]);
}
for (count=1;count<=SIZE;count++){
printf("The values of myArray are %d\n",myArray[count]);
}
getch();
return 0;
}
【问题讨论】:
-
C 数组是从零开始的,这是您的代码的第一个严重问题!您的大小为 2 的数组具有元素 0 和 1,因此在您的情况下,输入的第二个元素将最终出现在数组之外。先更正一下。
-
我理解你所说的关于数组的内容。你知道程序让我输入超过 2 个元素吗?
-
@RaphaelJones 那是因为你有
\n。因为 scanf() 调用只有在您输入非空白字符时才会完成。 -
@BlueMoon,是的,如果在同一行输入多个数字。如果在每个单独的行中输入额外的数字时读取额外的数字,则需要不同的解释。
-
@JohnBollinger 解释还是一样的。对 scanf 的后续调用接受先前输入的数字。所以它需要一个额外的输入才能完成最后一次 scanf() 调用。