资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共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是否为素数。在此基础上求100200间的全部素数程序设计的三种方法:1、枚举法:就是逐一列举出可能解的各个元素,并加以判断,直到求得所需要的解。常用在排列、组合、数据分类、信息检索、多解方程的求解上;2、归纳法:是从大量的特殊性中总结出规律性或一般性的结论。在程序设计上主要表现为递归和迭代、数列和级数求和。3、抽象法:自顶向下,逐步求精。例1:对于-5x11;-10y9;-6z18,求方程:x3+y3+z3=3的全部解。#includemain()int x,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%5dn”,x,y,z);例2:打印出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如,153是一个“水仙花数”,因为153=13+53+33main()int i,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()char i,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!=k&j!=k) if(i!=X&k!=X&k!=Z) printf(“A-%ctB-%ctC-%cn”,i,j,k);例4:百钱百鸡问题。用100元钱买100只鸡,每只公鸡5元,每只母鸡3元,每3只小鸡1元,要求每种鸡至少买一只,且必须是整只的,问各种鸡各买多少只?分析:(1)这是一个组合问题,归根到底是求三元一次方程的一组解;(2)设i,j,k分别表示公鸡、母鸡和小鸡的只数。为了确定i,j,k的取值范围,可以有不同方法。不同的方法,程序的计算量相差甚远;(3)方法一:i:120;j:133;k:1100;(4)方法二:i:118;j:131;k:100ij;(5)方法三:由i+j+k=100及5i+3j+k/3=100得14i+8j=200,由此可得:i:113;j:123;k=100ij;(6)方法四:由方法三中的14i+8j=200得7i+4j=100可得:i:113;j=(1007i)/4;k=100ij;mian()int i,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=%dtj=%dtk=%dn”,i,j,k);例5:用牛顿迭代法求a的平方根。#includemain()float a,x0;x1;scanf(“%f”,&a);if(a=1.0e-5)x0=x1;x1=0.5*(x0+a/x0);printf(“nsqrt(%f)=%fn”,a,x1);例6:猴子第一天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉了一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个。到第10天早上再想吃时,发现只剩下一个桃子了。求第一天共摘多少个桃子。(分析:假设s为剩下的,则s+1为前一天的一半,而2(s+1)为前一天的总个数。依次类推,10天前的桃子数即可算出)main()int s=1,i;for(i=9;i=1;i-)s=(s+1)*2;printf(“s=%dn”,s);例7:用循环语句打印下列图案: *分析:(1)这是一个典型的循环嵌套问题;(2)该图案中一共有6行,打印时需一行一行进行,设正在处理的行为第i行,则i从16;(3)每行的字符个数与所在行有关,设j表示第i行第j个字符,则j从12*i-1;(4)每行的起始位置。设第一行为第20列的话,则第一行*之前有19个空格,第i行*之前有20-i个空格。main()int i,j;for(i=1;i=6;i+)for(j=1;j=20-i;j+)printf(“”);for(j=1;j=2*i-1;j+)printf(“*”);printf(“n”);五) 课程小结(10分钟)1. C程序设计的三种控制结构2. 编程常用的三种方法,分别适用于不同情况七、 作业安排:1 复习本节的内容2 预习第四章综合实训的内容3 第四章习题 4
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号