“C语言”目录存档

经典C程序100例(6)

2009年10月19日,星期一

题目:用*号输出字母C的图案。
分析:挺无语,不知道怎么分析,就用printf输出吧。是不是可以理解这个程序是字符版的“Hello World!”代码如下: (全文…)

经典C程序100例(5)

2009年10月14日,星期三

题目:输入三个整数x,y,z,请把这三个数由小到大输出。
分析:和“两个杯子中的水交换一下必须要有另外一个临时的杯子当中介”的情况很接近。除去X、Y、Z以外,还必须有另外一个变量当作临时的容器。在交换X、Y、Z的时候起到“另外一个临时杯子”的作用。代码如下: (全文…)

经典C程序100例(4)

2009年07月27日,星期一

题目:输入某年某月某日,判断这一天是这一年的第几天?
分析:首先想到闰年是比平年多一天,还有一点是尽管是闰年,如果月份输入的是1或者2月,则多出的这一天是不用考虑的。代码如下: (全文…)

经典C程序100例(3)

2009年07月1日,星期三

题目:一个整数,若加上100后是一个完全平方数,若加上168还是一个完全平方数,请问该数是多少?
分析:不知道这数字大小是多少,不知道这样的数字有几个,程序写起来效率不会高。开始写成while(x(全文…)

经典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。 (全文…)