中易网

c语言,为什么输入2473后结果是668977,程序是怎么运行的?

答案:6  悬赏:50  
解决时间 2021-03-01 04:21
#include "stdio.h"
main()
{int c;
while((c=getchar())!='\n')
{switch(c-50)
{ 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");
}

switch(c-50)
改为switch (c-'2')
printf 上去掉一个{
最佳答案
输入2473
循环接收:
1. 接收2,即c=‘2’,减去'2',结果为0,就会走case 0,1,2,就会输出两个c+4,即输出两个6
2.接收4,即c=‘4’,减去'2',结果为2,就会走case 2,就会输出一个c+4,即输出8
3.接收7,即c=‘7’,减去'2',结果为5,就会走default,就会输出一个c+2,即输出9
4.接收3,即c=‘3’,减去'2',结果为1,就会走case 1,2,就会输出两个c+4,即输出两个7
所以结果就是668977
全部回答
关于循环我觉得 慕容冰绡 说的不错,
童鞋,你那个2473系统把他理解成字符了 然后2的ASCII码是50 然后50-50等于0 执行第一个 由于没有break所以执行前俩 还是ascii吗 都是6 后边你一次类推吧 建议都加上break
用scanf()函数输入double类型的变量时,转换说明中的转换字符(占位符)只能用lf,即%lf,写成%f无法正确输入double型数据 或者把变量声明的类型改为float也可
你定义的是整型,输入是字符串型,输出也是字符串型。 有变化不正常么?
你输入2473,当为2时,进入switch语句(2的ASKII码是50)则为case 0:没处理 接着是case1输出c+4也就是6。但是还是没退出,接着case3还是c+4输出6。然后是你的4(4的ASKII码是52),则为case2输出8,同理7输出9,那么3输出77。故为668977
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我想领养一只藏獒
中国电信太科园营业厅地址有知道的么?有点事
如何制作KML文件 导入到奥维地图里
衢州火车站到杜泽镇有公交车吗?
富泰美食城这个地址在什么地方,我要处理点事
金立e102手机摁键时屏幕怎么会闪 右下方 非常
三中初一(8)时鑫成绩
回答what疑问时,动词的形式取决于什么?
软水机一年能用多少盐(还原剂)
南开企业管理考研初试科目?
一个英语培训学校是什么意思
惠普专卖店地址在什么地方,我要处理点事
闻一多的诗 越短越好啊
萨色克巴斯陶我想知道这个在什么地方
张籍的秋思第一句的作用
推荐资讯
在Axure 流程图里面点击了矩形 为什么在主页
炒股手续费是按交易次数收还是按交易金额收?
质量管理ISO的JD
大连海洋大学新校区现在已经建好了哪些建筑物
我交了4年公积金,,,每个月缴费136元。现在
头晕时睡一觉就好了,什么原因呢(每天都这样
联发水电五金地址在什么地方,想过去办事
数码宝贝哪一部历代主角都出来的
深圳顺络现在招不招普工,工资待遇怎么样?
天域(南苑路辅路)地址有知道的么?有点事想过
我家女儿天天跟小男孩出去玩,也不回家,该怎
姓徐女孩的名字?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?