main(){
char k; int I;
for(i=1;i<3;i++){
scanf("%c",&k);
switch(k){
case '0': printf("another\n");
case '1': printf("number\n");
}
}
}
程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是
A) another number
B) another number
C) another number another
D) number number number
为什么?
我自己照他的样子编了下是another number number
----------------解决方案--------------------------------------------------------
case后没有break就把后面的全执行了
----------------解决方案--------------------------------------------------------
一步一步看执行顺序就可以知道了.
没有break;会一直往下执行,直到switch()的最后.
LZ可以试一下.
----------------解决方案--------------------------------------------------------
输入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的前面有一行空着
----------------解决方案--------------------------------------------------------
谢谢,楼上的..分析的这么透彻~~~
----------------解决方案--------------------------------------------------------
main()
{
char k;
int i;
for(i=1;i<3;i++)
{
scanf("%c",&k);
switch(k)
{
case '0': printf("another\n");
case '1': printf("number\n");
}
}
}
我编译时出错,停留在char k;行
----------------解决方案--------------------------------------------------------
楼上的错误,有谁知道呀?
我咋不知道了,郁闷!
----------------解决方案--------------------------------------------------------
楼上的错误,有谁知道呀?
我咋不知道了,郁闷!
头文件也有了,#include <stdio.h>,但就是没有找到问题的所在
----------------解决方案--------------------------------------------------------
真郁闷,不知道哪儿错了!!!
错得比较奇怪啊!!!
----------------解决方案--------------------------------------------------------
真郁闷,不知道哪儿错了!!!
错得比较奇怪啊!!!
你们的编译也没有通过?
----------------解决方案--------------------------------------------------------