/* 求出整数123的各位数字相应的字符ASCII码编号并输出。 */ #include <stdio.h> #include <stdlib.h> #define ZHENGSHU_3 123 //问题中的常数一般应该用符号常量表示 #define GE 1 #define SHI 10 #define BAI 100 #define QIAN 1000 int main( void ) { printf("%c的ASCII码值为%d\n", ZHENGSHU_3 %QIAN / BAI + '0' , ZHENGSHU_3 % QIAN / BAI + '0'); printf("%c的ASCII码值为%d\n", ZHENGSHU_3 % BAI / SHI + '0' , ZHENGSHU_3 % BAI / SHI + '0'); printf("%c的ASCII码值为%d\n", ZHENGSHU_3 % SHI / GE + '0' , ZHENGSHU_3 % SHI / GE + '0'); system("PAUSE"); return 0; }
首先,问题中的常数一般都应该写成符号常量。这是编写C程序的一个常识。
理由:
为常数取一个有意义的名字,代码可读性更好。代码的可读性是代码质量的一项重要指标。
减少了出错的可能性。把常数嵌入到代码中写错的可能性很大,甚至很难发觉。譬如把某个123误写成了12,由于123和12都是合法的int类型常量,所以编译时不会报错。但是如果把符号常量的标识符写错的几率相对来说要小得多,尤其是标识符有“字面意义”的情况下,而且即使写错了也更容易被发觉,编译器会发现代码中有没有定义或说明的标识符。
程序便于修改和扩充。这种便利来自于“数据与代码的分离”, 数据与代码分离是现代程序设计的一条重要原则。桥归桥,路归路,上帝的还给上帝,魔鬼的还给魔鬼。数据与代码之间的耦合越弱越好,这样的代码质量更高。在工业设计中,人们早就懂得这个道理,但在软件业,人们付出了很多代价之后才懂得这个道理。
#include <stdio.h> #include <stdlib.h> #define ZHENGSHU_3 123 #define SHI 10 int main( void ) { int temp = ZHENGSHU_3 ; printf("%c的ASCII码值为%d\n", temp % SHI + '0' , temp % SHI + '0'); temp /= SHI ; printf("%c的ASCII码值为%d\n", temp % SHI + '0' , temp % SHI + '0'); temp /= SHI ; printf("%c的ASCII码值为%d\n", temp % SHI + '0' , temp % SHI + '0'); system("PAUSE"); return 0; }