- 数据结构编程实验(第3版)
- 吴永辉 王建德编著
- 1026字
- 2021-08-13 17:23:57
1.1 改进程序书写风格
如果一个程序具有良好的书写风格,不仅能在视觉上给人以美感,也会给程序的调试和检查带来方便。初看程序,往往可以从程序的书写风格判断出编程者的思路是否清晰。但是,怎样的程序书写风格才算“好”呢?对于这个问题,仁者见仁,智者见智,不过这并不意味着程序的书写风格无章可循。我们通过下面的例子来说明这个问题。
【1.1.1 Financial Management】
Larry今年毕业,找到了工作,也赚了很多钱,但Larry总感觉钱不够用。于是,Larry准备用财务报表来解决他的财务问题:他要计算自己能用多少钱。现在可以通过Larry的银行账号看到他的财务状况。请你帮Larry写一个程序,根据他过去12个月每个月的收入计算要达到收支平衡,每个月平均能用多少钱。
输入
输入12行,每一行是一个月的收入,收入的数字是正数,精确到分,没有美元符号。
输出
输出一个数字,该数字是这12个月收入的平均值。精确到分,前面加美元符号,后面加行结束符。在输出中没有空格或其他字符。
试题来源:ACM Mid-Atlantic 2001
在线测试:POJ 1004,ZOJ 1048,UVA 2362
试题解析
本题采用了非常简单的“输入—处理—输出”模式:
1)通过结构为for(i=0;i<12;i++)的循环输入12个月的收入a[0..11];
2)累计总收入;计算月平均收入;
3)输出月平均收入avg。
参考程序
#include<iostream> //预编译命令 using namespace std; //使用 C++标准程序库中的所有标识符 int main( ) //主函数 { //主函数开始 double avg, sum=0.0, a[12]={0}; //定义双精度实数变量avg、sum和实数数组a的初始值 int i; //声明整型循环变量i for(i=0; i<12; i++){ //依次读入每个月的收入,并累计年收入 cin>>a[i]; sum+=a[i]; } avg=sum/12; //计算月平均收入 printf("$%.2f",avg); //输出月平均收入 return 0; }
我们可从上述程序范例中得到4点启示。
1)严格按照题目要求的格式来设计输入和输出。本题要求输入的月收入是精确到分的正数,因此程序中用提取操作符“>>”,将键盘输入的月收入存储到双精度实数类型的数组元素a[i]中。同样,程序中采用printf("$%.2f",avg)语句使得输出的月平均收入精确到分,且前有美元符号,后有行结束符。当程序运行于在线测试系统时,决定成败的首要因素是程序的输入和输出格式是否符合题意。如果没有按照题目要求的格式进行输入和输出,即使算法正确,结果也是“Wrong Answer”。
2)同一结构程序段内的所有语句(包括说明语句)与本结构程序段的首行左对齐。
3)程序行按逻辑深度呈锯齿状排列。例如,循环体缩进几个字符、用缩进表示选择结构等。这种锯齿形的编排格式能够清晰地反映程序结构,改善易读性。
4)在程序段前或开始位置加上描述程序段功能的注释;对于变量及其变化也应该加上注释,因为理解变量是理解程序的关键。这样做,不仅是为了便于调试程序和日后阅读,更重要的是能够培养团队合作的精神。在将来的工作中,一个研发团队内会有多人一起合作编程、互相协助,这就更需要将注释写得清清楚楚,以便让其他人能理解程序。