第04章 选择结构程序设计

合集下载

第四篇选择结构程序设计

第四篇选择结构程序设计

以某表达式的值等于0作为条件时可写成对该表达式 取反的形式。
例如,语句:if(x==0) printf(“x=0”);可以简写成:
if(!x) printf(“x=0”);
4.3 if语句
说明: (3)无论是if语句中的语句还是if-else语句中的语
句1、语句2,都可以是任何语句。当它们中的某 一个是有多条语句组成时,必须写成复合语句的 形式。例如,语句:
优先级: 高 算术运算符
< ,<=, >, >=

==, !=
赋值运算符
4.2 关系运算与逻辑运算
2.关系表达式
一般形式为:〈表达式〉〈关系运算符〉〈表达式〉
合法的关系表达式:
a>b
a+b<c-d
(a=3)<=(b=5)
‘a’>=‘b’
(a>b)==(b>c)
关系表达式的值:
——逻辑值
“真” “1”表示
else
printf(“n=%d NO\n”,n); }
➢多分支if语句
4.3 if语句
当if-else语句中的语句2是另一条if语句时,就构成了多分支if语句。
语句的一般形式为: 表 达 式
1
if(表达式1) 语句1 真
假 执行过程:
假 表达式2
else if(表达式2) 语句2


else if(表达式3) 语句3
用N-S流程图表示例4.1的算法 输入weight
成立
weight≤50
不成立
pay=weight*0.35
pay=50*0.35+(weight50)*0.5

实验四选择结构程序设计

实验四选择结构程序设计

实验四选择结构程序设计在程序设计的世界里,选择结构就像是一个智能的决策者,根据不同的条件来决定程序的走向。

这一结构在解决各种实际问题中发挥着至关重要的作用,让程序变得更加灵活和高效。

选择结构,简单来说,就是让程序在运行时能够根据某些条件的判断结果,选择执行不同的代码块。

想象一下,你正在编写一个程序,要根据用户输入的成绩来判断他是否及格。

如果成绩大于等于 60 分,就输出“及格”;否则,输出“不及格”。

这就是一个典型的选择结构应用场景。

在大多数编程语言中,实现选择结构主要有两种方式:if 语句和switch 语句。

先来说说 if 语句。

它的基本形式是“if (条件) {代码块}”。

如果条件为真,就执行花括号里的代码块;如果条件为假,就跳过这个代码块,继续执行后面的代码。

比如说,我们要判断一个数是否为正数,可以这样写:```javaint num = 5;if (num > 0) {Systemoutprintln("这是一个正数");}```除了简单的 if 语句,还有 ifelse 语句。

它的形式是“if (条件) {代码块 1 } else {代码块 2 }”。

如果条件为真,执行代码块 1;如果条件为假,执行代码块 2。

例如,判断一个数是奇数还是偶数:```javaint num = 6;if (num % 2 == 0) {Systemoutprintln("这是一个偶数");} else {Systemoutprintln("这是一个奇数");}```另外,还有 ifelse ifelse 语句,可以处理多个条件的情况。

比如,根据学生的成绩划分等级:```javaint score = 85;if (score >= 90) {Systemoutprintln("优秀");} else if (score >= 80) {Systemoutprintln("良好");} else if (score >= 70) {Systemoutprintln("中等");} else if (score >= 60) {Systemoutprintln("及格");} else {Systemoutprintln("不及格");}```接下来,再讲讲 switch 语句。

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; }

04 选择结构程序设计

04 选择结构程序设计
}
程序输出举例: Enter two numbers: 2 2 (用户从键盘输入2 2)
num1=2 num2=2 result=1
4.2 逻辑运算符及逻辑表达式
逻辑运算符用于支持基本逻辑运算。三 种逻辑运算符及其意义,如表4.2.1所示。
表4.2.1
逻辑运算符 !
&& ||
名称 逻辑非 逻辑与 逻辑或
下面给出程序清单:
#include <stdio.h> main() { int value,choice;
printf("Convert : \n");
/*输出菜单*/
printf(" 1: decimal to hexadecimal\n");
printf(" 2: hexadecimal to decimal\n");
printf("Enter a decimal value: "); scanf("%d", &value); printf("%d in hexadecimal is %x\n", value,value); } else if(choice==2) { printf("Enter a hexadecimal value: "); scanf("%x", &value); printf("%x in decimal is %d\n",
例4.3.3 用双分支if语句重新编写例4.3.1的 程序。
可以利用一个分支处理变量a为正数的情 况,如令x=a。用另一个分支初处理变量a为 负数的情况,如令x=−a。最后输出结果。下 面给出程序:

4.2选择结构程序设计(二) 教案-《C语言程序设计基础》同步教学(航空工业出版社)

4.2选择结构程序设计(二) 教案-《C语言程序设计基础》同步教学(航空工业出版社)
d.条件运算符与条件表达式的应用:学生可能对条件运算符与条件表达式的应用不熟悉,需要通过示例进行讲解。
e.综合应用实例的解决思路:学生可能对如何运用所学知识解决实际问题感到困惑,需要通过实例进行分析讲解。
教学资源准备
1.教材:确保每位学生都有《C语言程序设计基础》教材,以便学生在课堂上跟随教师的讲解进行学习。
7.网络资源:收集与教学内容相关的网络资源,如在线编程练习平台、编程教程、在线论坛等,供学生课后学习和讨论。
8.学习小组:根据学生的实际情况,将学生分成学习小组,以便进行分组讨论和合作学习。
9.教学反馈:准备一些教学反馈表,让学生在课堂上填写,以便教师了解学生的学习情况和反馈意见。
10.教学辅导:准备一些辅导资料,如编程练习题、学习指南、参考书籍等,供学生课后学习参考。
6.对学生的作业进行定期检查和评估,了解学生的学习进展和存在的问题,及时调整教学方法和策略。
7.提供一些编程资源和资料,供学生参考和学习,帮助学生进一步提高编程技能和知识水平。
8.鼓励学生积极参与编程比赛和项目实践,将所学知识应用于实际场景中,提高实践能力和创新能力。
9.定期与学生进行沟通和交流,了解学生的学习需求和问题,及时给予帮助和支持。
五、教学过程
1.导入新课:通过讲解if-else语句和switch语句的基本概念,引导学生进入本节课的学习。
2.讲解与示例:通过讲解和示例,让学生理解if-else语句、嵌套if-else语句、switch语句、条件运算符与条件表达式的用法。
3.案例分析:通过分析实际案例,让学生掌握if-else语句和switch语句在实际问题中的应用。
4.实验案例:准备一些简单的编程案例,如温度转换、成绩排序、猜数字游戏等,让学生在实验中进行实际操作。

Ch04_选择结构程序设计

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

C语言程序设计第4章

C语言程序设计第4章
技能目标
能够使用if语句和switch语句,进行 选择结构程序设计 会利用多分支结构解决较复杂逻辑 判断问题
目录
CONTENTS
00 案例4 百分制转换等级制 01 4.1 选择结构判定条件的构成 02 4.2单分支和双分支选择结构程序设计 03 4.3 多分支选择结构程序设计
目录
CONTENTS
04 4.4 小结 05 4.5 拓展案例
案例4 百分制转换等级制
问题描述
学生成绩管理系统中需要对老师录入的百分制转换为等 级制。百分制与等级制的对应关系如下:90-100 对应A、 80-89对应B、70-79对应C、60-69对应D、0-59对应E。
问题分析
这是一个需要根据不同条件作出相应选择的程序,根据 描述,我们可以定义float变量fScore用来存放成绩值, 从而根据题目列出下列条件表达式: fScore>=90&&fScore<=100 your grade is A fScore>=80&&fScore<=89 your grade is B fScore>=70&&fScore<=79 your grade is C fScore>=60&&fScore<=69 your grade is D fScore>=0&&fScore<=59 your grade is E
4.4 小结
(1)嵌套if-else语句和switch语句都是用来实现多分支选择结构的,它们的 应用环境不同,嵌套if-else 语句用于对多条件并列测试,从中取一的情形; switch语句用于单条件测试,从其多种结果中取一种的情形。 (2)一般情况下用switch能解决的问题,用嵌套if-else 也一样能解决,反 之用嵌套if-else 语句能解决的问题用switch也能解决,在使用时要根据具体 问题灵活运用。 (3)如果多分支选择结构中需要判断的逻辑关系只是是否相等,则最好用 switch语句。switch语句的执行效率高于嵌套if-else语句。

c语言第04章 选择结构

c语言第04章 选择结构

设:int x=4,y=2,z=3;求下面各表达式的值 求下面各表达式的值 0 (1) abs(x-y)<1.0E-06 0 (2) z>y+x 1 (3) x!=y==z-2
3)逻辑运算符和表达式 逻辑运算符和表达式 – 逻辑运算符: ! && || 逻辑运算符: – 逻辑运算真值表
a 真 真 假 假 b 真 假 真 假 !a 假 假 真 真 !b 假 真 假 真 a&&b 真 假 假 假
C语言程序设计 语言程序设计
主 讲:李晓勇 Email:lxyonghn@
第四章 选择结构程序设计
一, 条件表达式及运算 if语句 二, if语句 switch语句 三, switch语句 四,程序举例
一, 条件表达式及运算 1 关系运算符 种类: 种类:< <= == >= > != 2 关系条件表达式 关系运算符和两个运算对象组成 结果:逻辑值"真"或"假",用1和0表示 结果:逻辑值" 例 int a=3,b=2,c=2,d; a>b 1 (a>b)==c 0
a||b 真 真 真 假
C语言中, 语言中,
运算量: 运算量: 运算结果: 运算结果:
0表示" 0表示"假", 表示 表示" 非0表示"真", 0表示 表示" 0表示"假", 1表示"真", 表示"
优先级: 算术运算符 关系运算符>(&&;||)>赋值运算符 算术运算符, 优先级 ! >算术运算符,关系运算符 赋值运算符 优先级: 优先级: ! && 低 || 高 结合方向: 结合方向: ! && || :从右向左 :从左向右 :从左向右
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Y
Y=-1
开始
输入x
N X<0
Y
X=0
Y=0
19
N Y=1
2021/4/9
输出y 结束
有以下几个程序,请判断哪个是正确的?
程序1: main() { int x,y;
scanf(“%d”,&x);
◆ if (x<0) y=-1;
else if (x==0) y=0;
else y=1;

printf(“x=%d,y=%d/n”,x,y);
是否闰年的信息。若闰年,令leap=1;非闰年,leap=
0。最后判断 leap是否为1(真),若是,则输出“闰年”
信息。

year被4整除 假

year被100整除 假
真 year被400整除 假
leap=1
leap=0
leap=1
leap=0
注意:
● 指定
三种形式的if语句中在if后面都有“表达式”,一般为逻 辑表达式或关系表式。 例如,if(a==b && x==y)printf (“a=b,x=y”); 在执行if语句时先对表达式求解,若表达式的值为0,按 “假”处理,若表达式的值为非0,按“真”处理,执行
的语句。 假如有以下if语句:if(3)printf(“O.K.”); 是合法的,执行结果输出“O.K.”,因为表达式的值为3, 按 “真”处理。由此可见,表达式的类型不限于逻辑表达 式,可以是任意的数值类型(包括整型,实型、字符型、 指针型数据)。
2021/4/9
26
看下面的例子:
Switch(i) {case 1:printf(“A\n”); break;
case 21:printf(“B\n”); break; case 3:printf(“C\n”); break; case 4:printf(“D\n”); break;
default: printf(“E\n”);
结合性:自左至右;
表达式的值: 若为真,则结果为1;
2021/4/9
若为假,则结果为0。
4
4.1 关系表达式、逻辑表达式
3. 运算符的优先级
!

算术运算符
关系运算符
&&和||
赋值运算符 低
2021/4/9
4.2.1 if 语句
If语句的三种形式
1. if(表达式)语句
这种if语句的执行过程如图 :
2021/4/9
25
(4)各个case和default的出现次序不影响执行结果。
(5)执行完一个case后面的语句后,流程控制转移 到下一个case继续执行。“case常量表达式”只是 起语句标号作用,并不是在该处进行条件判断。在 执行Switch语句时,根据Switch后面表达式的值找 到匹配的入口标号,就从此标号开始执行下去,不 再进行判断。因此,应该在执行一个case分支后, 使流程跳出Switch结构,即终止Switch语句的执行。 可以用一个break语句来达到此目的。
运行情况如下: 3.6,-3.2 -3.20,3.60
{ t=a;a=b;b=t;}
printf (“%5.2f,%5.2f”,a,b);
}
2021/4/9
12
例2: 输入两个数, 比较其大小, 将较大的数输出。
流程分析:
• (1) 输入两个数据a,b ; • (2) 如果a>b 则输出a ;否则,输出b。
2021/4/9
23
4.3 Switch语句
1.Switch的一般形式:
switch(表达式) {case常量表达式1:语句 1
case常量表达式2:语句 2 : :
case常量表达式n:语句 n default:语句 n+1
}
2021/4/9
24
2.关于Switch的说明:
(1)Switch后面括弧内的“表达式”,ANSI标准允 许它为任何类型。 (2)当表达式的值与某一个case后面的常量表达式的 值相等时,就执行此case后面的语句,若所有的case中 的常量表达式的值都没有与表达式的值匹配的,就执 行default后面的语句。 (3)每一个case的常量表达式的值必须互不相同,否 则就会出现互相矛盾的现象。
2021/4/9
18
在if语句的嵌套结构中并不需要对称,只根据 需要决定嵌套的形式。在写if语句的嵌套结构时, 要注意else与if的配对规则, C规定,else必须与 最近的if相匹配。
例5:
-1 (X<0)
y=
0 (X=0)
1 (X>0)
编一程序,输入一个x值,输出y值.
2021/4/9
例5:流程图如
2021/4/9
14
main( )
{ int score; sanf(“%d”, &score);
if ( score<60) printf(“%c” , ’E’); else if ( score <70) printf(“%c” , ’D’); else if (score <80) printf(“%c” , ’C’); else if (score <90) printf(“%c” , ’B’); else printf(“%c” , ’A’);
2021/4/9
4.1 关系表达式、逻辑表达式
3
1、关系表达式:用关系运算符将表达式连接起来的 式子
优先级: (< <= >= >)>( == != ) 结合性:自左至右; 表达式的值: 若为真,则结果为1;
若为假,则结果为0。
2、逻辑表达式:用逻辑运算符将表达式连接起来 的式子
优先级: !>&&>||
}
程序2:将上面程序的if语句(第4-6行)改为:
if (x>=0)
if (x>0) y=1;
else y=0;
else y=-1;
2021/4/9
程序3:将上述if语句改为:
y=-1; if (x!=0)
if (x>0) y=1; else y=0;
程序4:
y=0;
if (x>=0) if (x>0) y=1;
2021/4/9
16
4.2.2 if语句的嵌套
1.在语句中嵌套if语句 在上述3种if语句结构中,当if(表达式)
或else后面的语句本身又是一个if语句结 构时,就形成了if语句的嵌套结构。 例如多分支选择结构。
2021/4/9
17
if 语句的二层嵌套结构如下:
if ( 表达式1) if ( 表达式1_2) 语句1_1 else 语句1_2 else if ( 表达式2_1) 语句2_1 else 语句2_2
1
第4章 选择结构程序设计
4.1 关系表达式及逻辑表达式 4.2 if语句 4.3 switch语句 4.4 应用举例
2021/4/9
2
选择结构是结构化程序设计中的三种基 本结构之一。在大多数程序中都会包含选 择结构。它的作用是,根据所指定的条件 是否满足,决定从给定的两组或多组操作 选择其一。
本单元重点介绍 if 语句和switch语句的 一般语法形式、功能以及程序应用实例。
表达式

语句1
语句2
首先先判断表达式的值 若为非0则执行语句1。 若为0则执行语句2。
2021/4/9
7
例如:
main() { float x , y;
scanf(“%f ”, &x); if ( x < 0 ) y = 3 - x ; else y = 2 * x ; printf(“y= %6.2f”, y ); }
2021/4/9
注意及举例
11
● 在if和else后面可以只含一个内嵌的操作语句(如上例), 也可以有多个操作语句,此时用花括号“{}”将几个语句括 起来成为一个复合语句。
例1:输入两个实数,按其由小到大的次序输出这两个数.
程序如下:
main()
{ float a,b,t; scanf (“%f,%f”,&a,&b); if (a>b)
假设i=3时,则会从i=3 时做起的语句。
如果给每条语句加上 break;这样就只执行一 条语句
} 运行结果为:
C 语句后加或不加“break;”可以使多分支变
D 得非常灵活。如果多种情况需要共用一个执
E 行语句,可用case的常量表达式多种情况列
出,最后一种情况后,才放执行的语句。
2021/4/9
分析: 设score为整型数,在score≥90 的范围内,score 可能取100, 99,.....,90,利用两个整数相除,结果自动 取整的特性,score和 score /10 有如下对应关系:
score
score/10≥9010, 970~897,8
60~69
6
60以下
default
• 因此,可以用score /10的值来确定分支。
27
case后面的语句可以是一条语句,也可 以是复合语句,还可以是花括弧括起来 的几条语句,还可以是空语句。 有多条语句时会顺序执行完所有语句。
2021/4/9
28
例6 编程:根据输入的学生的成绩判断等级。当成绩 score ≥90时为 A等; 成绩70≤score <90 为B等; 成绩 60≤score <70 为C等; 成绩score < 60 为D等 (score 为整数)。
2021/4/9
29
#include <stdio.h> main() /*用switch 语句评级 */ { int score;
相关文档
最新文档