C语言 为什么我scanf接收3个字符但是运行的时候两个字符就输出了呢

#include <stdio.h>void main(){ char a,b,c,x; scanf("%c%c%c",&a,&b,&c); if(b<a) x=a,a=b,b=x; if(c<b) x=b,b=c,c=x; printf("%c%c%c\n",a,b,c);}

#include <stdio.h>
int main()
{
char a,b,c,x;
scanf("%c%c%c",&a,&b,&c); /*这个地方没有空格,所以在黑框里应该输入abc ,而不是a b c ,因为正像那位仁兄说的那样,空格和回车也是字符*/
if(b<a)
x=a,a=b,b=x;
if(c<b)
x=b,b=c,c=x;
printf("%c%c%c\n",a,b,c);
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-11-10
回车也是字符
你这么写abc接收的分别是'c','\n','b'追问

我想接受3个字母要怎么改呢

追答

三个字符连写,然后回车
要不然就把scanf改成scanf("%c %c %c",&a,&b,&c);

本回答被提问者采纳
第2个回答  2016-11-10
回车也是字符,你输入的是c\nb,所以再按一下回车就已经运行完了追问

那要怎么改呢

追答

输入的时候连着输入abc,或者把scanf改成scanf("%c %c %c",&a,&b,&c);

相似回答