Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1728315
  • 博文数量: 42
  • 博客积分: 10036
  • 博客等级: 上将
  • 技术积分: 2285
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-18 17:08
文章存档

2011年(3)

2010年(3)

2009年(5)

2008年(31)

分类: C/C++

2008-05-12 18:11:27

源程序如下:
#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("%f,\n",putchar(c));
}
编译过执行,比如我输入一数字2,则会打印出66,输入A,打印出C。
解析:
第4行,getchar函数等待输入,遇到换行则为结束;
第5行,c-'2',用输入的字符ASCII减去数字2的ASCII即50,得到结果后,顺序往下;
整段case,c-'2'的余数匹配0,1,2,3后执行,否则执行default的结果。

比如我输入2,那么它的结果为0,执行case 0,case 1 输出c+4的结果,case 2输出c+4的结果,break退出循环。
那么输入A,A-'2'的结果是15,和0,1,2,3都不匹配,则执行default,输出c+2的结果。
如果我们输入2、3、4、5的话,分别有如下输出:6677887,其他的都是顺序加2即可。

理解此程序的几点就是:getchar();putchar();函数的理解,
                   switch语句的理解;
                   C中的字符串和数字可以直接进行算术运算;
                   break这个key的理解。
阅读(1717) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~