C语言用scanf给数组赋值问题

格式:Enter five numbers:1 2 10 11 12
每个数中间需要有1个空格
比如:
int main(void)
{
int N[5];
printf("Enter five numbers:");
for (int i=0; i < 5; i++)
scanf("%d ",&N[i]);
for (int j=0; j< 5; j++)
printf("%d ", N[j]);
printf("\n");
return 0;
}
为什么要一次输入6个数才会出现结果?
比如输入 1 2 3 4 5 6
输出是 1 2 3 4 5
如果只输入 1 2 3 4 5不会输出任何结果

scanf()中如果在%d后面加了一个空格,会使scanf()函数在读数时跳过输入中的空白字符(包括空格回车等),直到遇到第一个非空白字符出现为止。当你输入完5个数之后,由于你的%d后面带空格,所以scanf仍然在期待出现一个非空白符才结束。你甚至可以在输入完5个数之后,再输入一个字母,也是可以的(只要不是空白字符就行)。这是C语言的特性,你有空可以多读读C标准库的书。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-07-22
把canf("%d ",&N[i]);改成canf("%d",&N[i]);,即把d后面的那个空格删除。追问

去掉空格程序直接不能运行了

本回答被提问者采纳
第2个回答  2017-07-22
scanf("%d",&N[i]); //%d后面应该没有空格追问

去掉空格程序直接不能运行了

追答

要输入一个数然后回车在输入 再回车这么输

第3个回答  2017-07-22
既然这样,就换成逐个提示、逐个输入的

~
~
~追问

这个我知道 但是作业对格式有要求

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网