在进行如下代码时:
#includeint 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);
其运行结果如下图所示:



