版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 第三章第三章 C C语言的基本控制结构语言的基本控制结构Chapter 3 Control Flow第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 问题问题#include #include void main(void) float a,b,c,x1,x2; scanf(“%f,%f,%f”,&a,&b,&c); x1=(-b+sqrt(b*b-4.*
2、a*c)/(2.0*a); x2=(-b-sqrt(b*b-4.*a*c)/(2.0*a); printf(“x1=%7.2fnx2=%7.2f”,x1,x2);b*b-4ac0?yes求实根求实根no求复根求复根问题:如何构造条件?问题:如何构造条件? 如何根据条件实现不同算法?如何根据条件实现不同算法?第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 3.1 程序的三种控制结构程序的三种控制结构 结构化程序设计结构化程序设计是软件设计的第三次革命。结构化程序设计的是软件设计的第三次革命。结构化程序设计的基础
3、是采用三种程序的控制结构。基础是采用三种程序的控制结构。 1966年年BHM &Jacopini 证明:证明:只要三种控制结构就能表达用只要三种控制结构就能表达用一个入口和一个出口框图所能表达的任何程序逻辑。一个入口和一个出口框图所能表达的任何程序逻辑。三种控制结构如下:三种控制结构如下:顺序结构顺序结构Sequence算法描述:算法描述: f; g; 框图:框图:f;g;选择结构选择结构Selection(分支结构)(分支结构)算法描述:算法描述: if(e) f; else g;框图:框图:e?yesf;nog;第三章 C语言的基本控制结构Chapter 3 Control Flo
4、wHefei University of Technology 循环结构循环结构Repetition当型循环当型循环while c is true do fc?fYESNO直到循环直到循环do f until c is false fc?YESNO三种控制结构有如下共同的特点:三种控制结构有如下共同的特点:一个入口和一个出口;一个入口和一个出口;无死语句;无死语句;无死循环。无死循环。如何构如何构造条件造条件 ?第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 复合语句复合语句 CompoundStatemen
5、t 概念:概念:C语言可以用语言可以用 包括一系列的语句。一对包括一系列的语句。一对 所包含的所包含的内容称为一个复合语句。其中可以含有内容称为一个复合语句。其中可以含有0到多条到多条C语言语句。语言语句。#include void main (void) int a,b; scanf(“%d,%d”,&a,&b); int temp; temp=a; a=b; b=temp; printf(“%d,%d”,a,b);复合语句复合语句复合语句复合语句复合语句可以嵌套复合语句可以嵌套 凡是可以出现单一语句的地方都可以使用复合语句。凡是可以出现单一语句的地方都可以使用复合语句。 复
6、合语句的作用:复合语句的作用:作为分支和循环的块。作为分支和循环的块。 作为标识符的作用域。作为标识符的作用域。 交换算法演示交换算法演示第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 3.2 关系运算和逻辑运算关系运算和逻辑运算关系运算关系运算(Relational Operator) 关系运算是比较两个表达式的数值相互关系的运算。关系运算是比较两个表达式的数值相互关系的运算。 运算符运算符比较的关系比较的关系实例实例大于大于ab=大于等于大于等于a=b小于小于21=小于等于小于等于cb ; d=a+22&
7、amp;a3| |逻辑或逻辑或s6!逻辑非逻辑非!a其中,!运算是单目运算。其中,!运算是单目运算。逻辑运算演示逻辑运算演示第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 复杂逻辑关系的表示复杂逻辑关系的表示 在实际应用中,经常会遇到描述复杂的关系。如:判断在实际应用中,经常会遇到描述复杂的关系。如:判断 x是否是否大于等于大于等于5或小于或小于3。此类关系的描述在程序设计中会大量使用。此类关系的描述在程序设计中会大量使用。035x=50-23-2x3 ? x=4-2x&x=a&ch=A&am
8、p;chc+d&a=b*34注意:在无法确定优先级注意:在无法确定优先级时,加()区分。简化表时,加()区分。简化表达式。达式。c=b*=a+2c=(b*=(a+2)第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 级别级别运算符运算符结合顺序结合顺序1()() - - .从左向右从左向右2!- - + - - (type) sizeof* * & 从右向左从右向左3* * / %从左向右从左向右4+ - -从左向右从左向右5(移位运算移位运算)从左向右从左向右6 = 从左向右从左向右7= !=
9、 从左向右从左向右8&(位与运算位与运算)从左向右从左向右9(位异或运算位异或运算)从左向右从左向右10|(位或运算位或运算)从左向右从左向右11&从左向右从左向右12| |从左向右从左向右13? :从右向左从右向左14= op =从右向左从右向左15,从左向右从左向右优优先先级级总总表表第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 优先级特例优先级特例 自加、自减运算优先级遵循原则:自加、自减运算优先级遵循原则: 前置:先运算后引用;前置:先运算后引用; 后置:先引用后运算。后置:先引用后
10、运算。#include void main(void) int a=3,b; b=a+a+; printf(“b=%d”,b); b=+a+(+a); printf(“b=%d”,b);CHAP3EX0在逻辑运算中,如果逻辑值能够确定,则不再进行运算。在逻辑运算中,如果逻辑值能够确定,则不再进行运算。int a=0,b=0+a | +b; printf(“a=%dnb=%d”,a,b);a=0;a&+b;/*b的值?的值?*/+CHAP3EX1第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 3.3 分
11、支结构(选择结构分支结构(选择结构Selection) if 及及 if-else 的三种结构。的三种结构。 由标准的分支结构可以演化成单分支、多分支结构。由标准的分支结构可以演化成单分支、多分支结构。C语言的分语言的分支语句有支语句有if 、if else、switch三种。三种。 if语句语句格式:格式:if(expression)statement;语句语句表达式,非表达式,非0为为yes,0为为no。语句,可以是复合语句。语句,可以是复合语句。流程图:流程图:e?statement;yesno举例:举例:#include void main(void) char ch; ch=getc
12、har( ); if(ch=a&ch=z) ch - - =32; putchar(ch);CHAP3EX2第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology if else 结构结构格式:格式:if(expression) stat1;else stat2;语句或复合语句。语句或复合语句。流程图:流程图:e?falsestat2;stat1;true入口入口出口出口举例:输出举例:输出| x |。#include void main (void) int x ; scanf ( “%d” , &
13、x); if (x=0) printf (“%d” , x); else printf( “%d” , -x);第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology if else if结构结构(Muliline )格式:格式: if(e1) stat1; else if(e2) stat2; else if(e3) stat3; else if(en-1) statn-1; else statn; 框图:框图:e1?tstat1;fe2?tstat2;出口出口fen-1?tstatn-1;fstatn;n-1个条
14、件,满足某个条件,执行对应的语句,然后到出口。个条件,满足某个条件,执行对应的语句,然后到出口。第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology if else if结构举例结构举例: 征税问题:征税问题: 1000以下税率为以下税率为3% 10002000税率为税率为4% 20003000税率为税率为5% 3000以上税率以上税率6%输入收入,求应缴税款。输入收入,求应缴税款。#include void main(void) float x ,rate; scanf(“%f ”,&x); if(x10
15、00) rate=.03; else if(x2000) rate=.04; else if(x3000) rate=.05; else rate=.06; printf(“%f ”,x*rate);3/100?第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology if语句的嵌套语句的嵌套对于如下的结构:对于如下的结构: if(e1) stat1; else stat2;在在stat1或或stat2中又含有中又含有if结构:结构:if(e2) stat3;else stat4;称为称为if结构的嵌套。各种结构的嵌套
16、。各种if结构都结构都可以嵌套。可以嵌套。 如求符号函数:如求符号函数: -1 (x0)#include void main ( void) int x,y ; scanf (“%d” , &x); if (x0) y=1;else y=0;x=0结结果?果?第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 举例:求一元二次方程举例:求一元二次方程ax2+bx+c=0的根。的根。#include #include void main(void) float a,b,c,d,x1,x2; scanf(“%
17、f,%f,%f”,&a,&b,&c); d=b*b-4.0*a*c; if(fabs(d)0) printf(“nx1=%f”,(-b+(float)sqrt(d)/(2.0*a); printf(“nx2=%f”,(-b-(float)sqrt(d)/(2.0*a); else printf(“nx1=%f+ i %f”,-b/(2.0*a),(float)sqrt(-d)/(2.0*a); printf(“nx2=%f - i %f”,-b/(2.0*a),(float)sqrt(-d)/(2.0*a); 外层内 层求相等实根。求相等实根。求不等实根。求不等实根。求
18、共扼复根。求共扼复根。CHAP3EX4 判断实型量相判断实型量相等或不等用误差的等或不等用误差的方法。方法。flaot a=1.0/*a=1.000001或或0.999999*/a=1.0?第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology switch语句(多分支结构)语句(多分支结构)格式:格式:switch (expression) case 常量表达式常量表达式1: statement 1; case 常量表达式常量表达式2: statement 2; case 常量表达式常量表达式n-1: statem
19、ent n-1; default : statement n; 只能是整型或字符型表达式。只能是整型或字符型表达式。 整型字符型整型字符型常量常量表达式。表达式。表达式的值要互不能相等!表达式的值要互不能相等! 流程:流程:先求先求expression的值。的值。依次比较依次比较expression和各常量表达式的值。和各常量表达式的值。 如果与第如果与第i个常量表达式相等,则执行个常量表达式相等,则执行第第i条以后条以后的语句。的语句。 如果都不相等,则执行如果都不相等,则执行default以后的语句。以后的语句。 第三章 C语言的基本控制结构Chapter 3 Control FlowHe
20、fei University of Technology 语句标号的概念语句标号的概念:#include void main(void) char grade; grade=getchar( ); switch(grade) case A: printf (“90100n”); case B: printf (“8089n); case C: printf (“7079n”); case D: printf (“60 69n”); case E: printf (“60n”); default : printf (“errorn”); CHAP3EX5语句标号。语句标号。break语句:语句:
21、格式:格式: break; 作用:中断作用:中断switch流程。流程。 break; break; break; break;break;CHAP3EX6第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 例:输出五分制对应的百分制范围。例:输出五分制对应的百分制范围。#include void main(void) char chGrad; chGrad=getchar( ); switch(chGrad) case a: case A: printf(“90100n”); break; case b: ca
22、se B: printf(“8089n”); break; case c: case C: printf(“7079n”); break; case d: case D: printf(“6069n”); break; case e: case E: printf(“60n”);break; default : printf(“Data Error!n”); 多个标号可以共用相同的语句。多个标号可以共用相同的语句。default语句可以省略。语句可以省略。第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 3.4
23、 循环结构循环结构(Repetition)程序经常会重复执行某些相同的操作,如:程序经常会重复执行某些相同的操作,如:求:求:s=1+2+3+4+100算法描述:算法描述:s=0;i=1;s+=i; i+;判断判断i是否小于等于是否小于等于100 如果如果i小于等于小于等于100,重复,重复; 否则,结束。否则,结束。 此类根据此类根据“条件条件”重复执行相同算法的结构,称为循环。重复执行相同算法的结构,称为循环。初始化部分。初始化部分。循环体。含有使条件趋假的语句。循环体。含有使条件趋假的语句。 循环的条件。循环的条件。注意:循环应在有注意:循环应在有限次完成。限次完成。 C 语言提供了三类
24、实现循环的语句语言提供了三类实现循环的语句: while, do while,for 第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology while 循环(当型循环)循环(当型循环)格式:格式: while(expression) statement;表达式:值非表达式:值非0,表,表示满足条件;值为示满足条件;值为0代表不满足条件。代表不满足条件。语句(复合语句),重复语句(复合语句),重复执行部分(循环体)。执行部分(循环体)。流程:流程:e?truestatement;false含有使条件趋含有使条件趋假的
25、语句。假的语句。举例:举例:求求 s= 1+2+3+4+100#include void main(void ) int s=0, i=1; while (i=100) s=s+i; /* s+=i; */ i+; printf (“s = %d n”, s) ;初始化部分初始化部分循环体循环体条件测试条件测试使条件趋假语句使条件趋假语句CHAP3EX7第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology do while循环(直到型循环)循环(直到型循环)格式:格式: do statement; while (e
26、xpression ); 流程:流程:statement;e?truefalse含有使条件趋假的语句。含有使条件趋假的语句。while循环与循环与do-while循环的区别:循环的区别:vwhile循环先判条件,后执行循环体;循环先判条件,后执行循环体;vdo while循环先执行循环体,后判条件。循环先执行循环体,后判条件。举例:举例: 求:求:30!#include void main(void) float s=1.0; int i=1; do s*=i; i+; while(i=30); printf(“30!=%f”,s);初始化。初始化。循环体。循环体。测试条件。测试条件。使条件趋
27、假。使条件趋假。CHAP3EX8思考题:思考题:用用do-while实现实现s=1+2+100。用。用while实现实现30!。!。第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology for循环循环格式:格式: for (e1; e2; e3 ) statement;流程:流程:e1e2?truestatement;e3false举例:举例:求:求:s=1+2+3+100#include void main (void ) int s=0,i ; for (i=1; i=100; i+ ) s =s + i; p
28、rintf (“s= %d” , s) ;使使e2趋假。趋假。在在for循环中,循环中,e1、e2、e3都可以省略!都可以省略!e1省略省略 i=1;e3省略省略 i+;初值表达式。初值表达式。测试表达式。测试表达式。增值表达式。增值表达式。第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology forfor循环实例循环实例 求求100以内的偶数和。以内的偶数和。int s=0,i;for(i=2;i100;i+=2) s+=i;求求500以内最大的以内最大的5个能被个能被50整除数的和。整除数的和。int i ,j
29、,s=0;for(j=500,i=0;i=0;i- -=5) printf(“%dn”,i);int i,j,s=0;for(i=0,j=0;i+j100;i+,+j) s+=i+j;第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 循环应用的几个问题循环应用的几个问题循环的嵌套循环的嵌套 概念:在一个循环的循环体内又包含一个完整的循环称为循环概念:在一个循环的循环体内又包含一个完整的循环称为循环的嵌套。的嵌套。 i 1 2 3 4 5 6 7 8 9 1 11 12 19 j 2 21 22 29 9 91
30、92 99 如打印一如打印一9 9的乘法表:的乘法表:i=1时,时,j从从1变化到变化到9,完,完i*j 。第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 多重循环多重循环打印打印9 9乘法表。乘法表。#include void main (void ) int i,j ; for (i=1 ; i=9 ; i+) printf (“ n “); 外层循环外层循环内层循环内层循环说明:说明: 内外层循环采用缩进形式。内外层循环采用缩进形式。 while和和do- while和和for可以可以 相互嵌套。相互嵌
31、套。 执行次数为内层循环次数和执行次数为内层循环次数和 外层循环次数的乘积。外层循环次数的乘积。 CHAP3EX9如何打印如何打印乘法表的乘法表的一半?一半?for(j=1; j=9 ; j+) printf ( “ %4d “ , i * j ) ; 第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 循环的中断循环的中断(break)和继续和继续(continue)循环的中断:循环的中断:break语句语句 概念:循环体中可以加分支,判断是否继续执行循环,概念:循环体中可以加分支,判断是否继续执行循环,bre
32、ak语句可以提前结束循环。语句可以提前结束循环。举例:求:举例:求:r=110的圆的面积,如圆面积大于的圆的面积,如圆面积大于100则中断。则中断。 for (r=1; r100 ) break; printf ( “ n% f “ , area); 满足条件,则退出循环。满足条件,则退出循环。继续循环:继续循环:continue语句语句 continue语句的作用是跳过本次循环剩余的循环体内容,执行语句的作用是跳过本次循环剩余的循环体内容,执行下次循环。下次循环。 举例:求举例:求1100内的偶数和。内的偶数和。 s=0; for ( n=1; n=100; n+) if (n%2!=0)
33、continue; s+=n; 满足条件,跳过本满足条件,跳过本次循环体剩余内容,继次循环体剩余内容,继续下次循环。续下次循环。int s=0,i;for(i=2;i100;i=i+2)s+=i;第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 无限循环和空循环无限循环和空循环条件为恒真的循环条件为恒真的循环无限循环无限循环while(1)do while(1);for( ; ;)通过条件控制的通过条件控制的break语句退出循环。语句退出循环。例:程序等待直到输入字母例:程序等待直到输入字母A。for ( ;
34、 ;) ch= getchar ( ); if ( ch=A) break;循环体为空语句的循环循环体为空语句的循环空循环空循环for (i=1 ;i=MAX ; i+) ;作用:程序延时。作用:程序延时。空语句空语句 ;第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology goto语句语句格式:格式: goto Label /* Label: 同一函数内语句前的标号。同一函数内语句前的标号。*/作用:转移到标号对应的语句上继续执行。作用:转移到标号对应的语句上继续执行。loop: if (i=100 ) sum=
35、sum+i; i+; goto loop; 第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 循环和分支相互嵌套循环和分支相互嵌套输入输入10个自然数统计其中偶数的个数及偶数值和。个自然数统计其中偶数的个数及偶数值和。算法框图:算法框图:start定义变量定义变量初始化初始化循环?循环?true输入输入偶数?偶数?true统计累加统计累加falsefalse输出结果输出结果end#include void main(void) int i, ix,iCount=0,iSum=0; for(i=1;i=10;i+
36、) scanf(“%dn”, &ix); if( ix%2=0 ) iSum+=ix; iCount+; printf(“Num=%dnSum=%d”,iCount,iSum); 循环结构循环结构分支结构分支结构输入负数?输入负数?do if(ix=0)printf(“date error”); while(ix=0); 算法的健壮性算法的健壮性注意:结构应完整的包含和被包含。注意:结构应完整的包含和被包含。第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 程序设计的基本方法程序设计的基本方法 根据计算
37、机的特点,结合循环与分支结构在程序设计时常使两根据计算机的特点,结合循环与分支结构在程序设计时常使两种常用的基本方法。种常用的基本方法。枚举法(穷举法)枚举法(穷举法)迭代法迭代法 本专题将结合分支和循环介绍两种方法的基本思想和本专题将结合分支和循环介绍两种方法的基本思想和具体实现!具体实现!第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 枚举法枚举法 Enumerationv 存在有限状态;其中某存在有限状态;其中某些状态满足特定条件。些状态满足特定条件。v 通过循环产生所有状态通过循环产生所有状态(枚举)
38、。(枚举)。v 对每一状态,按条件进对每一状态,按条件进行状态测试,满足条件行状态测试,满足条件的状态,为所求的解。的状态,为所求的解。v 求求100到到200内的所有素内的所有素数。数。v 通过循环使通过循环使i从从101变化变化到到199(枚举所有状态)(枚举所有状态)v 对每次循环的对每次循环的i进行是否进行是否是素数的测试,如果是是素数的测试,如果是素数,输出素数,输出i。第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 枚举法举例:枚举法举例:求求100到到200之间的所有素数(只能被之间的所有素数(
39、只能被1和自身整除的数)。和自身整除的数)。对于自然数对于自然数n,判断其是否为素数有以下三种方法:,判断其是否为素数有以下三种方法:判断判断n是否能被从是否能被从2到到n-1范围内的数整除;范围内的数整除;判断判断n是否能被从是否能被从2到到(int)(n/2)范围的数整除;范围的数整除;判断判断n是否能被从是否能被从2到到(int)sqrt(n)范围的数整除;范围的数整除;第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 程序如下:程序如下:#include #include void main(void)
40、 int n, j, s; for(n=101;n200;n+=2) s=(int)sqrt(double)n); for(j=2; js) printf(“n%d”,n); 枚举所有数枚举所有数构造,测试条件构造,测试条件 如果如果n能被能被2到到s的任意数整除,退出的任意数整除,退出循环。循环。如果如果n是素数,输出是素数,输出n。CHAP3EXA第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 求水仙花数(条件:三位数的个、十、百位的方和等于该求水仙花数(条件:三位数的个、十、百位的方和等于该数。数。15
41、3=13 +53 +33 )。)。n为枚举变量,枚举初值为枚举变量,枚举初值 100,枚举终值,枚举终值999。构造条件:取出构造条件:取出n的个、十、百位数。的个、十、百位数。测试是否满足条件,满足条件输出测试是否满足条件,满足条件输出n。#include void main(void) int n, a, b, c; for(n=100 ; n=999 ; n+) a=n/100; b=n%100/10; c=n%10; if(a*a*a+b*b*b+c*c*c=n) printf(“n%d”,n); 枚举所有三位数枚举所有三位数构造条件构造条件测试条件测试条件取取n的百位的百位a、十位、
42、十位b、个位、个位c。CHAP3EXB第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 爱因斯坦阶梯问题(不定范围的枚举)。爱因斯坦阶梯问题(不定范围的枚举)。 设有一阶梯,每步跨设有一阶梯,每步跨2阶,最后剩阶,最后剩1阶;每步跨阶;每步跨3阶,最后剩阶,最后剩2阶;每步跨阶;每步跨5阶,最后剩阶,最后剩4阶;每步跨阶;每步跨 6阶,最后剩阶,最后剩 5阶;每步跨阶;每步跨7阶,正好到阶梯顶。问共有多少阶梯。阶,正好到阶梯顶。问共有多少阶梯。根据条件可以得出:台阶数一定是奇数且为根据条件可以得出:台阶数一定是
43、奇数且为7的倍数。的倍数。枚举初值:枚举初值:k=7; 枚举公式:枚举公式:k=k+14 结束条件:满足结束条件:满足(k%3=2)&(k%5=4)&(k%6=5)结束。结束。#include void main(void) int k=7; while( !(k%3=2)&(k%5=4)&(k%6=5) k+=14; printf(“nl=%d”,k);CHAP3EXC第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 思考题:思考题: 36人一次搬人一次搬36块砖,男搬块砖,男
44、搬4,女搬,女搬2,两个小孩抬一块。要一,两个小孩抬一块。要一次搬完。问:男、女、小孩要多少?次搬完。问:男、女、小孩要多少? 找出找出1000以内的完数,所谓完数是指该数的各因子之和等于以内的完数,所谓完数是指该数的各因子之和等于该数,如该数,如6=1+2+3。 证明证明6到到200以内的数,符合哥德巴赫猜想(一个大于以内的数,符合哥德巴赫猜想(一个大于6的偶的偶数,可以分解成两个质数之和)。数,可以分解成两个质数之和)。 奇妙的算式:用字母代替十进制数字写出如下算式:奇妙的算式:用字母代替十进制数字写出如下算式:E G A L L L G A E 请找出这些字母代表的数字。请找出这些字母代
45、表的数字。第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 迭代法迭代法 Iterationv 迭代是通过循环不断由迭代是通过循环不断由旧值推导新值,并最后旧值推导新值,并最后求解的过程。求解的过程。v 迭代法有三个要点:迭代法有三个要点: v 如人口每年按如人口每年按2%增长,增长,现在人口有现在人口有12亿,亿,10年年后人口有多少?后人口有多少?迭代公式。迭代公式。m=m*(1+2%)迭代初值(边界条件)。迭代初值(边界条件)。m=12迭代次数(或条件)。迭代次数(或条件)。n=10第三章 C语言的基本控
46、制结构Chapter 3 Control FlowHefei University of Technology 迭代法举例迭代法举例求求ex=1+x+x2/2!+xn/n!前前n+1项之和。项之和。迭代次数迭代次数i 0 1 2 n 迭代公式迭代公式 t=t*x/i迭代初值迭代初值 exp=1, t=1,(i=1n)#include void main(void) float exp , x , t; int i, n; scanf(“%f,%d”,&x,&n); t=1.0; exp=1.0; for(i=1 ; i=n ; i+) t*=x/i; exp+=t; print
47、f(“e%d=%15.6f”,(int)x,exp);迭代初值。迭代初值。迭代公式。迭代公式。迭代过程迭代过程附加条件:附加条件:当当| t |10-5,结束运算。结束运算。if(fabs(t)1e-5)break;CHAP3EXD第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 用梯形法求定积分用梯形法求定积分412)412(dxxx( 0,0 )yxf(x)ab面积面积hx将将 a,b分为分为n等份,等份,h=(b-a)/n;求求n个梯形面积之和,第个梯形面积之和,第i小面积小面积x=x+hf1=f(x)
48、下底下底s=s+ (f0+f1)*h/2 f0=f1 迭代迭代x 初值为初值为a s初值为初值为0f0 初值为初值为f(a) 次数为次数为n迭代求积分的方法迭代求积分的方法第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 程序如下:程序如下:#include void main(void) float a,b,f0,f1,h,x,s=0.0; int n,i; scanf(“%f,%f,%d”,&a,&b,&n); h=(b-a)/n; x=a; f0=x*x+12.0*x+4.0; f
49、or(i=0;in;i+) x=x+h; f1=x*x+12.0*x+4.0; s=s+(f0+f1)*h/2.0; f0=f1; printf(“S=%f”,s);CHAP3EXE迭代初值。迭代循环第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 求求s=a+aa+aaa+aaaa。 0a10 共共n项,最后一项有项,最后一项有n个个a。如求。如求s=2+22+222+2222+222222 n、a从键盘输入。从键盘输入。迭代次数:迭代次数:i=1n迭代初值:迭代初值:s=0.0,t=a迭代公式:迭代公式:
50、t=t*10+a第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 程序如下:程序如下:#include void main(void) float s,t; int i,a,n; do scanf(“%d,%d”,&a,&n); if(a9) printf(“nData Input Error!nInput again:”); while(a9); s=0.0; t=a; for(i=1;i=n;i+) s+=t; t=t*10+a; printf(“ns=%f”, s);第三章 C语言的基本控
51、制结构Chapter 3 Control FlowHefei University of Technology xyf(x)x1f1=f(x1)x2f2=f(x2)算法分析:算法分析:输入输入x1、x2,并求出,并求出f1、f2。迭代:将区间二分迭代:将区间二分x =(x1+x2)/2计算出计算出f=f(x)xf 判断判断f与与f1是否同号是否同号如果同号:如果同号:x1=x,f1=f否否 则:则:x2=x,f2=fx1f1f1f2判断判断fabs(x1-x2)是否小于某个规定的精度是否小于某个规定的精度(如如10- 6 ) :如果小于精度:求出根,退出到如果小于精度:求出根,退出到。否否 则
52、:继续则:继续。输出根,根的值是输出根,根的值是(x1+x2)/2。二分法求方程二分法求方程f(x)= x3-6x-1=0,在,在0,5区间的根。区间的根。第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 二分法求方程根程序二分法求方程根程序#include #include void main(void) float x1,x2,x,f1,f2,f; scanf(“%f,%f”,&x1,&x2); f1=x1*x1*x1-6.0*x1-1; f2=x2*x2*x2-6.0*x2-1; do x
53、=(x1+x2)/2; f=x*x*x-6.0*x-1; if(f*f1=0) f1=f;x1=x; else f2=f;x2=x; while(fabs(x1-x2)=1e-6); printf(“Root is :%f”,(x1+x2)/2);CHAP3EXF迭代初值。二分迭代循环迭代条件。第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 通过如下公式求通过如下公式求(精度为精度为10-6).71513114从程序的运行看精度和时间的关系!从程序的运行看精度和时间的关系!迭代初值迭代初值:fPi=0;fIt
54、em=1;iSign=1;迭代公式迭代公式:fPi+=(1./fItem)*iSign;fItem+=2.;iSign*=-1;迭代条件迭代条件: fabs(1./fItem)1e-6程程 序序第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 求自然数求自然数m和和n的最大公约数(用的最大公约数(用while循环实现)。循环实现)。提示:提示:比较比较m和和n的大小,如的大小,如nm,两者交换;,两者交换;求求m被被n除的余数除的余数k;如果如果k为为0,除数,除数n为最大公约数;为最大公约数;如果如果k不为不
55、为0,原除数作为新的被除数,原除数作为新的被除数m,余数作为新除数,余数作为新除数,继续继续。用迭代法求用迭代法求cosX。求求Fibonacci级数级数 1,1,2,3,5,8,13,21,34.迭代法思考题迭代法思考题用牛顿迭代法求方程用牛顿迭代法求方程f(x)=0的根。(必做!)的根。(必做!)第三章 C语言的基本控制结构Chapter 3 Control FlowHefei University of Technology 第三章作业 通过梯形法求通过梯形法求y = 输出结果。输出结果。102) 32(dxxx102) 32(dxxx求求1000以内能被以内能被73或或127整除的自然数平方根之和。整除的自然数平方根之和。 求求100-200之间的所
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中立风险责任制度
- 地铁工地卫生责任制度
- 制氧机房岗位责任制度
- 消防终身责任制度
- 修理厂责任制度
- 防恐岗位责任制度范本
- 落实普法责任制度
- 计算机责任制度
- 枢纽工程岗位责任制度
- 车队责任制度
- 文化旅游嘉年华主题活动方案
- 投资促进局内部控制制度
- 2026年常州机电职业技术学院单招职业倾向性测试题库附答案详解(a卷)
- 青海国家电网2026年高校毕业生招聘第二批笔试参考题库及答案解析
- 2026及未来5年中国铁路信号微机监测系统行业市场运营态势及未来趋势研判报告
- 2025至2030中国服装市场运行分析及发展前景与投资研究报告
- 2026教育培训产业市场供需分析与未来发展预测研究报告
- 2026年新修订《医疗器械经营质量管理规范》培训考核试题及答案
- 2026春统编版六年级道德与法治下册(全册)课时练习及答案(附目录)
- 2025-2030中国DNA测序行业市场发展趋势与前景展望战略研究报告
- 2026年《必背60题》抖音本地生活BD经理高频面试题包含详细解答
评论
0/150
提交评论