|
源程序如下: #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("%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的理解。
|