组词大全

下列C语言程序运行时输入2473↙,则输出结果是( ) #include main() {int cx; while ((cx=getchar())!='\n') {switch

下列C语言程序运行时输入2473↙,则输出结果是( ) #include 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. 668876

好的,我们一步一步地分析这个 C 程序。

输入:2473
程序逐字符读取(getchar())直到 '\n'


程序逻辑

每次字符 cx 是 '2'、'4'、'7'、'3',分别处理。

对每个 cx 先计算 cx - '2'(即这个字符的数字 - 字符 '2' 的 ASCII 码)。

字符 '2':
cx = '2'cx - '2' = 0
case 0: 无语句,直接进入 case 1:
执行 putchar(cx+4)'2' + 4 按 ASCII:'2' 的 ASCII 50,加 4 得 54,即字符 '6'
输出 '6'

然后因为 case 1: 后面没 break,继续执行 case 2:putchar(cx+4)
再次输出 '6'
遇到 case 2: 后面的 break 才跳出 switch

所以 '2' 输出:66


字符 '4':
cx = '4'cx - '2' = 2
case 2: 执行 putchar(cx+4)'4' + 4:'4' 的 ASCII 52,加 4 得 56,字符 '8'
输出 '8'
break; 直接跳出 switch

所以 '4' 输出:8


字符 '7':
cx = '7'cx - '2' = 5
无匹配的 case(0,1,2,3 都不匹配),执行 default 语句:putchar(cx+2)
'7' + 2:'7' 的 ASCII 55,加 2 得 57,字符 '9'
输出 '9'
default 执行完,switch 结束。

所以 '7' 输出:9


字符 '3':
cx = '3'cx - '2' = 1
跳到 case 1:(case 1 是匹配的),执行 putchar(cx+4)'3' + 4:'3' 的 ASCII 51,加 4 得 55,字符 '7'
输出 '7'

没有 break,进入 case 2:putchar(cx+4):又输出 '7'
break; 结束 switch

所以 '3' 输出:77


最终输出: 66 8 9 77 → 合并为 668977


答案

B. 668977

相关成语


成语首拼