标题:一个小问题,学习过程中做过的一道题没明白
只看楼主
唐吕温
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-9-1
结帖率:0
已结贴  问题点数:20 回复次数:8 
一个小问题,学习过程中做过的一道题没明白
有以下程序
#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<cr> 程序的输出结果是?668977
这个是怎么算出来的
搜索更多相关主题的帖子: 学习 
2010-09-01 11:07
S_12s
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:110
专家分:670
注 册:2010-7-21
得分:2 
你在case0,case 1,case 3后都得加break;不然就复杂了……,它会执行后面的语句,直接遇到第一个break;
2010-09-01 11:31
manliuhui
Rank: 2
来 自:山东德州
等 级:论坛游民
帖 子:23
专家分:52
注 册:2009-7-25
得分:2 
楼上说的对~~模拟一下程序的话
getchar()读入'2' ->case 0 ->case 1输出2+4 ->case 2输出2+4;break;
getchar()读入'4' ->case 2输出4+4;break;
getchar()读入'7' ->default输出7+2;break;
getchar()读入'3' ->case 1输出3+4 ->case 2输出3+4;break;
getchar()读入'\n'跳出循环输出'\n'
所以结果是668977
2010-09-01 11:46
xtfcu33
Rank: 2
等 级:论坛游民
帖 子:48
专家分:43
注 册:2010-4-26
得分:2 
楼上是正解,书写要规范,细节要注意!
2010-09-02 11:30
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
得分:2 
以下是引用唐吕温在2010-9-1 11:07:31的发言:

有以下程序
#include
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,case 1:输出6,没有break不结束进入case 2:输入6,结束
输入4--case 2:输出8,break结束
输入7--default:输出9,break结束
输入3--case 1:输出7,没有break不结束,case 2:7,break结束
2010-09-02 18:42
孤狼刀锋
Rank: 2
等 级:论坛游民
帖 子:23
专家分:61
注 册:2010-8-23
得分:2 
楼上正解,清晰明了!
2010-09-02 21:28
唐吕温
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-9-1
得分:0 
各位都谢谢了。我现在已经懂了,特别感谢三楼和五楼,
还有,是不是c=getchar())!='\n'的意思就是一个getchar函数?输入2时,相当于赋予c值2。但是'2'怎么解释,它不是一个字符量么?不应该代表50么
2010-09-05 00:38
GO0527
Rank: 2
等 级:论坛游民
帖 子:7
专家分:15
注 册:2010-6-11
得分:2 
是啊  但是你输出的时候是用putchar()函数  所以输出的仍然是字符常量   而不是ASC值
2010-09-05 21:59
自由战士89
Rank: 5Rank: 5
等 级:职业侠客
帖 子:154
专家分:387
注 册:2010-9-2
得分:2 
楼主要考二级啊,这个题我今天刚做
2010-09-06 22:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-317385-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.133725 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved