学会优化你的程序

声明:这些内容主要是面向C语言的初学者,尤其是正在学习C语言的学生。

    程序优化是个很大的话题,一些经典编程书籍上对此已做过探讨。在这里,我主要是针对学生作业中的一些问题进行讨论,尽量想办法减少程序中的冗余、使程序变得更简练,可以说是比较初级的程序优化。更高级的优化主要是针对编译器进行的,如何写代码使编译出来的程序执行效率更高,以后抽空再讨论。


例.第五章课后第10题:编程从键盘输入某年某月,输出该年的该月拥有的天数(要求用switch语句实现)。


分析:

    每年的1,3,5,7,8,10,12月都是31天,4,6,9,11月都是30天,只有2月是个特例,闰年的2月是29天,平年的2月是28天。所以程序中需要判断输入的年份是否闰年,对2月要特殊处理。


某位学生的程序:


    在上面的程序中,用了两个非常相似的switch语句,除了2月,其他部分都是完全一样的。在一个程序中,如果同样的代码片段重复出现,我们就需要考虑对其进行优化,减少冗余的部分。对闰年的判断实际上只是对2月有用,所以没有必要把其他月份的输出也放在if else语句中去,因此可以把if else语句放到case 2的后面,这样就可以去掉一个switch语句。另外,在switch语句中,case语句的顺序可以是任意的,不一定要按顺序从1到12排列,因此我们可以把31天和30天的月份分别放到一起,共享输出语句。改进后的代码如下:


    改进后的程序比原来的程序简练了许多。当然,还有很多别的写法,大家可以自己去尝试。


你可能感兴趣的:(switch,C语言,程序优化)