- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE
PAGE 4
PAGE 4
周次:第 周 课次:第四次 授课时间:年 月 日
章节内容:
第4章 结构化程序设计(4)
教学目标:
复习三种控制结构、灵活运用相关语句实现实际问题
教学重点:
循环结构的灵活应用
教学难点:
掌握一定的编程方法解决实际问题
教学方法和授课手段
多媒体教室,电子课件。讲授与演示法相结合。
教学过程:
预备(复习):三种控制结构及相应语句。(5分钟)
课前提问(5 分钟)
课程引入:介绍本课程的学习目的、主要学习内容和学习方法。(10分钟)
课程新授:(60分钟)
程序举例
例1:求Fibonacci数列:1,1,2,3,5,8……的前40个数,即F1=1(n=1),F2=1(n=2),Fn=Fn-1+Fn-2(n大于2)——(P116)
例2:判别m是否为素数。在此基础上求100~200间的全部素数
程序设计的三种方法:
1、枚举法:就是逐一列举出可能解的各个元素,并加以判断,直到求得所需要的解。常用在排列、组合、数据分类、信息检索、多解方程的求解上;
2、归纳法:是从大量的特殊性中总结出规律性或一般性的结论。在程序设计上主要表现为递归和迭代、数列和级数求和。
3、抽象法:自顶向下,逐步求精。
例1:对于-5≤x≤11;-10≤y≤9;-6≤z≤18,求方程:x3+y3+z3=3的全部解。
#includestdio.h
main()
{intx,y,z;
for(x=-5;x12;x++)
for(y=-10;y10;y++)
for(z=-6;z19;z++)
if(x*x*x+y*y*y+z*z*z==3)
printf(“%5d%5d%5d\n”,x,y,z);
}
例2:打印出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如,153是一个“水仙花数”,因为153=13+53+33
main()
{inti,j,k,n;
for(n=100;n1000;n++)
{i=n/100;
j=n/10-i*10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
printf(“%4d”,n);
}
printf(“\n”);}
例3:两个乒乓球队进行比赛,各出三人。甲队为A、B、C,乙队为X、Y、Z三人,已经抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比。请编程序找出三对赛手的名单。
main()
{chari,j,k;
for(i=‘X’;i=‘Z’;i++)
for(j=‘X’;j=‘Z’;j++)
if(i!=j)for(k=‘X’;k=‘Z’;k++)if(i!=kj!=k)if(i!=‘X’k!=‘X’k!=‘Z’)printf(“A--%c\tB--%c\tC--%c\n”,i,j,k);}
例4:百钱百鸡问题。用100元钱买100只鸡,每只公鸡5元,每只母鸡3元,每3只小鸡1元,要求每种鸡至少买一只,且必须是整只的,问各种鸡各买多少只?
分析:
(1)这是一个组合问题,归根到底是求三元一次方程的一组解;
(2)设i,j,k分别表示公鸡、母鸡和小鸡的只数。为了确定i,j,k的取值范围,可以有不同方法。不同的方法,程序的计算量相差甚远;
(3)方法一:i:1~20;j:1~33;k:1~100;
(4)方法二:i:1~18;j:1~31;k:100-i-j;
(5)方法三:由i+j+k=100及5i+3j+k/3=100得14i+8j=200,由此可得:
i:1~13;j:1~23;k=100-i-j;
(6)方法四:由方法三中的14i+8j=200得7i+4j=100可得:
i:1~13;j=(100-7i)/4;k=100-i-j;
mian(){inti,j,k;for(i=1;i=13;i++){j=(100-7*i)/4;k=10-i-j;if(5*i+3*j+k/3==100)printf(“i=%d\tj=%d\tk=%d\n”,i,j,k);}
例5:用牛顿迭代法求a的平方根。
#includemath.h
main(){floata,x0;x1;scanf(“%f”,a);if(a0)printf(“\naisanegative\n”);else{x0=a/2;x1=0.5*(x0+a/x0); while(fabs(x0-x1)=1.0e-5) {x0=x1;x1=0.5*(x0+a/x0);} printf(“\nsqrt(%f)=%f\n”,a,x1); }
}
例6:猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉了一半,又多吃了一
您可能关注的文档
- 《C语言程序设计》课程.doc
- 《C语言程序设计案例教程(第四版)》全套章节习题答案.docx
- 《C语言程序设计案例教程(第四版)》章节习题答案第1章基本知识.doc
- 《C语言程序设计案例教程(第四版)》章节习题答案第2章算法.doc
- 《C语言程序设计案例教程(第四版)》章节习题答案第4章.doc
- 《C语言程序设计案例教程(第四版)》章节习题答案第5章.doc
- 《C语言程序设计案例教程(第四版)》章节习题答案第6章.doc
- 《C语言程序设计案例教程(第四版)》章节习题答案第7章.doc
- 《C语言程序设计案例教程(第四版)》章节习题答案第8章结构体、共用体和枚举类型.doc
- 《C语言程序设计案例教程(第四版)》章节习题答案第9章位运算.doc
文档评论(0)