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
既然这样,就换成逐个提示、逐个输入的

~
~
~追问

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

C语言用scanf给数组赋值问题
int main(){ int a[3][2], i, m;for (i = 0; i < 3; i++){ for (m=0;m<2;m++)scanf("%d", &a[i][m]);for (i = 0; i < 3; i++){ for (m=0;m<2;m++)printf("%d\\n", a[i][m]);} return 0;} ...

C语言用scanf给数组赋值问题
scanf()中如果在%d后面加了一个空格,会使scanf()函数在读数时跳过输入中的空白字符(包括空格、回车等),直到遇到第一个非空白字符出现为止。当你输入完5个数之后,由于你的%d后面带空格,所以scanf仍然在期待出现一个非空白符才结束。你甚至可以在输入完5个数之后,再输入一个字母,也是可以的(只...

C语言中用scanf和循环语句是怎么给数组一一赋值的,希望说得详细点_百...
{ int name[10];int n;for (int i=0;i<10;i++){ scanf("%d",&n);\/\/输入函数,后边的&n是说存入n的所在的地址 name[i] = n;\/\/再把输入数据给数组 } for (i=0;i<10;i++){ printf("%d\\n",name[i]);} return 0;} ...

C语言中 为什么用scanf在给 数组和字符数组赋值是 数组要加& 而字符...
返 回 值:读入并赋给args的数据个数。遇文件结束返回EOF,出错返回0 从scanf函数的函数原型可以看出,scanf接收到的数据是赋给args指向的内存单元的,也即args是一个内存地址,而变量的内存地址用取地址符&来表示,数组的地址就是数组名。所以数组的前面不用加& 举例如下:int a; \/\/ 定义一个...

用scanf给数组赋值
scanf("%d", intergerArray[i]);这一句应该传入数组元素的地址,改为 scanf("%d", &intergerArray[i]);

如何用scanf给数组赋值
include <stdio.h>int main(){ int a[3][2], i, m; for (i = 0; i < 3; i++) { for (m=0;m<2;m++) scanf("%d", &a[i][m]); \/\/原先的scanf读取没问题 } for (i = 0; i < 3; i++) { for (m=0;m<2;m++) printf("%d\\n...

scanf给数组赋值
\/\/第一个也可以不取地址的。include <stdio.h> int main(void){ int a[10];scanf("%d",a); \/\/在这个程序中,这个语句与语句:scanf("%d",&a); 等价。printf("%d\\n",a[0]);return 0;}

用scanf给数组赋值
scanf("%d",integerArray[i]);scanf 用地址做参数,正确的写法 scanf("%d",integerArray+i);i应该提前赋0

c语言中给整型数组a[10]赋值,用scanf从键盘获取a[i],敲空格键结束输入...
");for(i=0;i<=t;i++)printf("%c",a[i]);} 输入数据测试的时候每输入一个数据(我这个不管输入的是字符还是数字)按一个回车 也就是按回车区分你输入的字符 当你要结束赋值的的时候 输入空格再按回车就可以了 我自己加了一项输出空格之前的多输入数 还有什么不对的 请指教 ...

scanf给数组赋值的时候要不要加上取址符&?
如果不是数组名,就要加&,如果是数组名,就不要,因为数组名就是首地址

相似回答