C语言综合程序设计.ppt

上传人:小飞机 文档编号:6504305 上传时间:2023-11-07 格式:PPT 页数:28 大小:211.50KB
返回 下载 相关 举报
C语言综合程序设计.ppt_第1页
第1页 / 共28页
C语言综合程序设计.ppt_第2页
第2页 / 共28页
C语言综合程序设计.ppt_第3页
第3页 / 共28页
C语言综合程序设计.ppt_第4页
第4页 / 共28页
C语言综合程序设计.ppt_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《C语言综合程序设计.ppt》由会员分享,可在线阅读,更多相关《C语言综合程序设计.ppt(28页珍藏版)》请在三一办公上搜索。

1、1,知识回顾,常见数据类型:int,float,char 等;常见的运算符:赋值、算术、关系、逻辑,逗号等;常见表达式:赋值、算术、关系、逻辑,逗号等;三种基本结构:顺序、选择、循环;三种基本的选择语句;三种基本的循环语句;,2,本讲知识要点,嵌套循环;理解掌握嵌套循环的执行顺序;基本算法策略(穷举、迭代与递推);较复杂、综合的程序设计;,3,一、循环的嵌套,循环的嵌套:一个循环体内又包含另一个完整的循环结构。3种循环(while、dowhile、for循环)可以相互嵌套。可参见课本P121,4,例1:编程输出九九乘法口诀表,输出形式如下:1*1=11*2=2 2*2=41*3=3 2*3=6

2、 3*3=91*9=9 2*9=18 3*9=279*9=81,分析:对于第i行,观察有多少列?,第i行有i列!,共有9行,所以for(i=1;i=9;i+)对于第i行,共有i列,所以for(j=1;j=i;j+),5,#includemain()int i,j;for(i=1;i=9;i+)/共9行 for(j=1;j=i;j+)/第i行共有i列printf(%d*%d=%d,j,i,i*j);printf(“n”);/每一行各列输出完后,要换行,外循环循环体,内循环循环体,/参考源程序,6,例:素数的判断问题。编程输出100200之间所有的素数。,先阅读P126 例6.8分析:素数:除了1

3、以外,不能被其他任何数整除的数。对于100200之间的每一个数都要做判断-是否为素数,即其不能被从2开始到自身的每一个数整除;,7,算法流程图,8,源程序,#includemain()int m,i;for(m=100;m=m)/表示没有一个数能够整除,即此数为素数;printf(%d,m);,9,/*另解*/#include#includemain()int m,i,k;for(m=100;m=k+1)printf(%d,m);,详见课本P127 例6.9,10,/另解,引入continue#include#includemain()int m,i,k;for(m=100;m=k+1)pri

4、ntf(%d,m);,11,二、基本算法,穷举法:待解问题的答案“隐藏”在多个可能之中,对这多种可能的情形一一进行测试,从而找出符合条件的解。,1.穷举法,12,例:百钱百鸡问题。鸡公值五钱,鸡母值三钱,三小鸡值一钱,凡百钱买百鸡,问鸡公、鸡母、小鸡各多少?,分析假设鸡公、鸡母、小鸡的数量分别为cocks,hens,chicks,则可以得出以下模型:5*cocks+3*hens+chicks/3=100;/*100钱*/cocks+hens+chicks=100;/*100只鸡*/其中0=cock=20;0=hens=33;0=chicks=99;,13,穷举过程,依次对cocks,hens,

5、chicks取值范围内的各数一一进行试探,找出满足前面两个方程的组合解。,14,源程序1,#includemain()int cocks,hens,chicks;for(cocks=0;cocks=20;cocks+)/*穷举cock*/for(hens=0;hens=33;hens+)/*穷举hen*/for(chicks=0;chicks=99;chicks+)/*穷举chick*/if(5*cocks+3*hens+chicks/3=100),15,另解,#includemain()int cocks,hens,chicks;for(cocks=0;cocks=20;cocks+)/*穷

6、举cock*/for(hens=0;hens=33;hens+)/*穷举hen*/chicks=100-cocks-hens;/*鸡的数量为100*/if(5*cocks+3*hens+chicks/3.0=100)/*100钱*/printf(cocks=%d,hens=%d,chicks=%dn,cocks,hens,chicks);,16,基本算法,迭代:用不断变化的新值替代旧值;如银行存款利率计算。递推:由一个变量的值推出另外变量的值;如fibonacci数列问题;两者没有严格的区别。使用迭代与递推关键是通过观察、分析,找出前项与后项之间的关系-迭代或递推的关系。,2.迭代与递推,17

7、,例:编程输出Fibonacci数列前10项,Fibonacci数列规律:前两项为1,从第3项开始,每项等于前两项的和;即:F(1)=1,F(2)=1,F(3)=2,F(4)=3F(n)=F(n-1)+F(n-2);从第3项开始规律:F(n)=F(n-1)+F(n-2);,18,源程序,#includemain()int f1=1,f2=1,f;int i;for(i=3;i=10;i+)f=f1+f2;/当前项等于前两项之和 f1=f2;/f1表示当前项的前两项 f2=f;/f2表示当前项的前一项 printf(%d,f);,正推,19,例:猴子吃桃问题。课本P129 6.10,时间 剩余桃

8、子数 吃的桃子数10天 1 9天 t 8天 x x/2+1 3天 2天 1天,假如第n天剩余桃子数为x,第n+1天剩余的桃子是为t,那么:x-(x/2+1)=t 即:x=2*(t+1),此即为相邻两项的关系。,20,源程序,#includemain()int day=9,peach=1;while(day0)peach=(peach+1)*2;/当天的桃子数等于前一天的2倍加1;day-;printf(第一天的桃子数为:%d,peach);,反推,21,用for循环实现,#includemain()int day,peach=1;for(day=9;day0;day-)peach=(peach

9、+1)*2;printf(第一天的桃子数为:%d,peach);,22,作业,P129 6.7 6.8 6.144:将1元钱分别换成1分、2分和5分的硬币,编程求出有多少种不同的分法及每种分法各种硬币的数量。认真复习、总结前面所学的知识(课件+课本);,23,上讲作业讲解,/P129 6.1#includevoid main()int m,n,temp,i,gongyue,gongbei;scanf(%d,%d,24,/P129 6.2#includevoid main()int char_num=0,place_num=0,num_num=0,other_num=0;char ch;whil

10、e(ch=getchar()!=n)if(ch=a,25,/P129 6.6#include#includevoid main()int i;int a,b,c;for(i=100;i1000;i+)a=i/100;b=i/10%10;c=i%10;if(i=pow(a,3)+pow(b,3)+pow(c,3)printf(%d,i);,26,1.编程计算半径为115的圆的面积,仅输出面积超过50的圆的面积;,#include#define PI 3.1415void main()int r;float s;for(r=15;r=1;r-)s=PI*r*r;if(s50)break;else

11、printf(“%f”,s);,27,2.编写程序输出1100之间所有不能被7整除的数;,#includevoid main()int i;for(i=1;i=100;i+)if(i%7=0)continue;else printf(“%d”,i);,#includevoid main()int i;for(i=1;i=100;i+)if(i%7!=0)printf(“%d”,i);,28,3.编写程序输出100以内整数中13倍数的最大值。,#includevoid main()int i,max;for(i=1;i=100;i+)if(i%13=0)max=i;printf(“%d”,max);,#includevoid main()int i,max;for(i=100;i=1;i-)if(i%13=0)printf(“%d”,i);break;,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号