




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、4.1 c 语句概述 4.2 顺序结构及实现 4.3 选择结构及实现 4.4 循环结构及实现 4.5 转向语句 4.6 程序设计举例 第四章 C程序流程设计 三种基本结构 简单语句简单语句 空语句(;)空语句(;) 复合语句(复合语句(一条或多条语句一条或多条语句) 表达式语句(表达式;)表达式语句(表达式;) 函数调用语句(函数名(参数表);)函数调用语句(函数名(参数表);) 流程控制语句流程控制语句 结构化语句结构化语句 条件语句(条件语句(if语句,语句,switch语句)语句) while语句语句 do-while语句语句 for语句语句 非结构化语句非结构化语句 break语句语句
2、 continue语句语句 return语句语句 非限定转向语句非限定转向语句 (goto) 循环语句循环语句 n语句是语句是C C程序的重要组成部分,它表示程序程序的重要组成部分,它表示程序 执行的步骤,实现程序的功能。执行的步骤,实现程序的功能。 nC C语句以分号语句以分号“;”结尾结尾 n书写自由,一行多条语句或一语句拆成多书写自由,一行多条语句或一语句拆成多 行。语句之间用行。语句之间用“;”隔开就可以了。隔开就可以了。 nC语句分类语句分类 空语句:空语句: ; 程序控制语句程序控制语句(9种):种): if( )else switch for( ) while( ) dowhil
3、e( ) continue break return goto 分支 循环 辅助控制 如如 total=total+limit; a=3; printf(“Hello,world!n”); func( ); 函数调用语句(函数名(参数表);)函数调用语句(函数名(参数表);) 表达式语句:表达式表达式语句:表达式; n复合语句:用复合语句:用 括起来的一组语句又称括起来的一组语句又称语句组语句组 n一般形式:一般形式: 数据定义部分;数据定义部分; 执行语句部分;执行语句部分; n说明:说明: n“”后不加分号后不加分号 n在语法上视为一条语句在语法上视为一条语句 n复合语句可嵌套复合语句可嵌
4、套 例例 复合语句。复合语句。 #include “stdio.h” main() int xl, y2; int x3; printf(x=%d, y%dn,x, y); / * x3 */ printf(x=%d, y%dn,x, y); /* x=1 * / 程序运行结果为:程序运行结果为: x=3,y=2 x=1,y=1 4.2.1 4.2.1 顺序结构程序设计的思想顺序结构程序设计的思想 顺序结构是结构化程序设计中最简单、最常见的一种顺序结构是结构化程序设计中最简单、最常见的一种 程序结构。顺序结构中,程序是按照各语句出现的次序顺序程序结构。顺序结构中,程序是按照各语句出现的次序顺序
5、 执行的。执行的。 顺序结构程序通常由顺序结构程序通常由三部分三部分组成:组成: 输入数据:输入数据: 让计算机为用户进行运算,首先必须把已知让计算机为用户进行运算,首先必须把已知 的数据,即让计算机进行运算的对象,输入到计算机中。的数据,即让计算机进行运算的对象,输入到计算机中。 进行处理:进行处理:已知数据输入到计算机的基础上,根据问题已知数据输入到计算机的基础上,根据问题 的需要对其进行相应的运算处理。的需要对其进行相应的运算处理。 输出结果输出结果:让计算机程序进行运算处理的目的是为了得:让计算机程序进行运算处理的目的是为了得 到相应的结果,因此,必须将运算处理的结果输出出来。到相应的
6、结果,因此,必须将运算处理的结果输出出来。 4.2 4.2 顺序结构程序设计的思想顺序结构程序设计的思想 4.3.2 4.3.2 顺序结构程序举例顺序结构程序举例 以下程序有终端输入两个整数给变量以下程序有终端输入两个整数给变量x x和和y,y,然后输然后输 出出x x和和y y;交换;交换x x和和y y中的值后,再输出中的值后,再输出x x和和y y 源文件源文件e4-1.ce4-1.c main() main() int int x,y,t x,y,t; ; printf(“input printf(“input x”); scanf(“x scanf(“x=%d y=%dn”,); p
7、rintf(“x printf(“x=%d,y=%d,y=%dn”,x,y=%dn”,x,y);); t=x; x=y; y=t;/ t=x; x=y; y=t;/* *两数交换两数交换* */ / printf(“x printf(“x=%d,y=%d,y=%dn”,x,y=%dn”,x,y); ); 4.3 4.3 选择型程序设计选择型程序设计 4.3.1 if语句(条件选择语句)语句(条件选择语句) nif语句的三种形式 n形式一: u格式:if (expression) statement u执行过程: expr statement 非0 =0 例:if (xy) printf(“%d
8、”,x); expr statement1statement2 非0=0 l形式二: u格式:if (expression) statement1 else statement2 u执行过程: 例:if (xy) printf(“%d”,x); else printf(“%d”,y); n形式三(嵌套if语句) n格式: if ( expr1 ) statement1 else if (expr2 ) statement2 else if (expr3 ) statement3 . else statementn expr1 statemnt1 非0 =0 expr2 expr3 statem
9、ntnstatemnt3statemnt2 非0 非0 =0 =0 u执行过程: 例:if (salary1000) index=0.4; else if (salary800) index=0.3; else if (salary600) index=0.2; else if (salary400) index=0.1; else index=0; 如:if(a=b if(3) printf(“OK”); if(a) printf(“%d”,a); l说明: uif后面的表达式类型任意 u语句可以是复合语句 u if(x) if(x!=0) if(!x) if(x=0) 例 考虑下面程序的输
10、出结果: #include main() int x,y; scanf(“%d,%d”, if(xy) x=y; y=x; else x+; y+; printf(“%d,%dn”,x,y); Compile Error! /*e4_2.c*/ #include main() int x,y; printf(Enter an integer:); scanf(%d, y=x; if(yabsolute value:%dn,x,y); 例 求一个数的绝对值 运行:Enter an integer:-12 integer:-12-absolute value :12 /*ch4_3.c*/ #in
11、clude main() int a,b; printf(Enter integer a:); scanf(%d, printf(Enter integer b:); scanf(%d, if(a=b) printf(a=bn); else printf(a!=bn); 例 输入两个数并判断两数相等否 运行:Enter integer a:12 Enter integer b:12 a=b 运行:Enter integer a:12 Enter integer b:9 a!=b /*e4_4.c*/ #include main() char c; printf(Enter a characte
12、r:); c=getchar(); if(c=0 else printf(The character is other charactern); 例 判断输入字符种类 运行:Enter a character: The character is a control character 运行:Enter a character:8 The character is a digit 运行: Enter a character: D The character is a capital letter 运行: Enter a character: h The character is a lower
13、letter 运行: Enter a character:F1 The character is other character nif - else if - else 配对原则:配对原则:缺省缺省 时,时,elseelse总是总是 和它上面离它和它上面离它最近的最近的不带不带elseelse的的ifif配对,与配对,与书书 写格式无关。写格式无关。 if() if() if() else. else. else. vif语句嵌套: vif语句嵌套: l一般形式: if (expr1) if (expr2) statement1 else statement2 else if(expr3)
14、statement3 else statement4 内嵌if 内嵌if if (expr1) if (expr2) statement1 else statement2 内嵌if if (expr1) if (expr2) statement1 else statement3 内嵌if if (expr1) statement1 else if(expr3) statement3 else statement4 内嵌if 例例 输入两数并判断其大小关系输入两数并判断其大小关系 /*e4_5.c*/ #include main() int x,y; printf(Enter integer x
15、,y:); scanf(%d,%d, if(x!=y) if(xy) printf(XYn); else printf(XYn); else printf(X=Yn); 运行:Enter integer x,y:12,23 XY Enter integer x,y:12,12 X=Y 例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”); 修改:修改: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”); 实现if else 正确配对方法:加 例例 考虑下面程序输出结果考虑下面程
16、序输出结果: main() int x=100,a=10,b=20; int v1=5,v2=0; if(a60n”); break; . 例 switch(score) case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!”); case 2: printf(“Fail!”); default : printf(“data error!”); 运行结果:score为5时,输出: Very good! Good! Pass! Fail! data error! 例例 void main() in
17、t x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+;b+; break; case 3: a+;b+; printf(“na=%d,b=%d”,a,b); 运行结果:a=2,b=1 /*e4_6.c*/ #include main() int c; printf(Enter m or n or h or other:); c=getchar(); switch(c) case m: printf(nGood morning!n);break; case n
18、: printf(nGood night!n); break; case h: printf(nHello!n); break; default : printf(n?n); break; 例 根据输入字母输出字符串 4.4循环型程序设计循环型程序设计 n概述概述 C语言可实现循环的语句:语言可实现循环的语句: nwhile 语句语句 ndo while 语句语句 nfor 语句语句 ngoto语句语句 ngoto语句一般格式:语句一般格式: goto 语句标号; . 标号:语句; v功能:无条件转移语句 v说明: l只能是任意合法的标识符,不能用整数作标号不能用整数作标号 l语句标号必须与此
19、goto语句在同一函数内,且唯一 l只能加在可执行语句前面 l限制使用goto语句 例 用if 和goto语句构成循环,求 /*e4_7.c*/ #include main() int i,sum=0; i=1; loop: if(i=100) sum+=i; i+; goto loop; printf(%d,sum); sum=0+1 sum=1+2=3 sum=3+3=6 sum=6+4 sum=4950+100=5050 循环初值 循环终值 循环变量增值 循环条件 循环体 while语句 v一般形式: while(表达式) 循环体语句; v执行流程: expr 循环体 假(0) 真(非0
20、) while v特点:先判断表达式,后执行循环体特点:先判断表达式,后执行循环体 v说明:说明: l循环体有可能一次也不执行循环体有可能一次也不执行 l循环体可为任意类型语句循环体可为任意类型语句 l下列情况,退出下列情况,退出whilewhile循环循环 u条件表达式不成立(为零)条件表达式不成立(为零) u循环体内遇循环体内遇break,return,gotobreak,return,goto l无限循环无限循环: while(1): while(1) 循环体循环体; ; 例 用while循环求 100 1n n /*e4_8.c*/ #include main() int i,sum=
21、0; i=1; while(i=100) sum=sum+i; i+; printf(%d,sum); 循环初值 循环终值循环变量增值 循环条件 循环体 例 显示110的平方 /*e4_9.c*/ #include main() int i=1; while(i=10) printf(%d*%d=%dn,i,i,i*i); i+; 运行结果: 1*1=1 2*2=4 3*3=9 4*4=16 5*5=25 6*6=36 7*7=49 8*8=64 9*9=81 10*10=100 dowhile语句 v一般形式: do 循环体语句;循环体语句; while(表达式表达式); v执行流程: do
22、 循环体 expr 假(0) 真(非0) while v特点:先执行循环体,后判断表达式特点:先执行循环体,后判断表达式 v说明:说明: l至少执行一次循环体至少执行一次循环体 ldowhile可转化成可转化成while结构结构 expr 循环体 假(0) 真(非0) 循环体 While循环 例 用dowhile循环求 /*e4_10.c*/ #include main() int i,sum=0; i=1; do sum+=i; i+; while(i=100); printf(%d,sum); 例例 while和和dowhile比较比较 #include main() int i,sum=
23、0; scanf(%d, do sum+=i; i+; while(i=10); printf(%d,sum); main() int i,sum=0; scanf(%d, while(i=10) sum+=i; i+; printf(%d,sum); for语句 v一般形式: for(expr1 ; expr2 ; expr3) 循环体语句; v执行流程: expr2 循环体 假(0) 真(非0) for expr1 expr3 vfor语句一般应用形式: for(循环变量赋初值;循环条件;循环变量增值) 循环体语句; v说明: lfor语句中expr1, expr2 ,expr3 类型任意
24、,都可省略,但分 号;不可省 l无限循环: for(;) lfor语句可以转换成while结构 expr1; while(expr2) 循环体语句; expr3; 例例 用用for循环求循环求 100 1n n #include main() int i,sum=0; for(i=1;i=100;i+) sum+=i; printf(%d,sum); 例:#include main( ) int i=0; for(i=0;i10;i+) putchar(a+i); 运行结果:abcdefghij 例:#include main( ) int i=0; for(;i10;i+) putchar(
25、a+i); 例:#include main( ) int i=0; for(;i10;) putchar(a+(i+); 例:#include main( ) int i=0; for(;i10;putchar(a+i),i+) ; 例例 梯形法求数值积分梯形法求数值积分p86 ); 1; 1()*(* )()(*5 . 0 )()()( 2 ) 1()( 2 ) 1()( 2 1 1 1 0 iniihiafhss bfafhs ihafhbfaf h hiafihaf h S hiafihaf h s n ab h n i n i i 迭代:0 y a a+ha+ih a+(i+1)h b
26、 f(x) dxxxf b a 2 4)( /*e4_11.c*/ #include #include math.h main() int i,n=10; float a,b,h,s; printf(nplease input a ,b (-2=b=2) n); scanf(%f%f, h=(b-a)/n; s=0.5*h*(sqrt(4-a*a)+sqrt(4-b*b); for(i=1;i=n-1;i+) s=s+h*(sqrt(4-a*a)+i*h); printf(output jifen %f,s); 循环的嵌套 v三种循环可互相嵌套,层数不限 v外层循环可包含两个以上内循环,但不能
27、相互交叉 v嵌套循环的执行流程 (1) while() while() . (2) do do while( ); . while( ); (3) while() do while( ); . (4) for( ; ;) do while(); while() . 内循环 外循环 内循环 v嵌套循环的跳转 例例 循环嵌套,输出九九表循环嵌套,输出九九表 123456789 123456789 24681012141618 369121518212427 91827364554637281 . i j i10 printf 假(0) 真(非0) i=1 j+ j=1 j10 真(非0) 假(0)
28、 i+ for(i=1;i10;i+) for(j=1;j10;j+) printf(j=9)?%4dn:%4d,i*j); 例例 循环嵌套,输出九九表循环嵌套,输出九九表 i j /*e4_12.c*/ #include main() int i,j; for(i=1;i10;i+) printf(%4d,i); printf(n-n); for(i=1;i10;i+) for(j=1;j10;j+) printf(j=9)?%4dn:%4d,i*j); n4.5 辅助控制语句辅助控制语句 nbreak语句语句 n功能:在功能:在循环语句和循环语句和switchswitch语句语句中中, ,
29、终止并跳出终止并跳出 循环体或开关体循环体或开关体 n说明:说明: nbreakbreak终止并跳出终止并跳出最近一层最近一层的结构的结构 nbreakbreak不能用于循环语句和不能用于循环语句和switchswitch语句之外的语句之外的 任何其它语句之中任何其它语句之中 expr break; 假(0) 真(非0) while do break; . expr 假(0) 真(非0) while expr2 break; . 假(0) 真(非0) for expr1 expr3 switch expr 语句组1 break; 语句组2 break; 语句组n break; 语句组 brea
30、k; . const 1const 2const ndefault case 例例 break举例:输出圆面积,面积大于举例:输出圆面积,面积大于100时停止时停止 #define PI 3.14159 main() int r; float area; for(r=1;r100) break; printf(r=%d,area=%.2fn,r,area); 例例 break举例:举例: 小写字母转换成小写字母转换成 大写字母大写字母,直至输直至输 入非字母字符入非字母字符 #include main() int i,j; char c; while(1) c=getchar(); if(c=
31、a else break; 4.5.2 continue语句语句 v功能:结束功能:结束本次循环本次循环,跳过循环体中尚未,跳过循环体中尚未 执行的语句,进行下一次是否执行循环体的执行的语句,进行下一次是否执行循环体的 判断判断 v仅用于循环语句中仅用于循环语句中 expr continue; 假(0) 真(非0) while 真(非0) do continue; . expr 假(0) while expr2 continue; . 假(0) 真(非0) for expr1 expr3 例例 求输入的十个整数中正数的个数及其平均值求输入的十个整数中正数的个数及其平均值 #include ma
32、in() int i,num=0,a; float sum=0; for(i=0;i10;i+) scanf(%d, if(a=0) continue; num+; sum+=a; printf(%d plus integers sum :%6.0fn,num,sum); printf(Mean value:%6.2fn,sum/num); 4.6 4.6 程序设计举例程序设计举例 P52 5.2程序举例 为止最后一项的绝对值小于 的近似值,直到公式求例用 6 10 7 1 5 1 3 1 1 4 t=1,pi=0,n=1.0,s=1 当|t|1e-6 pi=pi+t n=n+2 s=-s t
33、=s/n pi=pi*4 输出pi 分子:分子:1,-1,1,-1 分母:分母:1,3,5,7,. 例例 p61 5.10求求Fibonacci数列:数列:1,1,2,3,5,8,的前的前40个数个数 )3( )2(12 ) 1(11 21 nFFF nF nF nnn f1=1,f2=1 for i=1 to 38 f3=f1+f2 输出f3 f1=f2 f2=f3 1 5 34 233 1597 10946 75025 514229 3524578 24157817 1 8 55 377 2584 17711 121393 832040 5702887 39088169 2 13 89 610 4181 28657 196418 1346269 9227465 63245986 3 21 144 987 6765 46368 317811 2178309 14930352 102334155 P63
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025选购家居建材合同细节不容忽视
- 高三哲学考试题及答案
- 风险管理自考试题及答案
- 豆蔻镇考试题目及答案
- 调剂学考试题及答案太原
- 2025标准合同范本:买卖合同模板
- 地球毁灭考试题及答案大全
- 德州物理中考试题及答案
- 德云女孩考试题及答案
- 中国导电材料项目商业计划书
- 技术部经理竞聘演讲稿
- 电动车 - 雪佛兰Bolt减速器拆解分析报告
- 2025年河北建设投资集团有限责任公司人员招聘笔试备考题库及一套完整答案详解
- 宅基地入股合作协议合同范本
- GCP妇科专业组汇报
- 世界现代史下马工程 14
- 科技项目计划设计任务书
- 人教版pep四年级英语下册教案全册
- 诗词地理学古诗词与地理课件
- 表1:项目验收表
- 安全生产“五个一”、“十个一次”活动内容
评论
0/150
提交评论