当前位置:首页 > c语言课程设计报告
《C程序设计》课程设计
学 部: 专 业:班 级:学 号: 姓 名: 指导教师:2011年 1
土木 岩土
1班 1140100114 杜丽芳 月1
文档资料的统一要求:
1、文档中的正文字体用五号宋体。
2、第1章,第2章,第3章设计任务要做2个,第4章要做1个,红色字体的必做。 3、每个问题均要有算法分析,源程序代码,编译示图,运行结果示图。 4、文件名命名中要有学生姓名。
5、没有按要求做的同学则视为本课程设计不合格。 6、每次上机所做的内容用移动磁盘带走。
第1章 分支与循环
1.1 算法与范例
1.递推算法
递推算法是循环程序设计的精华之一,在很多情况下使用递推算法能使程序简练,同时还能节省计算时间。
递推算法的基本思想:利用前一项的值来推算出当前项的值,即利用前一项的值乘以(或加上)某一系数得到当前项的值。使用递推算法的前提是必须有一项的值(一般是最前项)是已知的。使用递推算法的关键是如何根据多项式推出递推公式。 【示范】求
)的程序 ?n!(即1!+2!+3!+?+20!
n?120【编程提示】若多项式第1项为t1,第2项为t2,??, 第20项为t20, 则
第1项t1=1!
第2项t2=2!=1!*2= t1*2 第3项t3=3!=2!*3=t2*3, ??
第20项t20=20!=19!*20=t19*20
可以推出多项式后一项等于前一项乘以某一系数这一规律,故求某一项的递推公式为:ti=ti-1*n (n=1 to 20)。因此知道了多项式第1项1!,就可以利用递推公式求出后面的每一项,每求一项累加求和。 【参考程序】
#include
{double sum=0,t=1; int n;
for (n=1;n<=20;n++) {
t=t*n; //递推公式 sum=sum+t; }
printf(\ 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
printf(\公鸡 母鸡 小鸡\\n\ for(a=0;a<=20;a++) for(b=0;b<=33;b++) for(c=0;c<=100;c++) if((a+b+c==100&&5*a+3*b+c/3.0==100) printf(\ return 0; }
1.2 设计任务
1. 王小二自夸刀工不错,有人放一张大地煎饼在砧板上,问他:“煎饼不许离开砧板,切100刀最多能分成多少块?”
2. 若一个口袋中放有12个球,其中有3个红色球,3个白色球和6个黑色球,从中任取8个球,问共有多少不同的颜色搭配,把每种搭配显示出来。
3. 输入年月日,求它是该年的第几天。注:闰年的2月有29天,平年的2月有28天。 4. 简单计算器。请编写一个程序计算表达式:data1 op data2的值。其中op为运算符+、-、*、/,data1和data2是数据。
5. 猜数游戏。由计算机“想”一个数请人猜,如果猜对了,则游戏结束,否则计算机给出提示,告诉人所猜的数是太大还是太小,直到猜对为止。计算机记录人猜的次数,以此可以反映出猜数者“猜”的水平。
6. 一辆肇事汽车的号码是4位十进制数。目击者向交警描述这个车号:这是一个完全平方
共分享92篇相关文档