永发信息网

C语言问题啊

答案:2  悬赏:50  手机版
解决时间 2021-05-10 19:06

有以下程序:

#include <stdio.h>

main()

{int c;

while((c=getchar())!='\n')

{switch(c-'2')

{case 0:

 case 1:putchar(c+4);

case 2:putchar(c+4);break;

case 3:putchar(c+3);

default:putchar(c+2);break;

}

}printf("\n");

}

若输入数据2473.得到的结果是668977.为什么呢?怎么算的?

最佳答案

第一次输入2 case 0 但没有break,所以继续做下面的,输出2+4,同理没有break输出2+4,


第二次输入4,case 2 输出4+4,break跳出


第三次输入7,7-2=5,default 输出7+2,break跳出


第四次输入3,case 1,输出3+4,没有break,继续做下面的输出3+4,break


所以结果是668977

全部回答

你的答案668977是六个字符,'6'ASCII码为54,'2'ASCII码为50,c语言中有个自动类型转换,int c=50与char c='2'是通用的,在(c=getchar())!='\n'中将c作为一个字符,但你定义的是int型所以c存储的是50,若定义成char型则c中存储'2',相减时自动将字符的ASCII码相减。在switch中c作为整数来进行判断。另外每句case后加break是一定要记住的,除非你一定要给几个case加同一个命令。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
QQ号登陆时候密码打错N次是不是就不能在登陆
为什么我给别人的第一种印象很“傲”?
劲舞团要更新
是在大学里面买被子等东西好些,还是自己带去
眼线膏很难卸掉怎么办
电脑全屏切换时黑屏
DNF湖南1区王者之星能卖多少钱, 高手速度 刚
财神能否对着门放
沪指今天下午还会上涨吗
评价隋朝大运河的诗一定要自己写的!
视频变成黑白了怎么办
1G金士顿的内存条报价多少?
人人怎么升级快?
加度数的泳镜上的黑色防水圈有没有的买
爱哭怎么办
推荐资讯
终极三国他们打曲棍球是第几集
哪里可以有免费的Q秀
有那些短篇小说好看?
天平座女和双鱼座男配吗?
手机可以代替电脑吗?
QQT9月的活动出来了吗!多会出来!
求篇作文《梁启超,我想对你说》
闷,我的QQ飞信为什么关不掉,我发送短信老说
网球场地规则
为什么我的两眉中间痘痘永远无法消除!如何消
GT-S5230C我在查看短信时总是显示~取回中~ 这
为什么这几天QQ农场和停车位打开时这么卡?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?