c语言的三种基本结构.ppt
《c语言的三种基本结构.ppt》由会员分享,可在线阅读,更多相关《c语言的三种基本结构.ppt(73页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章 c c程序的三种基本结构程序的三种基本结构1.1.理解程序控制的方法和作用理解程序控制的方法和作用2.2.学会制定简单程序的算法学会制定简单程序的算法3.3.掌握选择结构的使用方法掌握选择结构的使用方法4.4.掌握实现循环的各种方法掌握实现循环的各种方法5.5.掌握掌握breakbreak,continuecontinue的用法的用法本章目标:本章目标:4.1 C4.1 C程序三种基本结构程序三种基本结构 从结构化程序设计角度出发,程序只有三种结构:顺序结构顺序结构选择结构选择结构循环结构循环结构1.顺序结构顺序结构表示ABAB先执行A,再执行B.2.选择结构选择结构表示为ABP
2、TFB TPFA存在某条件P,若P为真,则执行A,否则执行B。另一种选择结构多分支结构.KK=K1A1A2AiAnK=K2K=Kn3.循环结构循环结构表示为PFTAAP为T(1)当型结构 当P条件成立时(T),反复执行A,直到P为“假”时才停止循环.有两种结构:当型和直到型(2)直到型APTFA直到P为F 先执行A,再判断P,若为F,再执行A,如此反复,直到P为F.已证明:上述三种结构组成的程序可以解决全部的问题,所以任何一种高级语言都具备上述三种结构。函数调用语句函数调用语句:如:printf();1.表达式语句赋值语句赋值语句:如:i=i+1;i+;x+y;空语句空语句:任何事情都不做。C
3、程序语句可分为五大类:如:;4.2 C 4.2 C 4.2 C 4.2 C 语句语句语句语句2.控制语句改变语句的执行顺序 if()else (条件)for()(循环)while()(循环)do while (循环)switch (多分支选择)()表示条件,表示语句 continue (结束本次循环)break (中止整个循环)return (函数返回)3.限定转向(无条件转向)语句5.终止程序运行语句4.无条件转移语句goto exit6.复合语句(语句体)用 括起来的一系列语句。如:z=x+y;t=z/100;printf(%f,t);1.if(表达式表达式)语句语句 一、一、if 语句的
4、三种形式语句的三种形式执行过程:当表达式的值为“真”(非零)时,执行语句,否则,不执行语句。如如:if(x y)z=x;4.3 选择结构程序设计选择结构程序设计2.2.if(if(表达式表达式表达式表达式)语句语句语句语句1 1 else else 语句语句语句语句2 2 执行过程:当表达式的值为“真”(非零)时,执行语句1,否则,执行语句2。如如:if(xy)z=x;else z=y;3.3.if if(表达式表达式表达式表达式1)1)语句语句语句语句1 1 else if(else if(表达式表达式表达式表达式2)2)语句语句语句语句2 2 else if(else if(表达式表达式表
5、达式表达式3)3)语句语句语句语句3 3 :else if(else if(表达式表达式表达式表达式m)m)语句语句语句语句mm else else 语句语句语句语句n n如:if (grade=85)level=A;else if(grade=70)level=B;else if(grade=60)level=C;else level=D;if 语句说明:语句说明:if后面的表达式一般为逻辑表达式或关系表后面的表达式一般为逻辑表达式或关系表 达式,也可以是任意数值类型表达式。达式,也可以是任意数值类型表达式。该语句是合法的:if(3)printf(“ok!”);if 语句中的语句中的“语句语
6、句”为一个简单语句或复合语句。为一个简单语句或复合语句。如:下面程序段是否有错?if (x=0)printf(“X is positive.”);x+;else printf(“X is negative.”);if (x=0)printf(“X is positive.”);x+;else printf(“X is negative.”);二、二、if 语句的嵌套语句的嵌套 在 if 语句中又包含一个或多个if 语句称为 if 语句的嵌套语句的嵌套。一般形式:if(条件1)if(条件2)语句1 else 语句2else if(条件3)语句3 else 语句4内嵌if内嵌if如:if(x0)i
7、f(y0)printf(x0,y0);else printf(“x0,y0)printf(“x0);else printf(“x=0,y6)if(n12)printf(“6n12”);else printf(“n6)if(n12)printf(“6n12”);else printf(“n=6”);三、用三、用if 语句实现选择结构举例语句实现选择结构举例 -1;x0 main()int x,y;scanf(%d,&x);if(xb)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printf(“%5.2f,%5.2f,%5.2f”,a,b,c);
8、程序程序2:将程序1的if语句改为:/*exp52.c*/#include main()int x,y;scanf(“%d,&x);if(x=0)if(x0)y=1;else y=0;else y=-1;printf(x=%d,y=%dn,x,y);程序程序1:/*exp51.c*/#include main()int x,y;scanf(“%d,&x);if(x0)y=-1;else if(x=0)y=0;else y=1;printf(x=%d,y=%dn,x,y);程序程序4:将程序1的if语句改为:/*exp54.c*/#include main()int x,y;scanf(“%d,
9、&x);y=0;if(x=0)if(x0)y=1;else y=-1;printf(x=%d,y=%dn,x,y);程序程序3:将程序1的if语句改为:/*exp53.c*/#include main()int x,y;scanf(“%d,&x);y=-1;if(x!=0)if(x0)y=1;else y=0;printf(x=%d,y=%dn,x,y);1.程序程序1 和程序和程序2 是正确的。是正确的。它们代表的函数为它们代表的函数为:2.程序程序3 和程序和程序4 是错误的。是错误的。它们代表的函数为它们代表的函数为:y=0 (x0)y=1 (x0)结论结论:四四 switch swit
10、ch 多分支选择语句多分支选择语句用if或if/else或它们的嵌套也可使程序实现多路分支,但容易出现下面的问题:可读性差 破坏结构解决问题的方法解决问题的方法:采用switch语句。switch(变量)case 常量表达式1:语句体1 case 常量表达式2:语句体2 case 常量表达式n:语句体n default :语句体(n+1)一般形式一般形式:根据表达式的取值,判断其与哪一个常量表达式相等。如=表达式i,则自语句i开始执行,直到语句n+1止。若与所有常量表达式值不相等,则从default后的语句开始执行。功能功能:注:注:default 可有可无。例例:根据成绩等级打印百分数段.s
11、witch(grade)case A:printf(85100n);case B:printf(7084n);case C:printf(6069n);case D:printf(60n);default:printf(errorn);程序如下:程序如下:/*exp55.c*/#include main()char grade;scanf(%c,&grade);switch(grade)case A:printf(85-100n);case B:printf(70-84n);case C:printf(60-69n);case D:printf(60n);default:printf(Erro
12、rn);运行结果为:运行结果为:A 程序运行结果不在预料之中!程序运行结果不在预料之中!产生错误的原因产生错误的原因:没有完全起到分支作用。85-10070-8460-6960Errorswitch(表达式表达式)case 常表常表1:语句语句1;break;case 常表常表2:语句语句2;break;case 常表常表n:语句语句n;break;default:语句语句n+1;一般形式为一般形式为:解决办法解决办法:增加break语句,使之跳出switch结构。修改程序为修改程序为:/*exp56.c*/#include main()char grade;scanf(%c,&grade);
13、switch(grade)case A:printf(85-100n);break;case B:printf(70-84n);break;case C:printf(60-69n);break;case D:printf(60n);break;case D:printf(60n);break;例如:例如:循循环环结结构构循环结构的特点是:循环结构的特点是:程序的流程是在给定条件时,反复执行,程序的流程是在给定条件时,反复执行,某个程序段。某个程序段。语言中可以用以下语句来实现循环:语言中可以用以下语句来实现循环:用用goto语句和语句和 if 语句构成循环;语句构成循环;用用while语句;
14、语句;用用do_while语句语句;用用for语句。语句。4.4.1 goto语句和goto语句构成的循环一、一、goto 语句语句 goto 语句为无条件转向语句,其作用为:使程序的执行无条件地转移到指定处。一般形式:一般形式:goto 语句标号;如:如:goto label_1;goto 123;执行过程:执行过程:执行语句时,程序转移到以标号 为前缀的语句处继续执行。如:如:p1:x+;p1:x+;.goto p1;说明:C语语言言允允许许在在任任何何语语句句前前加加一一个个语语句句标标号号,作作为为goto语句的目标。给语句加标号的形式:语句的目标。给语句加标号的形式:语句标号:语句语
15、句标号:语句 goto语语句句是是一一种种非非结结构构化化语语句句,结结构构化化程程序序设设计计方方法法不不提提倡倡使使用用goto语语句句,因因为为滥滥用用goto语语句句将将使使程程序序流流程程无无规规律律,可可读读性性差差。但但也也不不是是绝绝对对禁禁止止使使用用,只只有有在在能能够够大大大大提提高高程程序序效效率时才使用。率时才使用。且记且记:不要从循环体外跳到循环体内:不要从循环体外跳到循环体内!二、用二、用goto语句和语句和 if 语句构成循环语句构成循环例:计算例:计算10!并输出结果。!并输出结果。main()int i=1,sum=1;loop:if(i=10)sum=su
16、m*i;i+;goto loop;printf(“10!=%dn”,sum);运行结果:10!=24320本应是:10!=3628800 main()int i=1;long sum=1;loop:if(i=10)sum=sum*i;i+;goto loop;printf(“10!=%ldn”,sum);4.4.2 while 语句 一般形式:一般形式:while(表达式表达式)语句语句 执行过程:执行过程:先计算表达式的值先计算表达式的值;若表达式的值为真若表达式的值为真(非非0)时执行循环体中的语句,时执行循环体中的语句,然后重复上面步骤。若然后重复上面步骤。若 表达式的值为假表达式的值为
17、假(0),则,则 结束循环。结束循环。例:将上面计算例:将上面计算10!并输出结果的程序用!并输出结果的程序用 while语句写出:语句写出:main()int i=1;long int sum=1;while(i=10)sum=sum*i;i+;printf(“10!=%ldn”,sum);main()int i=1;long int sum=1;loop:if(i=10)sum=sum*i;i+;goto loop;printf(“10!=%ldn”,sum);循环结构的术语循环结构的术语 1.循环条件循环条件:是循环结构中的测试表达式。是循环结构中的测试表达式。如:while(i=10)
18、2.循环体循环体:是在每个循环周期均要执行一次的语是在每个循环周期均要执行一次的语 句。语句可以是任何语句,简单语、句。语句可以是任何语句,简单语、复合语句、空语句均可以。复合语句、空语句均可以。如:上例while语句中用花括号括起来的复合语句。3.循环控制变量循环控制变量:是在循环条件中控制条件是真是在循环条件中控制条件是真 是假的变量。是假的变量。如:上例while语句中使用的变量 i。注意注意:循环条件中的表达式一般是循环条件中的表达式一般是逻辑表达式逻辑表达式和和关系表达式关系表达式,也可以是,也可以是算数表达式算数表达式(非(非0为为真,真,0为假)。一般表达式中应含有循环控制为假)
19、。一般表达式中应含有循环控制变量。变量。while(3)和和while(0)虽然从程序设计的虽然从程序设计的角度上说是不合理的,但是合法的。角度上说是不合理的,但是合法的。while(3)语句 表示无限循环while(0)语句 表示不进入循环体 要要写写出出一一个个正正确确的的循循环环结结构构,对对控控制制变变量量要要做做三三方方面面工工作作:控控制制变变量量赋赋初初值值;把把控控制制变变量量写写入入正正确确的的循循环环条条件件;控控制制变变量的更新、调整。量的更新、调整。4.4.3 do-while 语句 一般形式:一般形式:do 语句语句 while(表达式);表达式);分号不能少 执行过
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 基本 结构
限制150内