C语言学习教案Review.ppt

上传人:tia****nde 文档编号:12805511 上传时间:2020-05-25 格式:PPT 页数:49 大小:396.50KB
返回 下载 相关 举报
C语言学习教案Review.ppt_第1页
第1页 / 共49页
C语言学习教案Review.ppt_第2页
第2页 / 共49页
C语言学习教案Review.ppt_第3页
第3页 / 共49页
点击查看更多>>
资源描述
嵌套,if-else的结合:else总是与前面最近的elseif或if相结合,用表示,则更加明确,嵌套,as:if(a=b)if(b=c)printf(“a=b=c”);elseprintf(“a!=b”);,嵌套,#includemain()intx=100,a=10,b=20;intv1=5,v2=0;if(ab)if(b!=15)if(!v1)x=1;elseif(v2)x=10;x=-1;printf(x=%d,x);,x=-1,嵌套,(1)while()while().,(2)dodowhile();.while();,(3)for(;)for(;).,(4)while()dowhile();.,(5)for(;)while().,(6)dofor(;).while();,嵌套,for(i=1;i10;i+)for(j=1;j10;j+)printf(j=9)?%4dn:%4d,i*j);,嵌套,sum=0sum=0+1=1sum=1+2=3sum=3+3=6sum=6+4=10sum=4950+100=5050,累加和累乘,n=1n=1*1=1n=1*2=2n=2*3=6n=6*4=24n=362880*10=3628800,累加和累乘,n!,累加和累乘,/*求n的阶乘n!(n!=1*2*n)*/*文件名:factorial.C*/*程序功能:求n!*/#includemain()inti,n;/*定义累乘器fact,并初始化为1*/longfact=1;printf(Inputn:);scanf(%d,1、穷举法(枚举法)“笨人之法”:把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出。【例一】百元买百鸡:用一百元钱买一百只鸡。已知公鸡5元/只,母鸡3元/只,小鸡1元/3只。分析:这是个不定方程三元一次方程组问题(三个变量,两个方程)xyz=1005x3yz/3=100设公鸡为x只,母鸡为y只,小鸡为z只。,常用算法,cocks=0,hens=25,chickens=75cocks=4,hens=18,chickens=78cocks=8,hens=11,chickens=81cocks=12,hens=4,chickens=84,常用算法,1、穷举法(枚举法),#includemain()intx,y,z;for(x=0;x=100;x+)for(y=0;y=100;y+)for(z=0;z=100;z+)if(x+y+z=100,讨论:此为“最笨”之法要进行101101101=1030301次(100多百次)运算。,#includemain()intx,y,z;for(x=0;x=100;x+)for(y=0;y=100;y+)z=100-x-y;if(5*x+3*y+z/3.0=100)printf(“cocks=%d,hens=%d,chickens=%dn,x,y,z);,常用算法,1、穷举法(枚举法),【讨论】令z=100-x-y只进行101101=10201次运算(前者的1%),取x=19,y=33只进行2034=680次运算(6.7%),常用算法,1、穷举法(枚举法),求100200之间不能被3整除也不能被7整除的数。,分析:求某区间内符合某一要求的数,可用一个变量“穷举”。所以可用一个独立变量x,取值范围100200。,常用算法,1、穷举法(枚举法),for(x=100;x=200;x+)if(x%3!=0,如果是求指定条件的奇数呢?,如果是求指定条件的偶数呢?,x=101;x=200;x=x+2,x=100;x=200;x=x+2,常用算法,1、穷举法(枚举法),常用算法,1、穷举法(枚举法),判断一个数是否素数?,#include#includemain()intm,k,i;clrscr();printf(x=);scanf(%d,把im-1改为isqrt(m-1),“智人之法”:通过分析归纳,找出从变量旧值出发求新值的规律。,编程求i=1+2+3+4+99+100(i=0100),常用算法,2、递推法(归纳法),常用算法,2、递推法(归纳法),【累加型】类型诸如+求其前n项之和的编程题。,常用算法,2、递推法(归纳法),累加型算法若设i为循环变量,s为前n项累加之和,则程序的基本结构为:s=0;for(i=1;i=n;i+)s=s+;,常用算法,2、递推法(归纳法),编程求11/2+1/31/4+1/5+1/991/100,分母为奇数时,相加分母为偶数时,相减,方法1:从变化规律分析,常用算法,2、递推法(归纳法),#includemain()inti;floats=0;for(i=1;i=100;i+)if(i%2)s=s+1/i;elses=s-1/i;printf(Sum=%fn,s);,运行结果:Sum=1.000000,错在哪里?,常用算法,2、递推法(归纳法),方法2:这是个累加型算法的编程题,#include#includemain()inti;floats=0;for(i=1;i=100;i+)s=s+pow(-1,i+1)/i;printf(Sum=%fn,s);,累加型算法程序基本结构为:s=0;for(i=1;i=n;i+)s=s+;,运行结果:Sum=0.688172,常用算法,2、递推法(归纳法),#includemain()inti,k=1;floats=0;for(i=1;i=100;i+)s=s+k/i;k=-k;printf(Sum=%fn,s);,错在哪里?(如何检查程序错误?),运行结果:Sum=1.000000,常用算法,2、递推法(归纳法),编程求n!,分析i=1S0=1=S0(初值)i=1S1=01=S01i=2S2=12=S12i=3S3=123=S23i=4S4=1234=S34i=nSn=1234n=Sn-1n,常用算法,2、递推法(归纳法),常用算法,2、递推法(归纳法),【阶乘型】类型诸如求其前n项之积的编程题。,阶乘型算法若设i为循环变量,s为前n项相乘之积,则程序的基本结构为:s=1;for(i=1;i=n;i+)s=s*;,常用算法,2、递推法(归纳法),编程求n!=1!+2!+3!+n!(n由键盘输入),外循环为累加型内循环为阶乘型,方法1:从变化规律分析,常用算法,2、递推法(归纳法),在同一个循环中先阶乘,后累加,方法2:通过单循环实现,#includemain()inti,n;floats,s1;printf(Inputn=);scanf(%d,常用算法,2、递推法(归纳法),兔子繁殖问题(斐波那契数列问题)著名意大利数学家斐波那契(Fibonacci)1202年提出一个有趣的问题。某人想知道一年内一对兔子可以生几对兔子。他筑了一道围墙,把一对大兔关在其中。已知每对大兔每个月可以生一对小兔,而每对小兔出生后第三个月即可成为“大兔”再生小兔。问一对小兔一年能繁殖几对小兔?,常用算法,2、递推法(归纳法),分析:表示大兔,表示小兔,常用算法,2、递推法(归纳法),常用算法,2、递推法(归纳法),由分析可以推出,每月新增兔子数Fn=1,1,2,3,5,8,13,21,34,(斐波那契数列),常用算法,2、递推法(归纳法),#includemain()longf,f1,f2;inti;f1=f2=1;printf(%10ld%10ld,f1,f2);,/*产生第3到12项*/for(i=3;i0)x1=x;f1=f;elsex2=x;f2=f;while(fabs(x1-x2)=1e-6);printf(x=%fn,x);,常用算法,3、迭代法,二分法,算法1,算法2,用从1到n的每一个数去除m和n,最后能同时整除m和n的数即是最大公约数。,用从n到1的每一个数去除m和n,第一个能同时整除m和n的数即是最大公约数。,求任意两个数m、n(mn)的最大公约数。,常用算法,4、求最大公约数,算法3:辗转相除法,常用算法,4、求最大公约数,求28和16的最大公约数。,28%16余12,16%12余4,12%4余0,4为最大公约数。,算法3:辗转相除法,常用算法,4、求最大公约数,辗转相除法,常用算法,4、求最大公约数,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!