C语言学习教案Review.ppt
《C语言学习教案Review.ppt》由会员分享,可在线阅读,更多相关《C语言学习教案Review.ppt(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第5章 循环结构ifif(expr1)(expr1)if if(expr2)(expr2)statement1statement1elseelsestatement2statement2elseelseifif(expr3)(expr3)statement3statement3elseelsestatement4statement4nestedifnestedifnestedifnestedififif(expr1)(expr1)if if(expr2)(expr2)statement1statement1elseelse statement2statement2nestedifnestedi
2、fif if(expr1)(expr1)if if(expr2)(expr2)statement1statement1 elseelsestatement2statement2nestedifnestedifif if(expr1)(expr1)statement1statement1elseelseif if(expr2)(expr2)statement2statement2elseelse statement3statement3nestedifnestedif嵌套嵌套第5章 循环结构qq if-elseif-else的结合:的结合:的结合:的结合:elseelse总是与前面最近的总是与前
3、面最近的总是与前面最近的总是与前面最近的 else if else if 或或或或 if if 相结合相结合相结合相结合 用用用用 表示,则更加明确表示,则更加明确表示,则更加明确表示,则更加明确 嵌套嵌套if()if()if()if()if()if()else.else.else.else.else.else.第5章 循环结构asas:if(a=b)if(a=b)if(b=c)if(b=c)printf(“a=b=c”);printf(“a=b=c”);elseelseprintf(“a!=b”);printf(“a!=b”);嵌套嵌套第5章 循环结构#include#includemain
4、()main()intx=100,a=10,b=20;intx=100,a=10,b=20;intv1=5,v2=0;intv1=5,v2=0;if(ab)if(ab)if(b!=15)if(b!=15)if(!v1)x=1;if(!v1)x=1;elseelseif(v2)x=10;if(v2)x=10;x=-1;x=-1;printf(x=%d,x);printf(x=%d,x);x=-1嵌套嵌套第5章 循环结构(1)while()(1)while()while()while().(2)do(2)dododowhile();while();.while();while();(3)for(;
5、)(3)for(;)for(;)for(;).(4)while()(4)while()dodowhile();while();.(5)for(;)(5)for(;)while()while().(6)do(6)dofor(;)for(;).while();while();嵌套嵌套第5章 循环结构i10i10printfprintfF(0)F(0)T(!0)T(!0)i=1i=1j+j+j=1j=1j10j10T(!0)T(!0)F(0)F(0)i+i+for(i=1;i10;i+)for(i=1;i10;i+)for(j=1;j10;j+)for(j=1;j10;j+)printf(j=9)?
6、%4dn:%4d,i*j);printf(j=9)?%4dn:%4d,i*j);outerloopouterloopinnerloopinnerloop嵌套嵌套第5章 循环结构sum=0sum=0+1=1sum=1+2=3sum=3+3=6sum=6+4=10sum=4950+100=5050累加和累乘累加和累乘第5章 循环结构n=1n=1*1=1n=1*2=2n=2*3=6n=6*4=24n=362880362880*10=36288003628800累加和累乘累加和累乘n!第5章 循环结构累加和累乘累加和累乘/*/*求求求求n n的阶乘的阶乘的阶乘的阶乘n!n!(n!=1*2*nn!=1*
7、2*n)*/*/*/*文件名:文件名:文件名:文件名:factorial.C*/factorial.C*/*/*程序功能:求程序功能:求程序功能:求程序功能:求n!*/n!*/#include#includemain()main()inti,n;inti,n;/*/*定义累乘器定义累乘器定义累乘器定义累乘器factfact,并初始化为,并初始化为,并初始化为,并初始化为1*/1*/longfact=1;longfact=1;printf(Inputn:);printf(Inputn:);scanf(%d,&n);scanf(%d,&n);for(i=1;i=n;i+)for(i=1;i=n;i
8、+)/*/*实现累乘实现累乘实现累乘实现累乘*/*/fact*=i;fact*=i;printf(%d!=%ldn,n,fact);printf(%d!=%ldn,n,fact);第5章 循环结构1 1 1 1、穷举法(枚举法)、穷举法(枚举法)、穷举法(枚举法)、穷举法(枚举法)“笨人之法笨人之法笨人之法笨人之法”:把所有可能的情况一一测试,筛选出符把所有可能的情况一一测试,筛选出符把所有可能的情况一一测试,筛选出符把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出。合条件的各种结果进行输出。合条件的各种结果进行输出。合条件的各种结果进行输出。【例一】【例一】【例一】【例一】百元买百
9、鸡百元买百鸡百元买百鸡百元买百鸡:用一百元钱买一百只鸡。已知公用一百元钱买一百只鸡。已知公用一百元钱买一百只鸡。已知公用一百元钱买一百只鸡。已知公鸡鸡鸡鸡5 5 5 5元元元元/只只只只,母鸡母鸡母鸡母鸡3 3 3 3元元元元/只只只只,小鸡小鸡小鸡小鸡1 1 1 1元元元元/3/3/3/3只。只。只。只。分析:分析:分析:分析:这是个不定方程这是个不定方程这是个不定方程这是个不定方程三元一次方程组问题(三三元一次方程组问题(三三元一次方程组问题(三三元一次方程组问题(三个变量,两个方程)个变量,两个方程)个变量,两个方程)个变量,两个方程)x x x xy y y yz=100z=100z=
10、100z=100 5x5x5x5x3y3y3y3yz/3=100z/3=100z/3=100z/3=100 设公鸡为设公鸡为设公鸡为设公鸡为x x x x只,母鸡为只,母鸡为只,母鸡为只,母鸡为y y y y只,小鸡为只,小鸡为只,小鸡为只,小鸡为z z z z只。只。只。只。常用算法常用算法第5章 循环结构cocks=0,hens=25,chickens=75cocks=0,hens=25,chickens=75cocks=4,hens=18,chickens=78cocks=4,hens=18,chickens=78cocks=8,hens=11,chickens=81cocks=8,he
11、ns=11,chickens=81cocks=12,hens=4,chickens=84cocks=12,hens=4,chickens=84常用算法常用算法1 1、穷举法(枚举法)、穷举法(枚举法)、穷举法(枚举法)、穷举法(枚举法)#include#includemain()main()intx,y,z;intx,y,z;for(x=0;x=100;x+)for(x=0;x=100;x+)for(y=0;y=100;y+)for(y=0;y=100;y+)for(z=0;z=100;z+)for(z=0;z=100;z+)if(x+y+z=100&5*x+3*y+z/3.0=100)if(
12、x+y+z=100&5*x+3*y+z/3.0=100)printf(cocks=%d,hens=%d,chickens=%dn,x,y,z);printf(cocks=%d,hens=%d,chickens=%dn,x,y,z);讨论:讨论:讨论:讨论:此为此为此为此为“最笨最笨最笨最笨”之法之法之法之法要进行要进行要进行要进行101101101=1030301101101101=1030301次次次次(100100多百次)运算。多百次)运算。多百次)运算。多百次)运算。第5章 循环结构#include#includemain()main()intx,y,z;intx,y,z;for(x=0
13、;x=100;x+)for(x=0;x=100;x+)for(y=0;y=100;y+)for(y=0;y=100;y+)z=100-x-y;z=100-x-y;if(5*x+3*y+z/3.0=100)if(5*x+3*y+z/3.0=100)printf(“cocks=%d,hens=%d,chickens=%dn,x,y,z);printf(“cocks=%d,hens=%d,chickens=%dn,x,y,z);常用算法常用算法1 1、穷举法(枚举法)、穷举法(枚举法)、穷举法(枚举法)、穷举法(枚举法)第5章 循环结构【讨论】【讨论】【讨论】【讨论】令令令令z=100-x-y z=
14、100-x-y 只进行只进行只进行只进行101101=10201 101101=10201 次运算次运算次运算次运算(前者的(前者的(前者的(前者的1%1%)取取取取x=19,y=33 x=19,y=33 只进行只进行只进行只进行2034=680 2034=680 次运算(次运算(次运算(次运算(6.7%6.7%)常用算法常用算法1 1、穷举法(枚举法)、穷举法(枚举法)、穷举法(枚举法)、穷举法(枚举法)第5章 循环结构 求求求求100100100100200200200200之间不能被之间不能被之间不能被之间不能被3 3 3 3整除也不能被整除也不能被整除也不能被整除也不能被7 7 7 7
15、整除的数。整除的数。整除的数。整除的数。分析:分析:求某区间内符合某一要求的数,可用求某区间内符合某一要求的数,可用一个变量一个变量“穷举穷举”。所以可用一个独立变量。所以可用一个独立变量x,取值范围,取值范围100200。常用算法常用算法1 1、穷举法(枚举法)、穷举法(枚举法)、穷举法(枚举法)、穷举法(枚举法)第5章 循环结构for(x=100;x=200;x+)for(x=100;x=200;x+)if(x%3!=0&x%7!=0)if(x%3!=0&x%7!=0)printf(“x=%dn”,x);printf(“x=%dn”,x);如果是求指定条件的奇数呢?如果是求指定条件的奇数呢
16、?如果是求指定条件的奇数呢?如果是求指定条件的奇数呢?如果是求指定条件的偶数呢?如果是求指定条件的偶数呢?如果是求指定条件的偶数呢?如果是求指定条件的偶数呢?x=101;x=200;x=x+2x=101;x=200;x=x+2 x=100;x=200;x=x+2x=100;x=200;x=x+2 常用算法常用算法1 1、穷举法(枚举法)、穷举法(枚举法)、穷举法(枚举法)、穷举法(枚举法)第5章 循环结构常用算法常用算法1 1、穷举法(枚举法)、穷举法(枚举法)、穷举法(枚举法)、穷举法(枚举法)判断一个数是否素数判断一个数是否素数判断一个数是否素数判断一个数是否素数?#include#inc
17、lude#include#includemain()main()intm,k,i;intm,k,i;clrscr();clrscr();printf(x=);printf(x=);scanf(%d,&m);scanf(%d,&m);for(i=2;im-1;i+)for(i=2;im-1;i+)if(if(m%i=0m%i=0)printf(%disnotaprimenumbern,m);printf(%disnotaprimenumbern,m);exit(0);exit(0);printf(i=%d,%disaprimenumbern,i,m);printf(i=%d,%disaprime
18、numbern,i,m);把把把把im-1im-1改为改为改为改为isqrt(m-1)isqrt(m-1)第5章 循环结构 “智人之法智人之法智人之法智人之法”:通过分析归纳,找出从变量通过分析归纳,找出从变量通过分析归纳,找出从变量通过分析归纳,找出从变量旧值出发求新值的规律。旧值出发求新值的规律。旧值出发求新值的规律。旧值出发求新值的规律。编程求编程求编程求编程求i=1+2+3+4+99+100 (i=0i=1+2+3+4+99+100 (i=0100)100)常用算法常用算法2 2、递推法(归纳法)、递推法(归纳法)、递推法(归纳法)、递推法(归纳法)第5章 循环结构常用算法常用算法2
19、2、递推法(归纳法)、递推法(归纳法)、递推法(归纳法)、递推法(归纳法)第5章 循环结构【累加型】类型诸如 +求其前n项之和的编程题。常用算法常用算法2 2、递推法(归纳法)、递推法(归纳法)、递推法(归纳法)、递推法(归纳法)第5章 循环结构累加型算法累加型算法累加型算法累加型算法若设若设若设若设i i为循环变量,为循环变量,为循环变量,为循环变量,s s为前为前为前为前n n项累加之和,则程序的项累加之和,则程序的项累加之和,则程序的项累加之和,则程序的基本结构为:基本结构为:基本结构为:基本结构为:s=0;s=0;for(i=1;i=n;i+)for(i=1;i=n;i+)s=s+s=
20、s+;常用算法常用算法2 2、递推法(归纳法)、递推法(归纳法)、递推法(归纳法)、递推法(归纳法)第5章 循环结构 编程求编程求编程求编程求1 11/2+1/31/2+1/31/4+1/51/4+1/5 +1/99+1/991/1001/100n n分母为奇数时,相加分母为奇数时,相加分母为奇数时,相加分母为奇数时,相加n n分母为偶数时,相减分母为偶数时,相减分母为偶数时,相减分母为偶数时,相减方法方法方法方法1 1:从变化规律分析从变化规律分析从变化规律分析从变化规律分析常用算法常用算法2 2、递推法(归纳法)、递推法(归纳法)、递推法(归纳法)、递推法(归纳法)第5章 循环结构#inc
21、lude#includemain()main()inti;inti;floats=0;floats=0;for(i=1;i=100;i+)for(i=1;i=100;i+)if(i%2)if(i%2)s=s+1/i;s=s+1/i;elseelses=s-1/i;s=s-1/i;printf(Sum=%fn,s);printf(Sum=%fn,s);运行结果:运行结果:运行结果:运行结果:Sum=1.000000Sum=1.000000错在哪里?错在哪里?错在哪里?错在哪里?常用算法常用算法2 2、递推法(归纳法)、递推法(归纳法)、递推法(归纳法)、递推法(归纳法)第5章 循环结构方法方法方
22、法方法2 2:这是个累加型算法的编程题这是个累加型算法的编程题这是个累加型算法的编程题这是个累加型算法的编程题#include#include#include#includemain()main()inti;inti;floats=0;floats=0;for(i=1;i=100;i+)for(i=1;i=100;i+)s=s+s=s+pow(-1,i+1)pow(-1,i+1)/i;/i;printf(Sum=%fn,s);printf(Sum=%fn,s);累加型算法累加型算法累加型算法累加型算法程序基本结构为:程序基本结构为:程序基本结构为:程序基本结构为:s=0;s=0;for(i=1
23、;i=n;i+)for(i=1;i=n;i+)s=s+;s=s+;运行结果:运行结果:运行结果:运行结果:Sum=0.688172 Sum=0.688172 常用算法常用算法2 2、递推法(归纳法)、递推法(归纳法)、递推法(归纳法)、递推法(归纳法)第5章 循环结构#include#includemain()main()inti,k=1;inti,k=1;floats=0;floats=0;for(i=1;i=100;i+)for(i=1;i=100;i+)s=s+k/i;s=s+k/i;k=-k;k=-k;printf(Sum=%fn,s);printf(Sum=%fn,s);错在哪里?错
24、在哪里?错在哪里?错在哪里?(如何检查程序错误?如何检查程序错误?如何检查程序错误?如何检查程序错误?)运行结果:运行结果:运行结果:运行结果:Sum=1.000000 Sum=1.000000 常用算法常用算法2 2、递推法(归纳法)、递推法(归纳法)、递推法(归纳法)、递推法(归纳法)第5章 循环结构编程求编程求编程求编程求n!n!分析分析分析分析 i=1 i=1 S0S0=1=1=S0S0 (初值初值初值初值)i=1 i=1 S1S1=01=01=S0S011 i=2 i=2 S2S2=12=12=S1S122 i=3 i=3 S3S3=123=123=S2S233 i=4 i=4 S4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学习 教案 Review
限制150内