版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 顺序及分支程序设计,本章重点: 1、复合语句 2、if 语句 3、ifelse语句 4、嵌套的if及ifelse语句 5、常见错误,31 语句概述,语句是一个程序的主要构成部分。在C语言里, 一个语句是在结尾处用分号结束的。根据语句功能或构成的不同,C语言语句可分为五类: 1表达式语句 2空语句 3函数调用语句 4复合语句 5控制语句,1表达式语句 表达式语句由表达式加上分号“;”就构成了一个语句。事实上,C语言中有使用价值的表达式语句主要有3种: (1)赋值语句。例如:sum=x+y; (2)自加自减运算符构成的表达式语句。例如:i+; (3)逗号表达式语句。例如:x=1,y=1;
2、2空语句,光有一个分号“;”,作为语句结束符,它表示什么也不做。,3函数调用语句 函数调用语句是由一次函数调用加一个分号“;”构成。例如: printf (Printf is a C function ); 其实“函数调用语句”也是一种表达式语句,只是为了便于理解和使用,我们把“函数调用语句”单独作为一种语句。,4复合语句 把多个语句用括号 括起来组成的一个语句称复合语句。 在程序中应把复合语句看成是单条语句,而不是多条语句,例如: x=y+z; a=b+c; printf(“%d%d”,x,a); 是一条复合语句。复合语句内的各条语句都必须以分号“;”结尾,在括号“”外不能加分号。,5控制语
3、句 控制语句用于控制程序的流程, 以实现程序的各种结构方式。它们由特定的语句定义符组成。语言有九种控制语句。 可分成以下三类: (1) 选择控制语句 if语句,switch语句 (2) 循环执行语句 do while语句,while语句,for语句 (3) 转向语句 break语句,goto语句,continue语句,return语句,32 问题的引出 (顺序程序示例),例3.1有三个电阻并联,其阻值分别为10、25、50,求并联后的电阻。计算并联电阻的公式是:,#include stdio.h main() float r,r1,r2,r3; r1=10; r2=25; r3=50; r=1
4、/(1/r1+1/r2+1/r3); printf(并联电阻r=%8.2fn,r); 程序运行结果: 并联电阻r= 6.25,33 if 语句,331 if语句的一般形式 C语言中有一种特有的条件运算符“ ? : ”,其格式为:c?e1:e2 。若条件c成立,即为真,则取e1的值,否则取e2的值。 此条件运算符在某种程度上可以起到逻辑判断的作用,我们可以用条件运算符来解决一些问题。例如:,例3.2 求分段函数的值。 #include math.h #include stdio.h main() float x,y; /*变量y存放f(x)的值*/ printf(请输入x的值:); scanf(
5、%f, ,程序运行结果: 请输入x的值:2 当x=2.000000时,f(x)=2.236068,例3.3 任意输入两个整数,请按降序输出这两个数。 #include stdio.h main ( ) int a,b; printf(请输入两个整数(a,b):); scanf(%d,%d, /*条件不成立则执行语句2 */ ,if 语句的一般格式: if() else ,其语义是,若表达式的值不为零,则执行,否则,执行。此处的和可以是任何形式的语句。if-else构作了一个两路分支结构。,332 if-else中的复合语句 如果两个分支中需要执行的语句不止一条,必须用“ ”括起来,作为一个复合
6、语句使用,若只有一条语句,“ ”可以省略。 例3.4 已知实数a,b,计算u=(r+s)2, v=(r+s)3的值。 这里: 当ab时,r=a2-b2,s=a/b 当ab时,r=b2-a2,s=a/b+4,#include stdio.h main() float a,b,u,v,s,r; printf(请输入实数a,b:); scanf(%f,%f, ,if 语句的一般格式: if() else ,分析语法错误: if(ab) r=a*a-b*b; s=a/b; else r=b*b-a*a; s=a/b+4; ,if 语句的一般格式: if() else ,分析语法错误: if(ab) r
7、=a*a-b*b; s=a/b; ; else r=b*b-a*a; s=a/b+4; ,if 语句的一般格式: if() else ,分析逻辑错误: 若ab成立,哪几条语句执行? if(ab) r=a*a-b*b; s=a/b; else r=b*b-a*a; s=a/b+4;,1,2,3,注意事项:,(1)if后面的一定要有括号,这是语法约定。,(2)允许只使用if语句,没有else;但程序中不可以没有if而只有else;,(3)只能执行与if有关的语句或者只执行与else有关的语句,而不可能同时执行两者。,(4)复合语句内的各条语句都必须以分号“;”结尾,在括号“”外不能加分号;,(5)
8、if语句的表达式可以是任意类型的C语言的合法的表达式,但计算结果必须为整型、字符型或浮点型之一。,333 if 语句的表达式,C语言没有逻辑型数据,用非0的数表示“真”,而用0表示“假”,只有表达式的值为“真”时,才执行相对应的分支语句。,构成表达式的运算符可以是算术运算符,关系运算符和逻辑运算符。,关系运算符包括大于()、小于(=)、小于等于(=)和不等于(!=)六种,用于比较运算,其运算值用整数1表示“真”,用整数0表示“假”。,逻辑运算符包括与( scanf(%d, ,括号(),逻辑非,算术运算符,关系运算符,逻辑与,逻辑或,赋值运算符,高 低,图3-1闰年表达式计算分析,if(year
9、%4=0 scanf(%d, ,例3.7 输入任意三个整数a、b、c,求三个数中的最大值。,34 if语句的嵌套,#include stdio.h main() int a,b,c,max; printf(请输入a,b,c:); scanf(%d,%d,%d, ,在一个if语句的分支语句中又包含另一个if语句,从而构成了if语句的嵌套使用。,从后往前,(1)else与前面最接近的if配对。(2)复合语句外的else不能与复合语句内的if配对,342 流程图(自学) 表3-2 流程图图形符号,343 if与else的配对规则 C语言规定:else与前面最接近它而还没有和其他else语句配对的if
10、语句配对。 同时从书写格式上也要注意,要有层次感,好的程序员应该养成这一习惯,以便他人理解你的程序和自己将来的修改。 例挑选三个数中最大的一个数,/*错误写法*/ /*正确写法*/,(2)复合语句外的else不能与复合语句内的if配对,从后往前,(1)else与前面最接近的if配对,例3.10 求解一元二次解方程:,运用结构化程序设计思想:先整体后局部,输入a,b,c; 计算delta; 根据delta的不同情况计算并输出根;,1,2,3,if(delta0) else,3_1,if(delta0) else if(delta0) else ,伪代码,#include #include mai
11、n() float a,b,c,delta; printf(请输入方程系数a,b,c:); scanf(%f,%f,%f,if(delta0) else if(delta0) else ,r1=(-b+sqrt(delta)/2/a; r2= =(-b-sqrt(delta)/2/a;,r=b/2/a; Im=sqrt(-delta);,r=-b/2/a;,1,2,3,1,2,3,#include #include main() float a,b,c,delta,x1,x2,realpart,imagpart; printf(请输入方程系数a,b,c:); scanf(%f,%f,%f, e
12、lse if(delta1e-6), x1=(-b+sqrt(delta)/(2*a); x2=(-b-sqrt(delta)/(2*a); printf(“有两个不相等的实根:%8.4f和%8.4fn,x1,x2); else realpart=-b/(2*a); imagpart=sqrt(-delta)/(2*a); printf(有两个不相等的虚根:n); printf(%8.4f+%8.4fin,realpart,imagpart); printf(%8.4f-%8.4fin,realpart,imagpart); ,35 switch 语句,if语句只能实现两路分支,在两者中选择其
13、一。虽然嵌套的if语句可以实现多路检验,但有时不够简洁。为此C语言提供了实现多路选择的另一个语句switch,称为开关语句。下面,我们来看一个用switch语句编写的具有多路分支的程序。,例3.11 模拟计算器的功能。编写一个程序,能够根据用户输入的运算符,对两个数进行运算。流程图如3-5所示。源程序如下:,#include stdio.h main() float x,y; /*存放两个运算符分量*/ char operator; /*存放运算符*/ printf (请输入x,运算符,y:); scanf (%f%c%f,switch(operator) case +: printf (%.2f%c%.2f=%.2fn,x,operator,y,x+y); break; case -: printf (%.2f%c%.2f=%.2fn,x,operator,y,x-y); break; case
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度工程建设项目合同标的及服务范围详细描述
- 2024年度特许经营合同服务内容与条款2篇
- 中国绿色资本市场绿皮书2023-2024
- 《龙湾区永强中学》课件
- 2024年度网络安全评估与维护合同
- 2024中国电子进出口限公司校园招聘45人易考易错模拟试题(共500题)试卷后附参考答案
- 2024中国电信湖北咸宁分公司招聘9人易考易错模拟试题(共500题)试卷后附参考答案
- 《导与练随机抽样》课件
- 2024年度艺人经纪合同关键条款及注意事项
- 2024中国华电科工集团限公司社招21人易考易错模拟试题(共500题)试卷后附参考答案
- psv500b硬件手册多功能全场扫描式激光
- 宝钢总平面图
- 声母韵母整体认读音节默写表
- 倍福TwinCAT ADS通讯-高级语言
- 液体表面张力系数测定实验设计及研究毕业论文
- 机械设计基础知识点总结
- 深基坑开挖专项施工方案专家论证版本
- 落实三会一课制度
- 毕业论文-浅析提升空乘人员素质改进服务质量
- 新概念英语第二册
- 花园宝宝涂色(21张)word可打印
评论
0/150
提交评论