C第2版第4章分支结构.ppt
C语言程序设计第4章选择结构程序设计ppt课件
![C语言程序设计第4章选择结构程序设计ppt课件](https://img.taocdn.com/s3/m/e15a3ec5cd22bcd126fff705cc17552707225eab.png)
8
printf("grade is E" );
9 else if (score >=60 && score<70 )
10
printf( "grade is D");
11 else if (score >=70 && score<80 )
12
printf( "grade is C");
13 else if (score>=80 && score<90 )
printf("a,b="); scanf("%d,%d",&a,&b); if (a>b) max=a; else max=b; printf("max=%d\n",max); }
结束
8
3.if-else if-else语句
(1)语句格式:
if (表达式1) 语句1
else if (表达式2) 语句2
不再判断,顺序执 行下面的语句
21
4.2 switch语句
switch (表达式) {case 常量表达式1:语句1 case 常量表达式2:语句2 …… case 常量表达式n:语句n [default:语句n+1] }
注意:
1. <表达式>可以是整型或字 符型表达式; 2. case后面必须是常量表达 式,不能包含变量; 3. 每个常量表达式的值应互 不相同; 4. case语句先后顺序随意; 5.若从上至下没有找到与表 达式的值相匹配的case,含有 default子句时,执行语句n+1。
C语言4分支结构课件
![C语言4分支结构课件](https://img.taocdn.com/s3/m/47837e276c175f0e7cd13740.png)
式(即去掉花括号{语)句。组1;}
statement
执行过程: 例:例:if (x>y)
形式二格执iefl(s:行式eex过:p{{语r语e程s句句s:io组组n)21;;}}iefls(exmm>yaaxx) =={}e{xyls;;epppprrrriiiinnnnttttffff((((““““最%最%stdd大a大\t\nen值值m””非,,xye为为n))0;;t::1 ””e));x;pr
转移控制语句(break; continue, return; goto)
C 语
数据定义语句(int a;)
句 非指令语句
宏定义(#define)
编译预处理 文件包含(#include)
条件编译(#ifdef #else #endif)
复合语句(由一对花括号括起来的一组语句,如:{ int a; a = 1; printf(“%d”, a); })
第 4 章 选择型程序设计
算法的自然语言描述
例4-2 有50个学生,要求将他们之中成绩在80分以上者打印出来。
分析:逐一将每个同学的成绩与80分进行比较,符合条件即打印。设:n表示学生学号,n1表 示第一个学生学号;ni表示第i个学生学号;g表示学生成绩,g1表示第一个学生成绩, gi表示第i个学生成绩,使用gi与80进行判断。
(2)流程图:灵活、自由、形象、直观,可表示任何算法
输入/输出
处理
判断
开始/结束
连接符 数据流
(3)N-S图(盒图):完全去掉了带箭头的流程线,算法的所有处理步骤 都写在一个大矩形框里(描述简单,符合结构化的思想)
A
P
T
F
P
B
AB
C语言程序设计教程第2版课件第4章
![C语言程序设计教程第2版课件第4章](https://img.taocdn.com/s3/m/1dd5144de97101f69e3143323968011ca300f78a.png)
1. 控制语句:完成一定的控制功能。
C 有9种控制语句:
⑴if( ) ~ else ~
(条件语句)
⑵ for( ) ~
(循环语句)
⑶ while( ) ~
(循环语句)
⑷ do ~ while( ) (循环语句)
⑸ continue
4.1 C语句介绍
一、C程序结构
C程序
源程序文件1
源程序文件2 • • • • • • 源程序文件n
预处理命令 全局变量声明 函数1 • • • • • •
函数n
函数首部 函数体
局部变量声明 执行语句
二、C语句概述
C语句分类: 1.控制语句 2.函数调用语句 3.赋值语句 4.空语句 5.复合语句
main() { int x,y;
scanf(“%5d,%3d”,&x,&y); } 输入数据: 345,567
说明:
1. %后的“*”附加说明符,用来表示跳过它相应的数据。 如:scanf(“%2d ,%*3d , %2d”,&a,&b); 输入:12 , 456 , 67 结果:a=12 b=67
如:float f=123.456;
printf(“%10.2f ,%-10.2f”,f);
输出结果:
123.46,123.46
8. e格式——以指数形式输出实数。
(1) %e 如: printf(“%e”,123.456);
输出结果: 1.234560e+002
6位
3位
一般共占13列宽度
(2) % m.ne和 %–m.ne: m、n和“–”字符含义 与
C语言第4章-分支结构.
![C语言第4章-分支结构.](https://img.taocdn.com/s3/m/408be21fc381e53a580216fc700abb68a982ad8c.png)
§【源程序】 §main( ) §{ int grade; printf ( "input the grade:"); § scanf ("%d",&grade); § if (grade>=90) printf("A\n"); § else if(grade>=80) printf("B\n"); § else if(grade>=70) printf("C\n"); § else if(grade>=60) printf("D\n"); § else printf("E\n"); §}
§2.添break、可跳出。见下节
【例呢?
§ //百分制成绩的等级划分问题之解法3(不完善):
§ main( )
§ {int grade; printf("input the grade:");
§ scanf("%d",&grade);
§ switch(grade/10) //按单值匹配,故要将范围映射为单值
§4.各个case子句出现的次序对执行结果没任 何影响,即顺序可以任意布局。
§5.每一个case能够拥有一条或多条语句,其最大的 不同之处在于使用多条语句时不需要用“{}”括起来。
§6.多个case可以共用一组执行语句。例如:
§
┆
§
case ‘A’:
§
case ‘a’: ++count ; break ;
§
计算机二级C语言chp4_选择结构
![计算机二级C语言chp4_选择结构](https://img.taocdn.com/s3/m/3bff518602d276a200292ed6.png)
4.4 if语句及嵌套if语句
练习1:从键盘输入某科考试成绩,输出优秀、及 格与不及格等级,其中90分以上为优秀,60~90分 为及格,60分以下为不及格。
练习2:从键盘输入一字符,若为英文字符则原样 输出,若为数字字符则输出其ASCII码值
4.4 if语句及嵌套if语句
4.4.3 if-else语句—双分支 1. 语句形式: if (表达式) {语句块1} else {语句块2} 2.说明: 如果表达式的值为“真”,则执行语句块1; 如果表达式的值为“假”,则执行语句块2; 如果语句块中只有一条语句,则大括号“{ }”可以省略。
4.3 条件运算符和条件表达式
注意事项:
(1)表达式2和表达式3不仅可以是数值表达式,还可以是赋值表达式 或函数表达式。 例如: a>b?(a=100): ( b=100) a>b?printf(“%d”,a):printf(“%d”,b); (2)表达式2和表达式3的类型可以不同,低级别要向高级别的转换
printf(“y=%d\n”,y);
}
4.4 if语句及嵌套if语句
思考与实践:请画出如下程序的流程图
main() {int x; scanf(“%d”,&x); if (x>=80) if (x>=90) (printf(“优秀\n”); else printf(“良好\n”); else if (x>=70) printf(“中等\n”); else if (x>=60) printf(“及格\n”); else printf(“不及格\n”); printf(“y=%d\n”,y); }
4.2 逻辑运算符和逻辑表达式
何为逻辑?
思考1:如何判断变量x的值是否在[5~10]之外?
C语言程序设计第4章 选择结构程序设计-2018
![C语言程序设计第4章 选择结构程序设计-2018](https://img.taocdn.com/s3/m/e620b1d4bcd126fff6050ba0.png)
(x<0&&y<0&&z>=0)|| (x>=0&&y<0&&z<0)|| (x<0&&y>=0&&z<0)
(2) x和y中至少有一个小于z。
设x、y、z均为int型变量,则对应表达式为: (x<z)||(y<z)
注意
– 可等价于一条语句 – 可以嵌套使用
• 格式
{ <语句序列> { <语句序列> } <语句序列>
}
4.3.2 复合语句
• 【例4-2】迪士尼门票规定65周岁及以上的老 年人,平日票价为280元,高峰日票价为375元。
– 语句1为内嵌语句,只允许是一条语句,可以是简单的语句、复合 语句或者另一个if语句等
• 执行过程
– 先求解表达式
– 如果表达式的值为“真”,则执行语句1
– 否则,如果表达式的值为“假”,则什么都不做
4.3.2 复合语句
• 复合语句
– 用一对大括号将一组语句序列括起来,通常可以出现在允 许单条语句出现的地方
第4章 选择结构程序设计
目录
4.1 门票价格问题 4.2 条件的表示 4.3 单分支结构 4.4 双分支结构 4.5 多分支结构 4.6 综合案例 练习 4
问题
– 如果今天下雨,我就不去植物园 – 鱼与熊掌不可兼得 – 同样一件衣服,京东、天猫、唯品会、
官网、实体店都有售,价格、送货时间、 品质保障、优惠方式等各不同,到底选 择买哪一家的呢 – 复杂决策问题
第4章 C语言程序的基本控制结构
![第4章 C语言程序的基本控制结构](https://img.taocdn.com/s3/m/96cbd44de45c3b3567ec8bae.png)
#include<stdio.h> main() { int c1,c2; scanf("%c",&c); c1=c-1;c2=c+1; printf("%c%4c%4c\n",c1,c,c2); printf("%d%4d%4d\n",c1,c,c2); }
4.2 顺序结构
运行结果:
4.3选择结构
入口
入口
A 语句1 B
真
表达 式
假
条件 语句2 循环体
出口
图4.1 顺序结构
出口 出口
图4.2 选择(分支)结构 图4.3 循环结构
上述三种基本控制结构的共同特定是具有单入口和单出口。 还有一种goto语句,又叫转向语句,在本章的4.4.5小节中将会讲解到。 我们在编写程序时,力求使用前三种基本结构语句。
4.3选择结构
例4.3 幼儿园里三个小朋友站队要求小个站在前面,高个站在后面。 分析:我们可以把个子最小的小朋友放在a位置上,较高的小朋友放在b位 置上,个子最高的小朋友放在c位置上。输入三个数,a,b,c,要求按由小到 大的顺序输出。先比较a和b,若a大于b,则a与b对换,再比较a和c,若a 大于c,则a与c对换,这时a的值是最小的,最后比较b和c,若b大于c,则b 与c对换。这样操作之后就使a<b<c的关系成立。然后顺序输出a,b,c既可。
! 逻辑非,单目运算符,自右至左结合。其运算规则是:当 运算量为0,运算结果为1;反之,当运算量为1,运算结果为0。 && 逻辑与,双目运算符,自左至右结合。其运算规则是: 只有当运算符两边的运算量都是非0时,运算结果才为1,否则为0。 || 逻辑或,双目运算符,自左至右结合。其运算规则是:只 要运算符两边的运算量有一个为为非0,运算结果就为1。只有两 个运算量都为0,结果才是0。 这三个运算符的优先级,逻辑非!最高,逻辑与&&次之,逻 辑或||最低。!(逻辑非)的优先级高于算术运算符和关系运算符, 而&&(逻辑与)和||(逻辑或)的优先级低于算术运算符和关系运算符。 由 此可见: a>b&&c>d 相当于 (a>b)&&(c>d) a= =0||b= =0 相当于 (a= =0)||(b= =0) !a&&b= =c 相当于 (!a)&&(b= =c)
C语言程序设计实例教程(第2版)丁爱萍第4章 选择结构程序设计_百度文库
![C语言程序设计实例教程(第2版)丁爱萍第4章 选择结构程序设计_百度文库](https://img.taocdn.com/s3/m/950afd250722192e4536f625.png)
本文由xjsir2010贡献 ppt文档可能在WAP端浏览体验不佳。
建议您优先选择TXT,或下载源文件到本机查看。
第4章 选择结构程序设计 章 第4章 选择结构程序设计 章 4.1 关系运算符及其表达式 4.2 逻辑运算符及其表达式 4.3 条件运算符 4.4 单条件选择if语句 单条件选择 语句 4.5 开关分支 开关分支switch语句 语句 习题4 第4章 选择结构程序设计 章 4.1 关系运算符及其表达式 关系表达式是由关系运算符连接表达式构成的。
1. 关系运算符 1) 关系运算符 关系运算符都是双目运算符,共有如下6种: >,<,>=,<=,==,!= 分别是大于、小于、大于或等于、小于或等于、 等于和不等于。
第4章 选择结构程序设计 章 2) 运算符的优先级和结合性 前4种关系运算符的优先级别相同,后2种也相同,前4 种高于后2种。
关系运算符具有自左至右的结合性。
关系运算符、算术运算符和赋值运算符之间的优先级次序 为:算术运算符优先级最高,关系运算符次之,赋值运算 符最低。
2. 关系表达式 1) 关系表达式 由关系运算符组成的表达式称为关系表达式。
关系运算符两边的运算对象可以是C语言中任意合法 的表达式。
例如,x>y,(x=5)<=y,x==y等。
第4章 选择结构程序设计 章 2) 关系表达式的值 关系表达式的值是整数0(代表结果为逻辑假)或 1(代表结果为逻辑真),在C语言中不存在专门的“逻 辑值”,此处请读者务必清楚。
例如,关系表达式 (x=3)>(y=4)的值为0。
关系表达式常用在条件语句和循环语句中。
3) 举例 一般情况下,关系表达式用在选择结构或循环结 构的关系判断中,并不需要输出关系表达式的值,这 里我们为了了解关系表达式的内部运行机制,在例4-1 中可以看到关系表达式的值只能是0或1。
第4章 选择结构程序设计 章 【例4-1】关系表达式示例。
#include "stdio.h" main( ) { char x='m' , y='n' ; int n ; n=x<y ; printf("%d\n" , n) ; n=x==y-1 ; printf("%d\n" , n) ; n=('y'!='Y')+(5<3)+(y-x==1) ; printf("%d\n" , n) ; } 第4章 选择结构程序设计 章 运行结果: 1 1 2 通过上面的程序可以看出:关系运算的结果为 “真”时,值等于1;结果为“假”时,值等于0。
第四章 分支结构的C程序设计39页PPT文档
![第四章 分支结构的C程序设计39页PPT文档](https://img.taocdn.com/s3/m/a40e6af94028915f804dc275.png)
4.1.3 逻辑表达式
7
熟练掌握关系运算符和逻辑运算符,可以用逻辑表达式表 示一个复杂的条件。例如:判断某年y是否是闰年。y满足二者 之一为闰年:
(1)y能被4整除,但不能被100整除; (2)y能被400整除。 两个条件为或(||)的关系,条件(1)内的两个条件为与 (&&)的关系。判断整除用求余运算%,余数为0,则能整除。 表达式写成: (y % 4= =0 && y % 100 ! = 0 )|| y % 400 = = 0
4.2.1 if语句的简单形式
9
if语句的简单格式 if (表达式) 语句
可为算术、关系、逻辑、赋值 等表达式
内嵌语句,可为:
赋值语句 函数调用语句 控制语句 复合语句 空语句
功能:
– 计算表达式的值,如果是一个非0值(即 逻辑真),就执行内嵌语句,否则(即逻 辑假)跳过内嵌语句,顺序执行后续语句。
逻辑表达式的值也是一个逻辑值(非“真”即“假”)。
逻辑表达式求解,在值已能确定的情况下不一定求到最后。 如:
(1)表达式a && b && c: 当a=0时,表达式的值为0,不必计算判断b、c; 当a=1,b=0时,表达式的值为0,不必计算判断c; 只有a=1,b=1时,才判断c; (2)表达式a || b || c: 当a=1(非0)时,表达式的值为1,不必计算判断b、c; 当a=0时,才判断b,如b=1,则表达式的值为1,不必计算 判断c; 只有a=0,b=0时,才判断c;
C 程序设计
第四章 分支结构的C程序设计
山西大同大学 物电学院
本章主要内容
2
4.1 分支结构中的表达式 4.2 if语句
第4章 分支结构程序设计
![第4章 分支结构程序设计](https://img.taocdn.com/s3/m/9055dc40b307e87101f6967f.png)
4.1 分支结构的设计思想 4.2 实现分支结构判断条件的构成 4.3 实现分支结构程序设计的语句 4.4 分支结构程序设计举例
4.1 分支结构的设计思想
根据不同的条件,执行不同的程序流程,这就形成了所谓 的“分支”结构。 分支结构程序的设计要考虑两个方面的问题: –判断条件 判断条件是分支结构设计的关键。一个判断条件的结果只 有两种可能:条件成立和条件不成立,并由此决定了程序流程 的走向。 –实现分支结构语句的构成及选择 分支结构程序的设计就是要正确描述判断的条件,并将其 与要实现的具体工作放在分支结构语句中,实现要完成的处理。 。
首页 上一页
4.2 实算符及其优先顺序
表4.1是关系运算符种类、功能及优先级别顺序。 • 关系运算符优先级低于算术运算符,高于赋值运算符 • 关系运算符 >=、<=、==、!=在书写时,不要用空格将 其分开,否则会产生语法错误。
–关系表达式
4.3 实现分支结构程序设计的语句
• if语句
–if语句的简单形式
if(表达式) if(表达式) 语句 语句的执行过程见图4.2: 例4.2
–if语句标准形式
if(表达式) 语句1 if(表达式) 语句1 语句2 else 语句2 语句的执行过程见图4.3: 例4.3 首页 上一页
–if语句的嵌套形式
例4.5
– 关于Switch结构的注意事项:
• switch后表达式的类型,一般为整型、字符型或枚举 类型。 • 每个case后面常量表达式的值必须互不相同。 • 把default放在最后是一种良好的程序设计习惯。 • 多个case可共有一组执行语句。 • case后常量表达式仅起语句标号的作用,并不进行条 件判断。 • switch语句中仅需执行一个分支时,须在该case后面 的语句中加上break语句,让其跳出switch结构。 • 当case后包含多条执行语句时,可以不用花括号括起 来,系统会自动识别并顺序执行所有语句。 上一页
第04章 分支结构
![第04章 分支结构](https://img.taocdn.com/s3/m/82bb95d980eb6294dd886cb1.png)
第 4 章
分支结构
该程序执行的过程是: 判断商品数量,
数量大于等于50,执行语句A;
数量小于50,执行语句B。 你能画出这个程序的流程图吗?
第 4 章
【注意】
分支结构
(1)if后面的<表达式>一定要有括号。
(2)if和else同属于一个if语句,程序中不可以没有if而
只有else。 (3)if子句与else子句不可能同时执行。 (4) if语句中的各子句必须用分号结束,若子句是由多 个语句组成,必须写成复合语句(用{ }括住),“}”
分支结构
( x 0) ( x 0) ( x 0)
/*不嵌套的if 语句*/ if (x<0) y= -1; if (x= =0) y=0; if (x>0) y=1;
第 4 章
注:
分支结构
1) 复合语句本身是一个完整的语句,它不以 分号作为结束符。“}”后加了分号相当于多 了一个空语句。对这种情况,有时对程序 流程没有影响,但有时会改变程序流程。
2) 复合语句内通常有多个语句,但它整体上 是作为一个语句看待。
3) 在程序中凡是可以出现语句的地方都可以 使用复合语句。它通常出现在控制语句 (选择、循环)中作为子句或循环体。
后不能再加“;”
(5)if语句的表达式可以是任意类型的C语言的合法表 达式,其值为表示“假”,其值为非0时表示
第 4 章
例1:
分支结构
if (a>b) printf(“%d\n”,a); printf(“%d\n”,b); 不同于 if (a>b) {printf(“%d\n”,a); printf(“%d\n”,b);}
第 4 章
运行结果:
第04章 程序的控制结构
![第04章 程序的控制结构](https://img.taocdn.com/s3/m/7f0d240cbed5b9f3f90f1c26.png)
第 4 章
程序的控制结构
计算机中的问题求解过程
Example :银行定期存款 已知年利率rate,存款期为n年,本金为capital,n年后得 到的本利之和是多少?
Input
• 存款年数 • 本金 •利率
Process
deposit = capital* (1+rate)n
Output
deposit
Page 3
C语言程序设计
第 4 章
程序的控制结构
算法的概念及其描述方法
一个程序应包括两个方面的内容:
对数据的描述:数据结构(data structure) 对操作的描述:算法(algorithm)
著名计算机科学家沃思提出一个公式:
数据结构 + 算法 = 程序
计算机中的算法( Algorithm )
}
_ 15 Input a,b: 20
没有输入或有多个输入 有一个或多个输出
计算机与信息工程学院
Page 5
C语言程序设计
第 4 章
程序的控制结构
算法的描述方法
自然语言描述
传统流程图(Flowchart)
在1966年,Bohra 与 Jacopini 提出
N-S结构化流程图
1973年,美国学者I.Nassi 和 B.Shneiderman 提 出
为解决一个具体问题而采取的确定的有限的操作
步骤,仅指计算机能执行的算法。
计算机与信息工程学院
Page 4
C语言程序设计
第 4 章
程序的控制结构
算法的特性
有穷性 在合理的时间内完成 确定性,无歧义
C语言程序ppt课件ch4 选择结构
![C语言程序ppt课件ch4 选择结构](https://img.taocdn.com/s3/m/5ebd173d0b1c59eef8c7b4ea.png)
功能: 判断表达式的值,若为非0,再判断表达式1的 值,非0执行语句11,否则执行语句12
若表达式的值为0,再判断表达式2的值,非0 执行语句21,否则执行语句22
共 39 页 第 22 页
思考
下列程序段表示的数学式子?
y=-1;
if (x!=0)
{if (x>0) y=2*sin(x);}
else y=0;
main( )
{
char c;
c=getchar( );
if(c= ='+ ') printf(" plus\n "); else if(c= = ' - ') printf(" minus\n ");
else if(c= = ' * ') printf(" multiplication\n ");
第四章
共 39 页 第 1 页
本章要点: • 正确使用关系表达式和逻辑表达式 • 掌握用if语句和switch语句实现选择结构 • 掌握条件运算符的使用
共 39 页 第 2 页
为什么要用选择结构?
根据学生分数判断是否及格 根据学生分数如何进行分级 一元二次方程求解
如何解决?
自然语言:如果… 那么… 否则…
if(x<0) y=-1; elห้องสมุดไป่ตู้e if(x== 0) y=0;
else y=1; printf(“x=%d, y=%d\n”, x, y); }
共 39 页 第 25 页
例4-3从键盘输入一个字符,当该字符是+、 - 、*、/时, 显示对应的英文单词,否则显示Error!。
第四章 选择(分支)结构程序设计
![第四章 选择(分支)结构程序设计](https://img.taocdn.com/s3/m/482cf03fd15abe23492f4d96.png)
用一个逻辑表达式来表示一个复杂的条件。
例如:判断某一年是否闰年。 闰年:能被4整除,但不能被100整除;或能被 400整除。
(year%4==0&&year%100!=0)||year%400==0
表达式为“真”,闰年条件成立,是闰年,否则 非 闰年。
复合语句的形式:
{ 语句1; 语句2; 语句3; ……
}
4.3 if语句
4.3.1 if语句三种形式
复合语句在选择结构,循环结构中经常用到。 我们在逻辑上把复合语句看成是一条语句。
4.3 if语句
4.3.1 if语句三种形式
例:要求用户输入一个实数,然后求出这个实数 的绝对值。
4.3 if语句
逻辑运算的真值表:
a b a&&b
a||b
真真 真
真
真假 假
真
假真 假
真
假假 假
假
a
!a
真
假
假
真
4.2 逻辑运算符和逻辑表达式
4.2.1 逻辑运算符及其优先顺序
例:逻辑运算举例 a&&b 若a、b为真,则a&&b为真。 a||b 若a、b之一为真,则a||b为真。 !a 若a为真,则!a为假,反之若a为假,
4.3.1 if语句三种形式
▪ 在C语言中,表达式P的值是非0时,系统均按真 值处理。
例(1) if (‘a’) printf(“ok!”); (2) x=-5; if(x) printf(“ok!”); (3) y=0; if(y==0) printf(“ok!”); if(y) printf(“ok!”);
第4章 C语言选择结构程序设计
![第4章 C语言选择结构程序设计](https://img.taocdn.com/s3/m/d12654343968011ca3009118.png)
《 C语言程序设计》
流程图
真 (非0) 表达式
假(0)
语句1
语句2
《 C语言程序设计》
例4.1
【例4.1】试用if…else语句编写程序,判断学生成绩 是否合格。
判断方法: ①如果成绩大于等于60,输出及格 ②否则输出成绩不及格
《 C语言程序设计》
4.2 if语句 if语句
C语言中if条件语句有三种结构形式,分别是: if结构(单分支结构) if if-else if-else结构(双分支结构) if-else-if结构 (多分支结构) if-else-if
《 C语言程序设计》
例4.5 设计一个应用程序,判断某一年是否为闰年
判断方法: ①如果该年能被4整除而不能被100整除,则为闰年; ②或者能被400整除也是闰年。 如: 1996年、2000年是闰年 1996年 2000年是闰年
1998年 1900年不是闰年 1998年、1900年不是闰年
逻辑表达式为: year%4==0 && year%100!=0 || year%400==0
4.4 条件运算符和条件表达式
条件运算符: 1、条件运算符:?:是C语言中惟一的一个三 目运算符。 一般形式为: 2、一般形式为: 表达式1 ? 表达式2 : 表达式3 3、操作过程:如果表达式1成立,则表达式2的 操作过程: 值就是此条件表达式的值;否则,表达式3 的值是此条件表达式的值。
《 C语言程序设计》
《 C语言程序设计》
4.2.2 if-else结构 if-else结构
1、格式: if(条件表达式 语句1 条件表达式) if(条件表达式) 语句1; 真 (非0) else 语句2; 语句 ; 语句1 2、执行过程:
C第2版(第4章_分支结构)
![C第2版(第4章_分支结构)](https://img.taocdn.com/s3/m/93484207844769eae009eda2.png)
天 气 晴 天 有风无雨 下 雪 下 雨 其他天气 活动内容 登 山 郊 游 堆雪人 不举行班级活动 参观博物馆
分析:
①分别用整数1、2、3、4代表晴天、有风无雨、下雪和下雨 这4种天气情况。 ②通过输入天气情况weather的值,来确定活动场所。
第4章 分支结构
第4章 分支结构
本章主要内容
1. if语句的基本结构
2.if~else语句基本结构
3. if语句的嵌套结构
4. switch语句的基本结构
5.程序案例分析
第4章 分支结构
顺序结构:程序按照语句的先后顺序进行数据处理。 分支结构:程序要对问题进行判断,根据判断的结 果,选择不同的处理方式,进行不同的操作。 C语言用于实现分支的结构: if结构 switch结构 4.1.1 if语句 if语句结构是一种常用的分支结构,是最简单的一 种单分支结构,该结构构成一个二叉结构。
4.2 switch结构
开始
算法流程图如图所示:
程序: example4_8.c
输入weather的值
weather==1
T 输出活动内容:登山 T 输出活动场地:郊游 T 输出活动内容:堆雪人 T 不举行班级活动
结论:
①程序不完全正确; ②不能正确表达每一种情况。 存在的问题: 程序不能正确分支; 解决方案: 使用分支语句break。
4.2 switch结构
开始 输入字符变量ch的值
ch=='a' F ch=='A' F ch=='f' F ch=='F' F ch=='r' F ch=='R' F T T T T T T
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
据表中所示的天气情况来决定:
天气 晴天 有风无雨 下雪 下雨 其他天气
活动内容 登山 郊游 堆雪人
不举行班级活动 参观博物馆
分析:
①分别用整数1、2、3、4代表晴天、有风无雨、下雪和下雨 这4种天气情况。
②通过输入天气情况weather的值,来确定活动场所。
4.2 switch结构
算法流程图如图所示: 程序: example4_8.c 结论:
程序的难点:交换a,b的值。 程序见:example4_1.c
例2:从键盘输入一个整数, 求该数的绝对值。
阅读例4-2的问题和程序。
开始 定义浮点型变量 a, b 输入变量的值 a, b
a>b
F
T 交换 a, b 的值
输出 a, b 的值
结束
4.1 if结构
4.1.2 if_else语句
if_else语句的一般形式为:
4.2 switch结构
if语句适合两种分支情况进行选择。 如果多种分支的情况,可采用嵌套的if语句结构。
存在的问题: 当嵌套的分支较多时,程序的效率和可读性降低。 解决方案:用switch结构处理多路分支的情形。
4.2 switch结构
4.2.1 switch语句 switch语句的一般形式为:
4.2 switch结构
switch语句一般 形式的流程图如 图所示:
计算表达式
表达式的值==常量表达式1 F
表达式的值==常量表达式2 F
表达式的值==常量表达式i F
表达式的值==常量表达式n F
语句序列n+1
T 语句序列1
T 语句序列2
T 语句序列i
T
语句序列n
4.2 switch结构
例6:某班级准备周末举行一个班级活动,但活动内容要根
4.1 if结构
算法流程图如图所示: 虚线框代表if_else结构。 程序:example4_3.c 思考:
怎样获取计算机的真随 机数? 修改程序example4_3.c : example4_3a.c
4.1 if结构
4.1.3 if语句的嵌套
在if或else的分支下又可以包含另一个if语句或if_else语句。 嵌套的形式有两种:规则嵌套和任意嵌套。 1.规则嵌套
break; break; break;
其程序: example4_10.c
开始
4.3 程 序 范 例
例9:求解一元二次方程ax2+bx+c=0的根(a≠0),a、b、c
均为实数,其值由键盘输入。
分析:一元二次方程的一般解为:
x1 x2
b
b2 4ac 2a
其中a的值不能等于0,否则方程无解。
方程的求解需要考虑以下3种情况:
① b2−4ac>0,方程有两个不等的实根:
x1 x2
b
b2 4ac 2a
4.3 程 序 范 例
② b2−4ac=0
开始
方程有两个相等的实根:
x1
x2
b 2a
提示输入错误
③ b2−4ac<0
输入a,b,c的值
T
F
a==0
计算s=b*b-4*a*c
①程序不完全正确; ②不能正确表达每一种情况。 存在的问题: 程序不能正确分支; 解决方案: 使用分支语句break。
开始 输入weather的值
weather==1 F
weather==2 F
weather==3 F
weather==4 F
输出活动内容: 参观博物馆 结束
T 输出活动内容:登山 T 输出活动场地:郊游 T 输出活动内容:堆雪人 T
4.1 if结构
算法的流程图如图所示: 两个虚线框均为if_else结构。
程序:examle4_5.c
请思考规则嵌套的算法, 并写出程序上机验证。
4.1 if结构
注意
对多重if_else结构,最容易出现问题的是if与 else配对错误。 阅读程序:example4_6.c 、example4_7.c 思考if与else的配对关系。
不举行班级活动
4.2 switch结构
4.2.2 break语句在switch语句中的作用 break语句起中断和跳出的作用。
可以用在switch分支语句和循环语句中。 使用方法:
在switch语句中,在需要独立执行的<语句序列i> 后面加上一条分支语句:break; switch条件分支互相独立的语句形式为:
伪随机数:实际上是一组预先排好的一个数列,可通 过函数rand()获取;
真随机数:通过一个随机种子对伪随机数进行重新排 列而得,该随机种子可以是任何数。如果取时间作为 随机种子,则所得的随机数即为真随机数,真随机数 可通过函数srand(unsigned seed)获取。 为简单起见,本题由计算机产生的数就用随机函数 rand()直接取伪随机数。
T
<表达式>
F
if(<表达式>)
<语句A>
语句 A
语句 B
else
<语句B>
式中<表达式> ,一般为条件表达式或逻辑表达式。
语法功能:
先判断<表达式>的值,若其值为“真”,
则执行<语句A>,否则执行<语句B>。
注意:
结构中的<表达式>、<语句A>与<语句B>的规定同if结构。
if_else结构的流程图如图所示。
规则嵌套的形式为:
if(<表达式1>) <语句1>
else if(<表达式2>) <语句2>
else if (<表达式3>) <语句3>
… else if (<表达式n>)
<语句n>
else <语句n+1>
4.1 if结构
规则嵌套的流程图如图所示:
4.1 if结构
例4:从键盘输入+、−、*、/中的任一个,输出对应的英文单 词:plus、minus、mutiply、divide,若输入的不是这4个 字符中的任一个,则输出“Sorry you are wrong”。
算法的流程图如图所示: 程序:example4_4.c 程序
4.1 if结构
注意
1. 在if_else嵌套的结构中,else总是与离它最近的 上一个if配对。
2. 程序的书写可按缩进对齐方式,增加程序代码的 美观和程序的可读性。
3. if_else结构的嵌套层次不提倡太多,否则会影响 程序的执行效率,并且容易出现判断上的漏洞, 导致程序出现不正确的结果。
switch(<表达式>) {
case<常量表达式1>:语句序列1; case<常量表达式2>:语句序列2; … case<常量表达式n>:语句序列n; default:语句序列(n+1); }
4.2 switch结构
注意: (1) <常量表达式i>的值必须是整型、字符型或者枚举类型; (2) 语句序列i允许有多条语句,不需要将语句序列用一对花括号
4.1 if结构
例3:设计一个猜数游戏,由计算机产生一个随机数 magic,从键盘输入一个数guess,若输入的数guess 的大小等于随机数magic,则输出“Gratulation! You Are right.”。否则,输出“Sorry! You Are Wrong.”。
分析:计算机产生的随机数有两种: ①伪随机数。②真随机数。
4. 良好的程序书写风格有助于对程序的理解,请注 意程序的书写风格,养成良好的编程习惯。
4.1 if结构
2.任意嵌套 任意嵌套是在if_else结构中的任一执行框中插入if
结构或if_else结构。 例5: 编写程序,通过输入x的值,计算阶跃函数y
的值。
1 y 0
1
x0 x0 x0
第4章 分支结构
第4章 分支结构
本章主要内容
1. if语句的基本结构 2.if~else语句基本结构 3. if语句的嵌套结构 4. switch语句的基本结构 5.程序案例分析
第4章分支结构
顺序结构:程序按照语句的先后顺序进行数据处理。 分支结构:程序要对问题进行判断,根据判断的结
果,选择不同的处理方式,进行不同的操作。
T
S>0
F
方程有两个共轭复根:
x1 x2
b 2a
4ac b2 i
2a
计算两实根: x1=(-b+sqrt(b*b-4*a*c))/(2*a) x2=(-b-sqrt(b*b-4*a*c))/(2*a)
T
F
s==0
输出两不等实根
计算两实根: x1=x2=b/(2*a)
输出两相同实根
括起; (3) <表达式>可以为任何表达式。 (4) switch语句的语法规则是: ①先计算<表达式>的值; ②再依次判断与哪一个<常量表达式i>的值相等; ③若<表达式>的值等于<常量表达式i>的值, ④则:从语句序列i开始执行语句,直到语句序列(n+1)为止; ⑤若<表达式>的值不等于任何一个<常量表达式i>的值, ⑥则:执行default后面的语句序列(n+1)。
switch结构的灵活应用: 可根据实际应用的需要,将两种不同形式的 switch结构组合起来。