c语言课程设计简介,c语言课程设计报告简介.doc

本文探讨了C程序设计中的递推算法和测试法,通过实例解析了如何利用递推公式求解1!+2!+…+20!的和,以及解决百钱买百鸡问题。设计任务涉及切饼问题和不同颜色球的组合,展示了递归和多重循环在实际问题中的解决方案。
摘要由CSDN通过智能技术生成

《C程序设计》课程设计

学 部: 土木

专 业: 岩土

班 级: 1班

学 号: 1140100114

姓 名:

指导教师: 杜丽芳

2011年 1 月1

文档资料的统一要求:

1、文档中的正文字体用五号宋体。

2、第1章,第2章,第3章设计任务要做2个,第4章要做1个,红色字体的必做。

3、每个问题均要有算法分析,源程序代码,编译示图,运行结果示图。

4、文件名命名中要有学生姓名。

5、没有按要求做的同学则视为本课程设计不合格。

6、每次上机所做的内容用移动磁盘带走。

第1章 分支与循环

1.1 算法与范例

1.递推算法

递推算法是循环程序设计的精华之一,在很多情况下使用递推算法能使程序简练,同时还能节省计算时间。

递推算法的基本思想:利用前一项的值来推算出当前项的值,即利用前一项的值乘以(或加上)某一系数得到当前项的值。使用递推算法的前提是必须有一项的值(一般是最前项)是已知的。使用递推算法的关键是如何根据多项式推出递推公式。

【示范】求(即1!+2!+3!+…+20!)的程序

【编程提示】若多项式第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

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 main()

{ int a,b,c;

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(" %d %d %d\n",a,b,c);

return 0;

}

1.2 设计任务

1. 王小二自夸刀工不错,有人放一张大地煎饼在砧板上,问他:“煎饼不许离开砧板,切100刀最多能分成多少块?”

2. 若一个口袋中放有12个球,其中有3个红色球,3个白色球和6个黑色球,从中任取8个球,问共有多少不同的颜色搭配,把每种搭配显示出来。

3.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值