下列C语言程序运行时输入2473↙,则输出结果是( )
(注:↙为回车符号)
#include<stdio.h>
main()
{int cx;
while ((cx=getchar())!='\n')
{switch(cx-'2')
{case 0:
case 1:putchar(cx+4);
case 2:putchar(cx+4);
break;
case 3:putchar(cx+3);
default:putchar(cx+2);
}
}
}
A.668966 B.668977 C.6677877 D.6688766
參考答案:第1次
while ((cx=getchar())!='\n') 输入2473↙
{switch(cx-'2') 先读'2'用这个'2'-'2'=0
{case 0: 没有break向下.
case 1:putchar(cx+4); 这时cx='2'+4 ='6', 没有break向下
case 2:putchar(cx+4); 这时cx='2'+4 ='6', 没有break向下
break; 有break返回
case 3:putchar(cx+3);
default:putchar(cx+2);
}
}
第2次
{switch(cx-'2') 读'4'用这个'4'-'2'=2
{case 0: 没有break向下.
case 1:putchar(cx+4); 跳过
case 2:putchar(cx+4); 这时cx='4'+4 ='8', 没有break向下
break; 有break返回
case 3:putchar(cx+3);
default:putchar(cx+2);
}
第3次
{switch(cx-'2') 读'7'用这个'7'-'2'=5
{case 0: 没有break向下.
case 1:putchar(cx+4); 跳过
case 2:putchar(cx+4); 跳过
break; 跳过
case 3:putchar(cx+3); 跳过
default:putchar(cx+2); 没有符合要求的用默认这时CX='7'+2='9'
}
第4次
{switch(cx-'2') 读'3'用这个'3'-'2'=1
{case 0: 没有break向下.
case 1:putchar(cx+4); 这时cx='3'+4 ='7', 没有break向下
case 2:putchar(cx+4); 这时cx='3'+4 ='7', 没有break向下
break; 有break返回
case 3:putchar(cx+3);
default:putchar(cx+2);
}
所以结果是668977
字符的加减是用ASCII码进行的哦