2009年06月22日 存档

经典C程序100例(2)

2009年06月22日,星期一

题目2:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

分析:题目出的有歧义,比如“20万到40万之间时,高于20万元的部分,可提成5%”,可是并没有提到这种情况下低于20万的部分如何处理,暂时理解成低于20万的部分,是按照“利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%”来处理的。同样,利润每升一个台阶,都存在同样的问题。如果直接写if…else if的判断,那么20万之内的利润,还好判断,如果利润在20万到40万之间的话,20万以上的利润可以直接乘以5%,20万以下的利润,还要再判断一次是低于10万还是在10万到20万之间,利润每上一个台阶,就得多一个判断,这个思路写出来的程序可读性和可维护性都不高。所以要还另外一种思路。另外,因为要乘以小数,所以数据类型不要使用int,应使用double。 (更多…)

经典C程序100例(1)

2009年06月22日,星期一

网上找到了一本CHM格式的电子书,叫做《经典C程序100例》,这100个例程,是不是经典不必讨论,如果都过一遍的话,对学习C语言会有不小的帮助,就从第一个来吧。

题目1:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? (更多…)