一道while循环题?求助!!!!!!

2025-12-16 20:17:08
推荐回答(3个)
回答1:

楼上的思路是对的,但是有个大错误,c+4里的c不是2,而是2的ascII码,50,所以c+4应该是54,这是6的ascII吗,虽然你的结果是对的,但是只是巧合而已
这个程序涉及到了char和int的转换,需要借助ascII码表

应该是这样,
首先,读入字符'2',将其ACSII码的值50传送给c,之后进行swith语句,c-'2'=50-50,结果是0,所以执行case 0,就是putchar(c+4),就是输出ACSII为50+4的字符,结果是54,是6的ACSII码,所以输出一个6,由于没有break语句,所以继续执行case2,又输出一个6。
之后就是依此类推了。

但是楼上的,你说c+4=2+4=6这是绝对不对的啊,要是还非这么写,应该是c+4='2'+4='6'

回答2:

首先c='2',c-'2'==0,输出c+4='6',接着输出case 2后面的仍然是'6';然后c='4',c-'2'==2,输出c+4='8'结束了;然后c='7',c-'2'==5,执行default输出c+2='9';最后c='2',c-'2'==1,执行case 1和case 2,输出两个7
只要记住switch的case后面没有break就会接着执行下面的case后面的语句就可以了

回答3:

进入循环后,读第一个字符2
c-'2'=0
进入case:0,输出c+4=2+4=6
case:2,输出c+4=2+4=6,break跳出switch
读第二个字符4 ,4-2=2
case:2,输出c+4=4+4=8,break跳出switch
读第三个字符7 ,7-2=5
default,输出c+2=7+2=9,跳出switch
读第四个字符3 ,3-2=1
case:1,输出c+4=3+4=7,
case:2,输出c+4=3+4=7,break跳出switch
读入'\n'结束循环

楼下的说的也对,我写的结果确实是ascii码
但这不是巧合,putchar()输出的是字符
字符2再加上2就是字符的4,很正常啊
是这个意思,不过我懒得改
c-'2'就是求实际的值
把case中的值改为字符的‘2’到‘5’结果是一样的