在这个程序中的:
printf("请输入a;");
scanf("%d",&a);
printf("请输入x");
scanf("%c",&x);
printf("请输入b;");
scanf("%d",&b);
代码的意思是输入变量int a,char x,int b的值,你的问题就出在这啦
1、当你输入完变量a的值后,是以 Enter键结束吧,而你的x变量又是char型
所以程序就将你键入的 Enter键的ASCII码存入了x变量
所以让你错觉 scanf("%c",&x);没有执行。
当你把scanf("%c",&x);放到scanf("%d",&a);的前面就可以正常就说明了上面的问题。
你不妨这样试试:
#include "stdio.h"
main() {
int a,b;
char x;
printf("请依次输入a,x,b的值:");
scanf("%d,%c,%d",&a,&x,&b);
printf("a=%d,x=%c,b=%d",a,x,b);
}
回车也是一个字符哦 它的转义字符为'\n'
如果你想避免它的话
可以在scanf("%d",&a);后面加一个 getchar(); 接受键盘上输入的一个字符
不会受任何影响
你最好在printf()中加一个换行转义符 也就是回车为'\n'
然后改好了就是这样的了 我把代码贴这儿
#include
void main()
{
int a,b;
char x;
printf("请输入a:\n");
scanf("%d",&a);
getchar();
printf("请输入x:\n");
scanf("%c",&x);
printf("请输入b:\n");
scanf("%d",&b);
printf("%d,%c,%d",a,x,b);
}
‘回车’也是一个字符,编译器把‘回车’赋给了x。(这也是使用字符特别之处要注意。另外编译器有些智能,先执行了scanf("%c",&x);,再执行printf("请输入x");)
而scanf("%c",&x);放在后面,‘回车’执行的是它原来特有的功能。
空格和回车也是一个字符,你在输入一个数后回车了一下,其实这时候你已经给X赋值了,就是回车符。所以他不会再让你输入了!
字符不一定就非得是个字母数字之类的,像Tab,回车,空格这些都是字符。
它把回车也当成一个字符啦,赋给了x