关于C语言的一个题目

来源:百度知道 编辑:UC知道 时间:2024/05/21 14:58:13
22.有以下程序
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
请问这个题目怎么做,答案是不是有误!

-------------------------------------------
我将程序改了一下:
-------------------------------------------
#include <stdio.h>
main(){
char k; int i;
for(i=1;i<3;i++){
scanf("%c",&k);
switch(k){
case '0': printf("another---k=[%d]\n",k);
case '1': printf("number---k=[%d]\n",k);
}
}
}

-------------------------------------------
运行结果为:
-------------------------------------------

01

another---k=[48]
number---k=[48]
number---k=[49]
------------------------------------------------

其中48就是'0'ASCII码对应的数值
49就是'1'对应的ASCII码值

因为接收输入的是字符型变量
所输入的东西是存放在输入BUF中
接收时一次取一个字符
所以
第二次循环的时候在输入BUF中还有一个'1'
则k第二次就直接取走了,不需要输入。

4个答案的确都是错的,正确的应该是
another
number
number

第一个循环由于k是'0'所以输出第一行和第二行,第二个循环K是'1',所以输出第3行,第三个循环k是