C语言,关于scanf语句里的回车,空格

比如说这类题目

#include <stdio.h>
main()
{char a,b,c,d;
scanf(”%c%c”,&a,&b);
c=getchar();d=getchar();
printf(“%c%c%c%c\n”,a,b,c,d);
}
当执行程序时,按下列方式输入数据(从第1列开始,<CR>代表回车,注意:回车也是一个字符)
12<CR>
34<CR>
则输出结果是
A) 12
34
B) 12
C) 1234
D) 12
3
最终的结果是a=1,b=2吗?为什么不是a=12?
还有scanf和getchar语句里的回车和空格是怎么处理的?

首先scanf是以字符型输入的,所以1会被a接收,2被b接收,而回车后边有getchar(),getchar()会把回车当字符接收,所以第一个getchar()接收的是回车,第二个getchar()接收的是3
所以最终的结果是::a=1,b=2,c=\n,d=3

12
3
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-21
键盘中输入的都是一个个字符。所以你输入的12,就是字符1和2。对程序进行输入时共产生了6个字符 1,2,回车符‘\n’,3,4,\n。依次赋值给字符变量scanf接收的两个字符变量依次赋值给a,b也就是a='1',b='2'。而后面的c=getchar()就继续接收后面的字符,而紧接着的字符就是回车符\n,所以c='\n'。后面d='3'
第2个回答  推荐于2017-10-05
结果应该是D
因为你的scanf里面是%c,%c只会读入一个字符,所以a是1,b是2
然后两个getchar()分别读入回车和3
注意,scanf(%c)会忽略回车这个字符,但getchar()会把回车读进来追问

那如果scanf 里面是%d呢?

追答

那就是一个整数,比如123

本回答被提问者采纳
相似回答