在进行如下代码时:
#include <stdio.h>
int main()
{
int data;
char cdata;
printf("请输入一个整数:\n");
scanf("%d",&data);
switch(data){
case 1:
puts("满足条件1的情况");
break;
case 2:
puts("满足条件2的情况");
break;
case 3:
puts("满足条件3的情况");
break;
default:
puts("其他情况");
}
printf("请输入一个字符:\n");
scanf("%c",&cdata);
switch(cdata){
case 'a':
puts("满足条件a的情况");
break;
case 'b':
puts("满足条件b的情况");
break;
case 'c':
puts("满足条件c的情况");
break;
default:
puts("其他情况");
}
return 0;
}
其运行结果如下图所示:
未输入第二次,却显示了其运行结果。
分析其原因,是因为第一次scanf("%d",&data);输入后,回车没有被吸收,被放入到scanf("%c",&cdata);中。故需要将回车符吸收,即可进行第二次输入。代码进行如下修改:
printf("请输入一个字符:\n");
getchar(); // 吸收回车符
scanf("%c",&cdata);
其运行结果如下图所示: