绵阳国际汽车展:一道c语言试题,请求帮助

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/05 16:36:15
有以下程序
main()
{ char k;
int i;
for(i=1;i<3;i++){
scanf(“%c”,&k);
switch(k)
{ case ‘0’: printf(“ab\n”);
case ‘1’: printf(“cd\n”);
}
}
}
程序运行时,从键盘输入01并回车,程序执行后的结果是_________ 。
这道题另我不明白的地方是:我们知道对于char型数据,内存只为其分配了一个字节,大家看这个例子:
char c1;
c1='ab';
printf("%c\n",c1);
这个例子的结果应该是a
也就是说,如果你输入多个字符,对于char型数据,应该只保留第一个字符。现在问题来了,题目是同时输入01然后回车,请问系统是怎么读到第二个字符也就是'1'的???

首先,你这里用了循环与选择结构的嵌套.
在输入"0"时,由于switch没有break语句会一直往下执行,直到结束,分支选择了case '0',由于没有break语句继续执行printf(“cd\n”); ..所以这时就会输出"ab"与"cd".再接着是"1".不用说就输出了"cd"啦.

ab

switch没有break语句一直往下执行的

输入0时输出
ab
cd
输入1时输出
cd

你没有BREAK语句啊,
CASE语句只起标注作作用,没有像IF一样的判断作用.如果标注了某一个CASE分枝,就会从此分枝执行下去,用BREAK后,就会执行BREAK跳出switch语句.