版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五章第五章语句语句顺序结构顺序结构: :main( ) int a , b; scanf(%d%d,&a,&b); printf(abn); printf(ab) printf(abn); else printf(a=bn);main( ) int a , b ; scanf(%d%d,&a,&b); while(a=b);表达式语句和空语句表达式语句和空语句:表达式语句:表达式表达式语句:表达式+“ ;” eg:a=b+2; ba?a+: b-; !b|a+&b-; 空语句:;空语句:;复合语句和分程序:复合语句和分程序:分程序是指含有说明语句的分程
2、序是指含有说明语句的复合语句复合语句。main( )int a=5,b=3;if(ab) printf(abn);elsea+=1; printf(a y ) z = x; if (表达式表达式) 语句语句main( ) int a,b; scanf(%d%d,&a,&b); if(ab) printf(%d,a);(2)双分支)双分支if 语句语句 if (表达式表达式) 语句语句1 else 语句语句2 语义语义: 当表达式的值为当表达式的值为“真真”(非零)时,执行语句(非零)时,执行语句1, 否则,执行语句否则,执行语句2。 如如: if (xy) z=x ; else
3、 z=y ;main( ) int a,b; scanf(%d%d,&a,&b); if(ab) printf(%d,a); else printf(%d,b); 分析下列程序运行结果分析下列程序运行结果(3)多分支)多分支if 语句语句 if (表达式表达式1) 语句语句1 else if(表达式表达式2) 语句语句2 else if(表达式表达式3) 语句语句3 : else if(表达式表达式m) 语句语句m else 语句语句m+1main( ) int a,b; scanf(%d%d,&a,&b); if(ab) printf(%d,a); else
4、if(a6) if (n12) printf(“6n12”);else printf(“n=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( ) 语句语句 else 语句语句else if( ) 语句语句 else 语句语句内嵌内嵌if 内嵌内嵌if或或 if( ) if( ) 语句语句
5、 else if( ) 语句语句2 else 语句语句3 内嵌内嵌if或或 if( ) if( ) 语句语句 (内嵌内嵌if ) else 语句语句 2此括号可省略吗?此括号可省略吗?每个每个else应与其应与其之前之前距离距离最近最近且且没有与其它没有与其它else配对配对的的if 配对。配对。 if (n6) if (n12) printf(“6n12”);else printf(“n6) if (n12) printf(“6n12”);else printf(“n=6”); 书写程序的优良风格书写程序的优良风格缩排缩排 #include main() int x; scanf(“%d”,
6、&x); if (x0) printf(“X is positive.”); x=x+1; else printf (“X is negative.”); 缩进缩进缩进if语句与条件运算符语句与条件运算符( ? : )语义完全相同,其语义完全相同,其流程图都可用下图描述。其区别在语法。流程图都可用下图描述。其区别在语法。if语句后面带语句,语句后面带语句,自身也是语句;自身也是语句;条件运算符条件运算符( ? : )后面带表达式,自身后面带表达式,自身还是表达式。还是表达式。 开关语句,用于解决多路分支的情况。开关语句,用于解决多路分支的情况。switch(表达式)(表达式) case
7、 常量表达式常量表达式1:语句序列:语句序列1 ;break ; case 常量表达式常量表达式2:语句序列:语句序列2 ;break ; : case 常量表达式常量表达式n:语句序列:语句序列n ;break ; default :语句序列:语句序列n+1 ;执行机制:执行机制:通常是整型、字符型通常是整型、字符型首先计算首先计算“表达式表达式”的值;找到与的值;找到与“表达式表达式”的值相同的的值相同的“常常量表达式量表达式”,执行其,执行其casecase后边的语句块;之后以次往下执行语后边的语句块;之后以次往下执行语句块。句块。 必须是常量必须是常量可以省略,如果需可以省略,如果需要
8、最多只能有一个要最多只能有一个例:例:char grade; scanf(%c,&grade); switch(grade) case A : printf(85100n); case B : printf(7084n); case C: printf(6069n); case D :printf(60n); default : printf(error n); 思考:若思考:若gread= B时,结果为时,结果为?显然该结果是荒谬的。显然该结果是荒谬的。如果不想这样,可用如果不想这样,可用break语句处理。语句处理。程序程序a5.cbreak语句:语句:格式:格式:break ;功
9、能:终止其所在语句序列的执行。功能:终止其所在语句序列的执行。switch(grade) case A : printf(85100n);break; case B : printf(7084n);break;case C: printf(6069n);break; case D :printf(60n);break;default : printf(error n); 当当 grade= B时,输出结果为:时,输出结果为: 70 84无无break语句的语句的switch语句语义结构图示语句语义结构图示:表达式表达式语句5语句4语句3语句2语句1出口表达式表达式语句5语句4语句3语句2语句1
10、出口有有break语句的语句的switch语句语义结构图示语句语义结构图示:流程图为:流程图为: grade输出 “85100”输出 “60”输出 “60-69”输出 “error”输出 “70-84”switch的特点的特点 switch 语句中的表达式最好是整型表达式;语句中的表达式最好是整型表达式; 每一个每一个case表达式的值必须不同;表达式的值必须不同; 每一个每一个case后面若有多条语句,可不必使用括号;后面若有多条语句,可不必使用括号; 多个多个case可共用一组执行语句;可共用一组执行语句; 各各case以及以及default出现的次序无限制;出现的次序无限制; switc
11、h和多重和多重 if 的区别的区别 : switch 语句用于语句用于“一次计算,多种结果一次计算,多种结果”;计算结果;计算结果必须为整数。必须为整数。 多重多重 if 用于用于“多次计算,多个结果多次计算,多个结果”;计算结果可以;计算结果可以是任何类型数是任何类型数,而且各表达式类型各不相同。而且各表达式类型各不相同。 思考思考 (上机题目上机题目) 将输入的成绩由百分制转换将输入的成绩由百分制转换为五级分制。为五级分制。 通过嵌套通过嵌套if-else或或switch实现实现5.3 C5.3 C语言的三结构之三语言的三结构之三循环结构循环结构“循环循环”的的语义语义是:在给定条件满足时
12、,是:在给定条件满足时,反复执行某个程序段。反复执行某个程序段。因此,在因此,在有需要重复执行的动作、且重复次数有需要重复执行的动作、且重复次数可控的情况下可以使用可控的情况下可以使用循环。循环。语言可以用以下控制语句来实现循环:语言可以用以下控制语句来实现循环: while语句;语句; do_while语句语句; for语句。语句。 此外用此外用goto和和if语句亦可构成循环语句亦可构成循环(不提倡)。(不提倡)。 执行过程:执行过程: 先计算表达式的值先计算表达式的值 ;若表达式的值为真若表达式的值为真(非非0)时时执行循环体中的语句,然后重执行循环体中的语句,然后重复上面步骤。若表达式
13、的值为复上面步骤。若表达式的值为假假(0) ,则结束循环。,则结束循环。语义是语义是“要做要做.吗吗?” 一般形式:一般形式: while (表达式表达式) 语句语句“ “表达式表达式”可以是任何表达式:逻辑、字符、赋值、逗号等表达式。可以是任何表达式:逻辑、字符、赋值、逗号等表达式。main( ) int i =1, sum=0 ; while(i=100) sum=sum+i ; i+; printf(“%d”, sum); i=1当 i=100 sum=sum+i i=i+11001nn求:求:sumsum是否可以不设置初始值是否可以不设置初始值0 0? do 语句语句 while(表达
14、式);表达式);分号不能少分号不能少:语义是语义是“做做., 还要做吗还要做吗?”main( ) int i=1, sum=0; do sum=sum+i; i+; while(i=100); printf(%d,sum); main( ) int i, sum=0 ; scanf(“%d”, &i ) ; while(i=100) sum=sum+i; i+; printf(“%d”, sum);main( ) int i, sum=0 ; scanf(“%d”, &i ) ; do sum=sum+i ; i+; while(i=100) ; printf(“%d”, su
15、m);输入:输入:1 1 结果:结果:5050 5050 输入:输入:1 1 结果:结果:50505050输入:输入:101 101 结果:结果: 输入输入:101 :101 结果:结果:0101注意注意: 循环条件中的表达式一般是逻辑表达式和关循环条件中的表达式一般是逻辑表达式和关系表达式,也可以是算术表达式等其他表达式(非系表达式,也可以是算术表达式等其他表达式(非0为真,为真,0为假)。一般表达式中应含有循环控制变为假)。一般表达式中应含有循环控制变量。量。 while (3)和和while (0)是合法的,虽然从程序设是合法的,虽然从程序设计的角度上说是不尽合理。计的角度上说是不尽合理
16、。while (3) 语句语句 表示无限循环表示无限循环while (0) 语句语句 表示不进入循环体表示不进入循环体 要写出一个正确的循环结构,对控制变量要要写出一个正确的循环结构,对控制变量要做三方面工作:做三方面工作:控制变量赋初值控制变量赋初值; 把控制变量把控制变量写入正确的循环条件;写入正确的循环条件;循环中对控制变量的更循环中对控制变量的更新、调整。新、调整。 一般形式:一般形式: for(表达式表达式 1 ;表达式;表达式 2 ;表达式;表达式3 ) 语句语句 不能省略不能省略表达式表达式1:初始化表达式。:初始化表达式。表达式表达式2:循环控制条件。:循环控制条件。表达式表达
17、式3:在循环体语句之后执行的表达式。:在循环体语句之后执行的表达式。 正确设计循环结构应注意三方面的问题:正确设计循环结构应注意三方面的问题:控制变量的初始化控制变量的初始化;循环的条件循环的条件;控制变量的更新控制变量的更新。 求解求解表达式表达式1表达式表达式2语句语句求解求解表达式表达式3for语句的后续语句语句的后续语句。FTmain( ) int i, sum=0; for(i=1;i=100;i+ ) sum=sum+i; printf(%d,sum);main( ) int i=1 , sum=0; for( ;i=100;i+ ) sum=sum+i; printf(%d,su
18、m);main( ) int i , sum=0;printf(%d , sum);“表达式表达式”也可省,这将使循环也可省,这将使循环无终止进行下去。无终止进行下去。 相当于相当于: for( i=1; ; i+ ) sum=sum+i ; i=1; while( 1) sum+= i; i+; main( ) int i, sum=0; for(i=1;i=100; ) sum=sum+i; i+; printf(%d,sum);main( ) int i=1, sum=0; for( ; i=100 ; ) sum=sum+i; i+; printf(%d,sum);同时省略表达式和表达
19、式,则完全等同于同时省略表达式和表达式,则完全等同于whilewhile语句。语句。 如:如: int i = 1; int i = 1;int i = 1; int i = 1; for( for( ; i=100 ; i=100 ; ) ) 相当于相当于 while( i=100 )while( i=100 ) sum+= i ; i+; sum+= i ; i+; sum+= i ; i+; sum+= i ; i+; 三个表达式都可省略,则无终止地执行循环体三个表达式都可省略,则无终止地执行循环体(死循环死循环)。如:如: for( ; ; ) 循环体循环体 相当于相当于 while(
20、 1 ) 循环体循环体 注意注意防止出现防止出现“死循环死循环” 无休止的循环称为无休止的循环称为“死循环死循环”。例如。例如: : main( ) main( ) int x=10; int x=10; for(;x=10;x-) for(;x=10;x-) printf(“%d” ,+x); printf(“%d” ,+x); 该程序会输出无数个该程序会输出无数个“11”“11”而不能正常终止。而不能正常终止。main( ) int i, sum; for( i=1,sum=0;i=100; s+=i,i+) ; printf(%d,sum);结构的嵌套是指三种基本结构(顺序结构的嵌套是指
21、三种基本结构(顺序, ,分支分支, ,循环)体内又包含另外的结构。循环)体内又包含另外的结构。所有程序所有程序不外乎三种基本结构及其嵌套组成不外乎三种基本结构及其嵌套组成,天下,天下程序概莫能外。程序概莫能外。循环与循环的嵌套,以及与顺序结构与选循环与循环的嵌套,以及与顺序结构与选择结构都可以组成嵌套,且嵌套的层数不择结构都可以组成嵌套,且嵌套的层数不限。限。ufor嵌套嵌套for循环循环for( ; ; ) for( ; ; ) ufor嵌套嵌套while循环循环for( ; ; ) while( ) ufor嵌套嵌套do_while 循环循环for( ; ; ) do while( );
22、while嵌套自身嵌套自身while( ) while( ) while嵌套嵌套do_whilewhile( ) do while( ); while 嵌套嵌套 forwhile( ) for( ; ; ) udo_while嵌套嵌套for循环循环do for( ; ; ) while( ); u do_while嵌套嵌套while循环循环do while( ) while( ); udo_while嵌套自身嵌套自身do do while( ) while( ); break ;一般形式:一般形式:功能:结束循环的执行,跳出当功能:结束循环的执行,跳出当前循环层。前循环层。 解释:解释:bre
23、ak 语句一般用在循环语句一般用在循环体内的条件语句中,作用体内的条件语句中,作用是当某个条件成立时用是当某个条件成立时用 break 语句退出循环,不再语句退出循环,不再继续执行其余的语句,也继续执行其余的语句,也不再继续执行其余循环。不再继续执行其余循环。表达式表达式1 1语句语句1 1语句1语句语句2 2表达式表达式2 2breakTFF continue ;一般形式:一般形式:功能:提前结束本次循环,功能:提前结束本次循环,进入下一循环周期。进入下一循环周期。 解释:一旦执行了解释:一旦执行了continue 语句,程序就跳过循环语句,程序就跳过循环体位于该语句后的所有体位于该语句后的
24、所有语句,提前结束本次循语句,提前结束本次循环周期,开始下一个循环周期,开始下一个循环周期。环周期。表达式表达式1 1语句语句1 1语句1语句语句2 2表达式表达式2 2continueFTFmain( )int i,sum=0;for(i=1;i10;i+)if(i=5) break;sum+=i;printf(%dn,sum);main( )int i,sum=0;for(i=1;i10;i+)if(i=5) continue;sum+=i;printf(%dn,sum);break语句的使用:语句的使用:如:如: for(r=1; r100) break; /* area大于大于100时
25、跳时跳出循环出循环*/ printf(“%f”, area ); continue语句的使用:语句的使用:如:将如:将100200之间的不能被整除的数输出之间的不能被整除的数输出main( ) int n; for( n= 100; n= 200; n+) if( n%3= = 0) continue; printf(“%d”, n); 编写程序实现如下功能:编写程序实现如下功能:1 1 求求1+2+3+101+2+3+10,如果遇到能被,如果遇到能被3 3整整除的数则提前结束求和。除的数则提前结束求和。2 2 求求1+2+3+101+2+3+10,如果遇到能被,如果遇到能被3 3整整除的数则
26、跳过该数继续求和。除的数则跳过该数继续求和。 goto 语句为语句为无条件转向语句无条件转向语句,其作用其作用使程序的执行无条件地转移使程序的执行无条件地转移到程序的某指定处到程序的某指定处继续执行继续执行。“指定处指定处”是是以标号为前缀的语句处。以标号为前缀的语句处。一般形式:一般形式: goto 语句标号语句标号; 语句标号语句标号(标签):标签): 是放置于语句之前的标识符,是放置于语句之前的标识符,用于给语句命名。用于给语句命名。如:如: goto label_1; goto 123; (数字不可以数字不可以)for(i=0;i10;i+) for(j=0;j20;j+) for(k
27、=0;k8;k+) if(aijk=t) goto L1; L1: printf(“found!”);goto 语句特别用于从多重嵌套语句特别用于从多重嵌套的循环体中一步跳出!的循环体中一步跳出!#includeint main( ) int a; goto Init; Forward: a = a + 1; Print: printf(“%d”,a); goto Down;Init: a = 1; goto Print;Down: if(a100) goto Forward; 读此段程序,读此段程序, 感觉如何?感觉如何?说明说明: C语言允许在任何语句前加语句标号,作为语言允许在任何语句前
28、加语句标号,作为goto语语句的跳转目标。给语句加标号的形式:句的跳转目标。给语句加标号的形式: 语句标号:语句语句标号:语句 goto语句是一种非结构化语句,结构化程序设语句是一种非结构化语句,结构化程序设计方法不提倡使用计方法不提倡使用goto语句。因为滥用语句。因为滥用goto语句语句将使程序流程无规律,可读性差。但也不是绝对禁将使程序流程无规律,可读性差。但也不是绝对禁止使用,在能够大大提高程序效率时,止使用,在能够大大提高程序效率时,goto语句语句将使程序简化高效。将使程序简化高效。ufor嵌套嵌套for循环循环for( ; ; ) for( ; ; ) ufor嵌套嵌套while
29、循环循环for( ; ; ) while( ) ufor嵌套嵌套do_while 循环循环for( ; ; ) do while( ); while嵌套自身嵌套自身while( ) while( ) while嵌套嵌套do_whilewhile( ) do while( ); while 嵌套嵌套 forwhile( ) for( ; ; ) udo_while嵌套嵌套for循环循环do for( ; ; ) while( ); u do_while嵌套嵌套while循环循环do while( ) while( ); udo_while嵌套自身嵌套自身do do while( ) while( ); 例:打印例:打印8 8行行7 7列的星号矩形。用二重循环实现。列的星号矩形。用二重循环实现。 #include main( ) int i , k; for( i=0; i8; i+ ) for( k=0; k7; k+ ) printf(*); printf(n);程序程序rectangle.c关于循环的小结:关于循环的小结:u while和和for循环是先判断后执行;循环是先判
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《旅游与旅游模式》课件
- 科教文卫中心2024年半年工作总结及下半年工作计划
- 小学三年级数学下册复习计划例文
- 中学初二好词佳句摘抄总结计划大全
- 外贸人员工作计划
- 工作计划出纳工作计划
- 大学新生班主任工作计划范文
- 小班教育工作计划模板汇编
- 2024幼儿园安全工作计划开头语
- 幼儿园2024年工作计划
- 全国气象站号
- 南京大学在校学生校史知识认知情况调查问卷
- 四川乐山历年中考语文文言文阅读试题18篇(含答案与翻译)(截至2021年)
- 外卖配送理论知识考核考核试题及答案
- 道德与法治中考备考建议课件
- 医学检验结果互认课件
- 财产保险退保申请范文推荐6篇
- 食品工程原理课程设计
- 羊膜在眼科临床中应用课件
- (71)第十五章15.2.3整数指数幂1-负整数指数幂-导学案
- 2022年江苏省环保集团有限公司招聘笔试题库及答案解析
评论
0/150
提交评论