c语言课程设计报告15
《C程序设计》课程设计
学 部: 土木
专 业: 岩土
班 级: 1班
学 号: 1140100114
姓 名:
指导教师: 杜丽芳
2011年 1 月1
文档资料的统一要求:
1、文档中的正文字体用五号宋体。
2、第 1章,第2章,第3章设计任务要做2个,第4章要做1个,红色字体的必做。
3、每个问题均要有算法分析,源程序代码,编译示图,运行结果示图。
4、文件名命名中要有学生姓名。
5、没有按要求做的同学则视为本课程设计不合格。
6、每次上机所做的内容用移动磁盘带走。
第1章 分支与循环
1.1 算法与范例
1.递推算法
递推算法是循环程序设计的精华之一,在很多情况下使用递推算法能使程序简练,同时
还能节省计算时间。
递推算法的基本思想:利用前一项的值来推算出当前项的值,即利用前一项的值乘以(或
加上)某一系数得到当前项的值。使用递推算法的前提是必须有一项的值 (一般是最前项)
是已知的。使用递推算法的关键是如何根据多项式推出递推公式。
20
【示范】求n! (即1!+2!+3!+…+20!)的程序
n 1
【编程提示】若多项式第 1项为t,第2项为t,……, 第20项为t , 则
1 2 20
第1项t 1!1
第2项t 2! 1!*2 t*22 1
第3项t 3!2!*3 t*3,3 2
……
第20项t 20! 19!*20 t *20
20 19
可以推出多项式后一项等于前一项乘以某一系数这一规律,故求某一项的递推公式为:
t t *n (n 1 to20)。因此知道了多项式第1项1!,就可以利用递推公式求出后面的
i i-1
每一项,每求一项累加求和。
【参考程序】
#include
int main()
{double sum 0,t 1;
int n;
for (n 1;n< 20;n++)
{
t t*n; //递推公式
sum sum+t;
}
printf("1!+2!+...+20!%22.15e\n",sum);
return 0;
}
2.测试法
在实际应用中,有许多问题是无法用解释方法实现的,这时采用测试法来求解是一种很
有效的方法。
测试法的基本思想是假设各种可能的解,让计算机进行测试,如果测试结果满足条件,
则假设的解就是所要求的解。如果所要求的解是多值的,则假设的解也应是多值的,在程序
设计中,实现多值解的假设往往使用多重循环进行组合。
测试法求解的程序设计有两个要点:
⑴通过循环列出所有可能的解。
⑵对所有列出的可能的解进行条件测试。
【示范】百钱买百鸡问题
已知公鸡每只5元,母鸡每只3元,小鸡1元买3只。要求用100元钱正好买100只鸡,
问公鸡、母鸡、小鸡各多少只?
【编程提示】设公鸡、母鸡、小鸡分别为a、b、c只,依据题目能列出下列两个方程:
a+b+c 100
5a+3b+c/3 100
三个未知数,只有两个方程,故是个多解问题。可采用多重循环组合出各种可能的a、b、
c的值。通过循环列出公鸡、母鸡和小鸡可能的只数,再对可能的只数进行条件测试。
100元钱,全部买公鸡最多只能买20只,即公鸡的只数a 的范围是:a 0 to 20
100元钱,全部买母鸡最多只能买33只,即母鸡的只数b 的范围是:b 0 to 33
100元钱,全部买小鸡最多只能买100只,即小鸡的只数c的范围是:c 0 to 100
【参考程序】:
#include
int m