第4章 选择结构程序设计

上一页 下一页
4.3 switch语句
switch是实现多分支结构的典型语句
switch(表达式) { case 常量表达式1:语句段1; [break;] case 常量表达式2:语句段2 ; [break;] ....… case 常量表达式n:语句段n ; [break;] default : 语句段n+1 ; [break;] }
2. 输入:b 3. 输入:c 上一页 下一页 输出:c101 输出:101
4.3.3在switch中部分分支使用break
根据输入的学生的成绩判断等级。当成绩score ≥90时为 A等; 成绩70≤score <90 为B等; 成绩60≤score <70 为C 等; 成绩score < 60 为D等 (score 为整数)。 分析: 设score为整型数,利用两个整数相除,结果 自动取整的特性,score和 score /10 有如下对应 关系: score score/10 90以上 10, 9 70~89 7,8 60~69 6 60以下 5,4,3,2,1,0 因此,可以用score /10的值来确定分支。
上一页
下一页
4.2.2计算分段函数
#include <stdio.h> main( ) { double x, y; printf("Enter x (x>=0):\n"); scanf("%lf", &x); if(x <= 15) y = 4 * x / 3; else y = 2.5 * x - 10.5; printf("f(%lf) = %.2lf\n", x, y); }
表达式的值=常量表达式 1 的值 表达式的值=常量表达式 2 的值 语句段2 表 达 式 表达式的值=常量表达式 n 的值 语句段n 语句段1
switch (choice) { case 1: price=3.0; case 2: price=2.5; case 3: price=4.0; case 4: price=3.5; default: price=0.0; }
第4章 选择结构程序设计
主讲:霍炜
学习内容
4.1 什么是选择结构
4.2
4.3 4.4
if…else… 语句
switch语句 选择结构的嵌套
上一页
下一页
学习目标和基本要求:
理解选择结构 学会if语句和switch语句 选择结构的嵌套
学习重点:
if语择结构
if( a>='A'&&a<='Z'||a>='a'&&a<='z’ ) printf("%c\n",a+3); else printf("Illegal input!\n"); }
上一页 下一页
4.2.5if…else…小结
省略else的形式:
if (表达式) 语句; if (表达式) { 语句; 语句; ……}
上一页 下一页
4.2.2计算分段函数
1 f ( x) x 0
x0 x0
if(x != 0) y = 1/x; else y = 0;
上一页 下一页
4.2.2计算分段函数
#include <stdio.h> main( ) { double x, y; Enter x: 2.5 f(2.50)=0.4
# include <stdio.h> main( ) { char operator; double value1, value2; printf("Type in an expression: "); scanf("%lf%c%lf", &value1, &operator, &value2); switch(operator){ case '+': printf("=%.2f\n", value1+value2); break; case '-': printf("=%.2f\n", value1-value2); break; case '*': printf("=%.2f\n", value1*value2); break; case '/': 思考: printf("=%.2f\n", value1/value2); break; 如果除数为0? default: printf("Unknown operator\n"); break; } Type in an expression: 3.1+4.8 } =7.9 上一页 下一页
printf("Enter x:\n"); scanf("%lf", &x); Enter x: if(x != 0) 0 y = 1/x; f(0.00)=0.0 else y = 0; printf("f(%.2lf) = %.1lf\n", x, y); }
上一页 下一页
4.2.2计算分段函数
price=?
其他
语句段n+1
上一页
下一页
4.3.3在switch中部分分支使用break
分析程序:
#include<stdio.h> main( ) { char i; scanf(“%c”,&i); switch(i) { case „a‟: i++;printf(“%c”,i);break; case „b‟: i++;printf(“%c”,i); default: i=i+2;printf(“%d”,i); } 输出:b 1. 输入:a }
表达式


语句组
说明:1. 表达式的值为真或假,必须用( )括住 2. 若有多条语句(复合语句)时,用{ }括住。 3. (条件表达式)后不要加;
上一页 下一页
4.2.5if…else…小结
if语句的完整形式:
表达式

if (表达式) 语句组1 else 语句组2

语句组1
语句组2
if语句,在语法上视为一条语句。
上一页 下一页
4.3.3在switch中部分分支使用break
#include <stdio.h> 思考1:如果要求 main( ) { int score; 成绩为实型数据? scanf("%d" ,&score); 思考2:如果成绩 switch (score /10) 输入超出范围? { case 10: case 9: printf("%d: A\n", score);break; case 8: case 7: printf("%d: B\n", score);break; case 6: printf("%d: C\n", score);break; default: printf("%d: D\n", score); } }
如何去罗马? 有哪些路?走哪条路?

上一页
下一页
4.1
什么是选择结构
计算分段函数
x<0 Y y=3-x N y=2x N-S图 C语言中用选择语句来实现这一判断。算法N-S图如 右上图所示。
上一页
下一页
4.1
什么是选择结构
C语言中实现选择结构的语句有两条: if…else… 语句 switch 语句
上一页 下一页
4.2.4简单字符加密
输入一个字母,将其转变为字母表中后面的第三 个字母,并输出。如,输入’a’,则转变为’d’.
算法分析:
(1) 输入一个字符;
(2) 如果该字符是字母,则进行转换;
(3) 输出转换后的字母。
上一页 下一页
4.2.4简单字符加密
main( ) {char a; scanf("%c",&a);
表达式的值=常量表达式 1 的值
表达式的值=常量表达式 2 的值 语句段2 表 达 式 表达式的值=常量表达式 n 的值 语句段n 其他 语句段n+1 break break break
switch (choice) { case 1: price=3.0; break; case 2: price=2.5; break; case 3: price=4.0; break; case 4: price=3.5; break; default: price=0.0; break; }
break
语句段1
上一页
下一页
4.3.1在switch中每个分支都使用break 用switch实现一个简单计算器
输入一个形式如“操作数 运算符 操作数 ”的四则运算表达式,输出运算结果。 例如: 输入:3.1+4.8 输出:7.9
上一页 下一页
4.3.1在switch中每个分支都使用break
上一页 下一页
4.2.3两个数据排序
输入两个数,按照从大到小的顺序输出。
算法分析:
(1) 输入两个数据到a,b ;
(2) 如果a<b 则交换a,b的值,否则不交换;
(3) 输出a,b的值。
上一页 下一页
4.2.3两个数据排序 #include <stdio.h> main( ) { float a, b,t; scanf(“%f,%f”,&a, &b); if (a<b) {t=a;a=b;b=t;} printf (“%f,%f\n”,a, b); }
合集下载

第4章 选择结构程序设计

第4章 选择结构程序设计
(1)if语句,实现两个分支的选择结构
(2)switch语句,实现多分支的选择结构
4.1 选择结构和条件判断
例4.1 在例3.5的基础上对程序进行改进。题目要求
2 求 ax bx c 0 方程的根。
由键盘输入a,b,c。假设a,b,c的值任意,并不保证
b2 4ac 0
b2 4ac 0 。需要在程序中进行判别,如果
例4.3 输入3个数a,b,c,要求按由小到大的顺序输出。
解题思路:可以先用伪代码写出算法: if a>b,a和b对换 if a>c,a和c对换 if b>c,b和c对换 顺序输出a,b,c (a是a、b中的小者) (a是三者中最小者) (b是三者中次小者)
#include <stdio.h> int main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a>b) { { { if(a>c) if(b>c) 如果 a>b,将a和b对换 } } } a是a、b中的小者 t=a; a=b; b=t; t=a; a=c; c=t; t=b; b=c; c=t;
a>b ? printf(“%d”,a): printf(“%d”,b);
4.5 条件运算符和条件表达式
例4.4 输入一个字符,判别它是否大写字母,如果是, 将它转换成小写字母;如果不是,不转换。然后输出最 后得到的字符。 解题思路:用条件表达式来处理,当字母是大写时,转 换成小写字母,否则不转换
if (disc<0) printf("This equation hav't real roots\n");

C语言程序设计第4章选择结构程序设计ppt课件

C语言程序设计第4章选择结构程序设计ppt课件

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语言第四章.选择结构程序设计

C语言第四章.选择结构程序设计

case 常量表达式n: 语句n; default : 语句n+1; }
语句的执行过程:
先计算表达式的值,并逐个与其后的常量表达式值相 比较; 当表达式的值与某个常量表达式的值相等时,即执行
其后的语句;
然后不再进行判断,继续执行后面所有case后的语句;
如表达式的值与所有case后的常量表达式均不相同时,
a+b>c && x+y<b 等价于 ((a+b)>c) && ((x+y)<b)
2)逻辑运算的值: 逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”
来表示。
反过来在判断一个量是为“真”还是为“假”时,以“0” 的数值代表“假”,以非“0”的数值代表“真”。
3)逻辑运算的规则:
(1)与运算&&
条件运算符和条件表达式
条件表达式通常用于赋值语句之中。 例如条件语句:
if(a>b) max=a;
else max=b; 可用条件表达式写为 max=(a>b)?a:b;
执行该语句的语义是:如a>b为真,则把a 赋予max, 否则把b 赋予max。
注意以下几点:
条件运算符的运算优先级 低于关系运算符和算术运算符,高于赋值符。 因此 max=(a>b)?a:b可以去掉括号而写为 max=a>b?a:b
注意:
(3) 在if 语句的三种形式中,所有的语句应为单个语句,
如果要想在满足条件时执行一组(多个)语句,则必须
把这一组语句用{ } 括起来组成一个复合语句。 例如:交换两个变量 if (a>b) { t= a; a=b; b=t; }

第4章_选择结构程序设计

第4章_选择结构程序设计

语句1
语句2
语句3
语句4
2013-5-19
图4-9 多分支选择结构
19
例4.5 :体型判断


按“体指数”对肥胖程度进行划分: 体指数t = w / h2 (体重w单位为公斤,身高h单位为米) – 当t < 18时,为低体重; – 当18 ≤ t < 25时,为正常体重; – 当25 < t < 27时,为超重体重; – 当t ≥ 27时,为肥胖。 编程从键盘输入你的身高h和体重w,根据给定公式计算体指 数t,然后判断你的体重属于何种类型。 用3种方法编程: – 算法1:用不带else子句的if语句编程 – 算法2:用在if子句中嵌入if 语句的形式编程 – 算法3:用在else子句中嵌入if 语句的形式编程
}
思考题

语句 if (0 == data2)的必要性 – 1998年11月《科学美国人》杂志,描述了美国导弹巡
洋舰约克敦号上的一起事故,除零错导致军舰推进系统 的关闭
取绝对 值函数 2013-5-19
如果要求程序能进行浮点数的算术运算,语句 if (0 == data2)还能用于比较实型变量data2和 常数0的大小吗? – if (fabs(data2) <= 1e-7) 如果要求输入的算术表达式中的操作数和运算符之 间可以加入任意多个空格符,那么程序如何修改? – scanf("%d%c%d", &data1, &op, &data2); – scanf("%d%1s%d", &data1, &op, &data2);

2013-5-19
13
if-else

C语言 第4章 选择结构程序设计

C语言 第4章 选择结构程序设计

#include <stdio.h> int main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a>b) 如果 a>b,将a和b对换 , 和 对换 是 、 中的小者 { t=a; a=b; b=t; } a是a、b中的小者 if(a>c) { t=a; a=c; c=t; } if(b>c) { t=b; b=c; c=t; } printf("%5.2f,%5.2f,%5.2f\n",a,b,c); return 0; }
if (disc<0) 8<0为假 为假 printf(“has not real roots\n”); else 的值变为-1 的值变为 { p=-b/(2.0*a); p的值变为 的值变为0.71 的值变为 q=sqrt(disc)/(2.0*a); q的值变为 x1=p+q; x1的值变为 的值变为-0.29 的值变为 x2=p-q; x2的值变为 的值变为-1.71 的值变为 printf(“real roots:\nx1=%7.2f\n x2=%7.2f\n”,x1,x2); } return 0; }
if (disc<0) printf(“has not real roots\n”); else { p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(“real roots:\nx1=%7.2f\n x2=%7.2f\n”,x1,x2); } return 0; 复合语句 }
C语言有两种选择语句: 语言有两种选择语句: 语言有两种选择语句 (1)if语句,实现两个分支的选择结构 语句, 语句 (2)switch语句,实现多分支的选择结构 语句, 语句

《C语言程序设计(第五版)》第4章选择结构程序的设计 PPT课件

《C语言程序设计(第五版)》第4章选择结构程序的设计 PPT课件

►(b*b-4*a*c)>=0
b*b-4*a*c>=0
►z= (x>y+3)
z= x>y+3
►(a>b)= = c
a>b= =c
►a=(b!=c)
a=b!=c
当然为提高程序的可读性、可维护性你不妨多使用 括号,因为C语言中的有些优先级很容易让你不小心犯 错。
C语言程序设计
第4章 选择结构程序设计
第10页
“>”的结果为“假”,即条件不成立。
C语言程序设计
第4章 选择结构程序设计
第5页
4.1 关系运算及关系表达式
4.1.1 关系运算符及其优先次序
运算符
含义
> 大于
优先级
结合性
>= 大于或等于 这些关系运算符等优
< 小于
先级,但比下面的优 先级高
左结合性
<= 小于或等于
== 等于 != 不等于
这些关系运算符等优 先级,但比上面的优 先级低
C语言程序设计
第4章 选择结构程序设计
第4页
4.1 关系运算及关系表达式
所谓“关系运算”实际上就是“比较运算”, 即将两个数据进行比较,判定两个数据是否符合 给定的关系。例如,
► “x>y+3”中的“>”表示一个大于关系运算。 ➢如果a的值是5,b的值是1,则大于关系运算
“>”的结果为“真”,即条件成立; ➢如果a的值是2,b的值是1,则大于关系运算
因为按照自左至右的结合方向,先执行关系运算
“a>b”得值为1(“真”),再执行关系运算“1>c”, 得值为0(“假”),因此y为0。
C语言程序设计

C程序设计(第五版)-第4章选择结构程序设计课后习题答案

C程序设计(第五版)-第4章选择结构程序设计课后习题答案1. 什么是算术运算?什么是关系运算?什么是逻辑运算?【答案解析】算熟运算:算术运算即“四则运算”,是加法、减法、乘法、除法、乘⽅、开⽅等⼏种运算的统称。

其中加减为⼀级运算,乘除为⼆级运算,乘⽅、开⽅为三级运算。

在⼀道算式中,如果有多级运算存在,则应先进⾏⾼级运算,再进⾏低⼀级的运算。

C语⾔中的算熟运算符包括:+、-、*、/、++、--、%等种类。

如果只存在同级运算;则从左⾄右的顺序进⾏;如果算式中有括号,则应先算括号⾥边,再按上述规则进⾏计算。

⽰例:$ (1 + 1)^{2} * 4+5 * 3$解析:1. 先进⾏括号内运算1+1,然后进⾏乘⽅运算得到结果4.2. 接下来与4相乘,得到结果163. 因为乘法优先级⼤于加法,因此先进⾏5*3,得到结果154. 最终相加得到结果31结果:31关系运算:关系的基本运算有两类:⼀类是传统的集合运算(并、差、交等),另⼀类是专门的关系运算(选择、投影、连接、除法、外连接等),⽽在C语⾔中,关系运算通常被认为是⽐较运算,将两个数值进⾏⽐较,判断⽐较结果是否符合给定的条件。

常见的关系运算符包括:<、<=、>、>=、==、!=等种类。

其中,前4种关系运算符(<、<=、>、>= )的优先级别相同,后2种(==、!=)也相同。

⽽前4种⾼于后2种。

例如, >优先于==。

⽽>与<优先级相同。

并且,关系运算符的优先级低于算术运算符,关系运算符的优先级⾼于赋值运算符(=)。

逻辑运算:在逻辑代数中,有与、或、⾮三种基本逻辑运算。

表⽰逻辑运算的⽅法有多种,如语句描述、逻辑代数式、真值表、卡诺图等。

⽽在C语⾔中,逻辑运算通常⽤于使⽤逻辑运算符将关系表达式或其它逻辑量连接起来组成逻辑表达式⽤来测试真假值。

常见的逻辑运算符包括:&&、||、!等种类&&:与是双⽬运算符,要求有两个运算对象,表⽰两个运算对象都成⽴,则结果为真,否则结果为假。

C语言程序设计实例教程(第2版)丁爱萍第4章 选择结构程序设计_百度文库

本文由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。

Ch04_选择结构程序设计



典型示例
求最大值 成绩等级 求方程解

作业/上机

作业(做在书上)

TP62 习题4:一、二、三 TP65 习题4:2,3,5,6

上机


4.1 关系表达式与逻辑表达式

关系运算符及优先级
4.1 关系表达式与逻辑表达式

关系表达式
用关系运算符将两个操作数(常量、变量或表达式)连 接起来,进行关系运算的式子,称为关系表达式。 例如,假设n1=5,n2=8,n3=10,则:

1)关系表达式n1==n2的值为0。 2)关系表达式n1<=n3的值为1。 3)关系表达式n1+n2>n3的值为1。 4)关系表达式n1== n2>n3的值等为0。

举例
if(a>b) max=a; else max=b;
<==>
max = (a > b) ? a : b
4.4 switch表达式

switch格式
switch (<表达式>) if (<表达式> == <数值1>) { <语句或语句组1>; case <数值1>: else if (<表达式> == <数值2>) [<语句或语句组1>;] <语句或语句组2>; <==> case <数值2>: …… [<语句或语句组2>;] else …… <语句或语句组>; [default: <语句或语句组>;] }

例:设a=4,b=5: !a的值为0 a || b的值为1 4 && 0 || 2的值为1

第4章选择结构程序设计


8 t
4.3 if语句 #include <stdio.h> int main() { int a,b,c,t; scanf(“%d,%d,%d”,&a,&b,&c); if(a>b) {t=a;a=b;b=t;} if(a>c) {t=a;a=c;c=t;} if(b>c) {t=b;b=c;c=t;} printf(“%d,%d,%d \n”,a,b,c); return 0; }
a≥b且a≥c 最大值为a
b≥a且b≥c 最大值为b c≥a且c≥b 最大值为c
a>=b&&a>=c 最大值为a
b>=a&&b>=c 最大值为b c>=a&&c>=b 最大值为c
4.3 if语句 #include <stdio.h> int main() { int a,b,c,max; scanf(“%d,%d,%d”,&a,&b,&c); if(a>=b&&a>=c) max=a; if(b>=a&&b>=c) max=b; if(c>=a&&c>=b) max=c; printf(“max=%d\n”,max); return 0; }
表达式1 真 假 表达式2 真 假 表达式3 真 语句1 语句2 语句3 语句4 假
多个分支的选择
4.3 if语句 例:输入学生成绩,根据成绩分等级,90分以上为 ‘A‟,80~89分为‘B‟, 70~79分为‘C‟, 60~ 69分为‘D‟, 60分以下为‘E‟。 scanf(“%f”,&score); if(score>=90) printf(“A”); else if(score>=80) printf(“B”); else if(score>=70) printf(“C”); else if(score>=60) printf(“D”); else printf(“E”);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档