




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章 C程序的流程程序控制结构与语句,程序流程概述 语句 顺序结构与语句 选择结构与语句 循环结构与语句 转向语句,5.1 程序流程概述,程序流程就是计算动作执行的过程。 程序的流程分为三种: 顺序结构 选择结构 循环结构,5.2 语句,5.2.1 基本赋值语句 5.2.2 表达式语句 5.2.3 基本输入/输出语句 5.2.4 控制语句 5.2.5 空语句和复合语句,5.2.1 基本赋值语句 赋值语句就是在赋值表达式的后面加上分号,一般形式为: 变量=表达式; 例如: int i; float a=3.5; i=1; i=i+a; a+1=a+1; /*错误*/,5.2.2 表达式语句 由一个表达式加一个分号构成一个表达式语句,一般形式为: 表达式;,5.2.3 基本输入/输出语句 1、基本输出语句:printf() 功能是按指定的输出格式把相应的参数值在标准输出设备(通常是终端)上显示出来。 一般使用格式是: printf(格式控制串,参数1,参数2,); 例如: printf(“a,b的值分别为:%d,%d“,a,b);,5.2.3 基本输入/输出语句 1、基本输出语句:printf(),常用的转换说明及作用,范例5-1,5.2.3 基本输入/输出语句 2、基本输入语句:scanf() 功能是接收用户从键盘上输入的数据,并按照格式控制符的要求进行类型转换,然后送到由对应参数所指定的变量单元中去。 一般格式为: scanf(格式控制串,参数地址1,参数地址2,.); 例如:scanf(“%d%f”, 输入:10 3.0 ,&变量名,5.2.3 基本输入/输出语句 2、基本输 入语句:scanf(),常用的转换说明及作用,【范例5-2】 计算圆的面积,半径由用户指定。,5.2.4 控制语句 C语言中有9种控制语句,它们分别是: if-else语句、for语句、while语句、do-while语句、 break语句、switch语句、goto语句、continue语句、 return语句,5.2.5 空语句和复合语句 空语句只有一个分号构成,即: ; 如:while(getchar()! n ) ; 复合语句就是用 把多个单一的语句括起来,如: z=x+y; t=z/100; printf(“%f“,t); ,5.3 顺序结构与语句,在顺序结构中,程序是按照语句的书写顺序依次执行,语句在前的先执行,语句在后的后执行。可用如下流程图表示:,例如: a=3; b=4; c=a+b;,5.3 顺序结构与语句,【范例5-3】 “鸡兔同笼问题”。鸡有2只脚,兔有4只脚,如果已经鸡和兔的总头数为h,总脚数为f。问笼中各有多少只鸡和兔。 问题分析: 设笼中的鸡有m只,兔有n只,可以列出方程组:,5.4 选择结构与语句,5.4.1 选择结构 5.4.2 单分支选择结构if语句 5.4.3 双分支选择结构if-else语句 5.4.4 多分支选择结构if-else的嵌套形式 5.4.5 多分支选择结构switch语句,5.4.1 选择结构,选择结构可以用分支语句来实现。 分支语句包括 if 语句和 switch 语句。,5.4.2 单分支选择结构if语句 一般语法为: if(表达式) 语句; 执行过程为:先计算表达式的值,如果表达式为非0(即为真)时,则执行语句;否则不执行任何语句,退出if语句,继续执行if语句之后的部分。 例如:,if(xy) printf(“%d”,x);,;,5.4.2 单分支选择结构if语句 【范例5-4】输入三个不同的数,按从大到小的顺序输出。 先将a与b比较,把较大者放在a中,较小者放在b中; 再将a与c比较,把较大者放在a中,较小者放在c中,此时,a为三者中的最大者; 最后将b与c比较,把较大者放在b中,小者放在c中,此时a、b、c已经按从大到小的顺序排列。,5.4.2 单分支选择结构if语句,5.4.3 双分支选择结构if-else语句 作用:当给定的条件满足时,执行一个语句;当条件不满足时,执行另一个语句。 一般语法为:if (表达式) 语句1; else 语句2; 其执行过程为:先计算表达式的值,如果表达式的值为为非0(即为真)时,则执行语句1;否则执行语句2。,流程图表示,5.4.3 双分支选择结构if-else语句 例如:if(a0) printf(“a is positive.n”); else printf(“a is not positive.n”);,【范例5-5】 判断输入的整数是否是13的倍数。,注 意:else部分不能独立存在,即else前一定有一个“;”,它一定是if语句的一部分。,5.4.4 多分支选择结构if-else的嵌套形式 在if语句中又可以包含一个或多个if 语句,这种形式称作if语句的嵌套。 嵌套有以下两种形式: 1. 嵌套在else分支中,形成ifelse.if语句; 2. 嵌套在if分支中,5.4.4 多分支选择结构if-else的嵌套形式 1. 嵌套在else分支中,其形式为: if (表达式1) 语句1; else if (表达式2) 语句2; else if (表达式3) 语句3; . . else 语句n;,【范例5-6】 评价学生的成绩。按分数score输出等级:score90为优,80score90为良,70score80为中等,60score70为及格,score60为不及格。,5.4.4 多分支选择结构if-else的嵌套形式 2. 嵌套在if分支中,其形式为: if(表达式1) if(表达式2) 语句1; else 语句2; else 语句3;,【范例5-7】 判断某学生的成绩score是否及格;如果及格是否达到优秀(score90)。,注意:C语言规定了if和else的“就近配对”原则,即else总是与前面最近的(未曾配对的)if配对。,5.4.5 多分支选择结构switch语句 switch语句的一般语法格式为: switch(表达式) case 常量表达式1:语句1;break; case 常量表达式2:语句2;break; case 常量表达式n:语句n;break; default:语句n+1; ,执行过程为: 先计算表达式的值,并逐个与case后面的常量表达式的值相比较,当表达式的值与某个常量表达式i的值一致时,则从语句i开始执行;直到遇到break语句或switch语句的”; 若表达式与任何常量表达式的值均不一致时,则执行default后面的语句或执行后续语句。,5.4.5 多分支选择结构switch语句 例如: switch(x) case 1: printf(“statement 1.n”); break; case 2: printf(“statement 2.n”); break; default: printf(“default”); 说明: switch后的表达式类型一般为整形、字符型和枚举型,但不能为浮点型; 常量表达式i仅起语句标号作用,不作求值判断; 每个常量表达式的值必须各不相同,没有先后次序; 多个case语句可以共用一组执行语句,【范例5-8】 根据一个代表星期几的0到6之间的整数,在屏幕上输出它代表的是星期几。,5.5 循环结构与语句,5.5.1 循环结构 5.5.2 当型循环语句for语句 5.5.3 当型循环语句while语句 5.4.4 直到型循环语句do-while语句 5.4.5 循环的嵌套,5.5.1 循环结构 循环结构是指在满足循环条件时反复执行循环代码块,直到循环条件不能满足为止。 C中有3种循环语句: while语句 do_while语句 for语句,【范例5-9】 计算100之内的奇数之和。,5.5.2 当型循环语句for语句 一般语法格式为: for(表达式1;表达式2;表达式3) 循环体语句;,执行过程如下: 计算表达式1的值; 判断表达式2,如果其值为非0(真),则执行循环体语句,然后执行第步;如果其值为0(假),则结束循环,执行第步; 计算表达式3; 返回继续执行第步; 循环结束,执行for语句的后续语句。,5.5.2 当型循环语句for语句 例如: sum=0; for(i=0;i=100;i+) sum+=i; 可以将for语句的形式改写为: for(循环变量赋初值;循环条件;循环变量增值) 循环体语句;,5.5.2 当型循环语句for语句 【范例5-10】 经典问题:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=135333。 【范例5-11】 计算n!,即n!=1*2*n。,5.5.2 当型循环语句for语句 for循环的扩展形式: 表达式1和表达式3可以是一个简单的一个简单的表达式,也可以是逗号表达式,例如: for(i=0,j=100;ij;i+,j-) k=i+j; 循环条件可由一个较复杂表达式的值来确定,例如: for(i0;si!c ,5.5.2 当型循环语句for语句 for循环的省略形式: 省略“表达式1”,此时应在for语句之前给循环变量赋初值。如: i=1;for(;i=100;i+) sum+=i; 省略“表达式2”,表示不判断循环条件,循环无终止的进行下去,也可以认为表达式2始终为真。如: for(i=1;i+) sum+=i; 省略“表达式3”,此时应在循环体内部实现循环变量的增量,以保证循环能够正常结束。如: for(i=1;i=100;) sum+=i;i+,5.5.2 当型循环语句for语句 for循环的省略形式: 省略“表达式1”和“表达式3”,此时只给出了循环条件,如: i=1; for(;i=100;) sum+=i;i+ 三个表达式都省略,即不设初值,也不判断条件,循环变量不增值。无终止地执行循环体。如: for(; ;) 循环体语句,5.5.3 当型循环语句while语句 语法格式为: while (表达式) 循环体语句;,执行过程是:当表达式为非0(真)时,执行循环体语句,然后重复上述过程,一直到表达式为0(假)时,while语句结束。 如:,i=1; while(i=100) sum+=i;i+; ,5.5.3 当型循环语句while语句 说明: 循环体包含一条以上语句时,应用“”括起来,以复合语句的形式出现,否则它只认为while后面的第一条语句是循环体; 循环前,必须给循环控制变量赋初值; 循环体中,必须有改变循环控制变量值的语句,否则循环永远不结束。,【范例5-12】 求数列1/2、2/3、3/4前20项的和。,5.5.4 直到型循环do-while语句 直到型循环:先执行语句,后判断表达式。其一般的语法格式为: do 循环体语句; while (表达式);,执行过程是:先执行一次循环体语句,然后判断表达式是否为非0(真),如果为真,则再次执行循环体语句,如此反复,一直到表达式的值等于0(假)时,循环结束。,分号不能省略,5.5.4 直到型循环do-while语句 说明: do-while语句与while语句不同,二者的区别在于:当while后面的表达式一开始的值为0(假)时,while语句的循环体一次也不执行,而do-while语句的循环体至少要执行一次。 循环体部分要用花括号括起来,即使只有一条语句也如此;do-while语句最后以分号结束。 do-while语句也可以构成无限循环,此时要利用break语句或 return语句直接从循环体内跳出循环。,5.5.4 直到型循环do-while语句 【范例5-13】 计算两个数的最大公约数。 采用“辗转相除法”,方法如下: 比较两数,并使m大于n。 将m作被除数,n作除数,相除后余数为r。 将mn,nr; 若r=0,则m为最大公约数,结束循环。若r0,执行步骤步骤(2)和(3)。,m n,36,24,24,36,5.5.5 循环的嵌套 循环的嵌套是指一个循环结构的循环体内又包含另一个完整的循环结构。 之前三种循环之间可以互相嵌套。比如:,1. while 嵌套 while while( ) while( ) ,2. do-while 嵌套 do-while do do while( ); while( );,5.5.5 循环的嵌套,3. for嵌套for for( ; ; ) for( ; ; ) ,4. while 嵌套do-while while( ) do while( ); ,5. for 嵌套while for( ; ; ) while( ) ,等等。,5.5.5 循环的嵌套 【范例5-14】 编写程序打印如下金字塔图形。 【范例5-15】 在算经中张丘建提出一个“百鸡问题”:就是公鸡一只值钱五,母鸡一只三块,小鸡三只一块。用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各买多少只?,* * * * *,0=x=20 0=y=33 z=100-x-y,5.6 转向语句,5.6.1 goto语句 5.6.2 break语句 5.6.3 continue语句,5.6.1 goto语句 goto语句是无条件转向语句,即转向到指定语句标号处,执行标号后面的程序。其一般语法格式为: goto 语句标号; 例如:goto end;,说明:结构化程序设计不主张使用goto语句。,【范例5-16】 用goto语句来显示1100的数字。,5.6.2 break语句 作用:可使程序跳出当前循环结构,执行循环后面的语句。 语句格式为: break;,/* 无break语句*/ int sum = 0, number; scanf(“%d”, ,/* 有break语句*/ int sum = 0, number; while (1) scanf(“%d”, ,5.6.2 break语句 break语句只是跳出当前的循环语句,对于嵌套的循环语句,break语句的功能是从内层循环跳到外层循环。例如: 01 int i = 0, j,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/TS 19206-9:2025 EN Road vehicles - Test devices for target vehicles,vulnerable road users and other objects,for assessment of active safety functions - Part 9: Require
- GB/T 45906.8-2025变电站二次系统第8部分:电气操作防误
- 桥梁远景图文体课件
- 《机械员》考试题库含完整答案【网校专用】
- 常见病症用药测试题库含答案
- 2025年物流行业招聘面试实战指南与预测题解答
- 2025年电子商务运营师中级面试必-备题库
- 2025广东政府采购评标专家考试题库及答案
- 2025年注册验船师资格考试(A级船舶检验专业法律法规)练习题及答案一
- 2025年高级电子商务运营师认证考试题库及参考答案
- 2025新版企业员工劳动合同范本
- PCR实验室基因扩增检验人员培训试题及答案
- 2025年全国版图知识竞赛(中学组)历年参考题库含答案详解(5卷)
- 2025年西藏自治区三支一扶人员招募考试(公共基础知识)历年参考题库含答案详解(5卷)
- 2025年富县辅警考试题库(附答案)
- 2026届张家港市达标名校中考语文模试卷含解析
- 国家中医药管理局《中医药事业发展“十五五”规划》全文
- 上交叉综合征的肌肉失衡及处理
- 开学安保工作方案(6篇)
- QC080000-2017 HSF有害物质管理程序文件全套
- 碳九加氢标准工艺标准流程
评论
0/150
提交评论