输入01,由于字符只能接受一个字符,所以此时K为0,由于K=0,而1却储存在缓存之中,所以执行printf("another\n");
又由于没有BREAK,所以继续执行下去而不去判断,所以会继续执行printf("number\n");第一次循环结束,开始第二次循环,
执行scanf("%c",&k);但由于缓存之中还有字符,系统就不会出现提示输入的界面,而直接将缓存中的1传给K,此时K=1;所以执行printf("number\n");最后的结果就是another number number,答案错了
自已去把3改大点,让其循环次数多点,输入多个字符(0101)运行下面这个.
#include <stdio.h>
void main()
{
int i;
char k;
for(i=0;i<5;i++)
{
scanf("%c",&k);
switch(k)
{
case '0':printf("another\t");
case '1':printf("number");
}
printf("\n");
}
printf("aaaa\n");
}
结果只会输出四行,而循环有五次,为什么会这样呢? 原因在此,缓存中还有一个回车符,在第五次循环是将回车符传给K,SWITCH语句中没有语句被执行,但printf("\n");是被执行了的,运行之后,输出的AAAA的前面有一行空着