第5章 选择结构程序设计(1-第8次课)
合集下载
第五章 选择结构程序设计0PPT课件

执行过程:
…... [ else
statementn ]
=0
例:ifex(spar1lary>1000)
index=0.4;
非el0se if (salareyx>p8r200) =0 index=0.3;
else if (salary>600) else if (sala非ry0>400)
index=0=0.2; expinr3dex=0.1;
序
则 a<=x<=b的值为 0
设
计
例 5>2>7>8在C中是允许的,
值为 0
例 int i=1, j=7,a;
a=i+(j%4!=0);
则a= 2
第
五
例 ‘a’>0 结果为1
章 选
‘A’>100 结果为0
择
结
构
程
序< >
设
计
C
语
关系运算注意:
言
程 序
例 应避免对实数作相等或不等的判断
设
如 1.0/3.0*3.0==1.0 结果为 0
❖逻辑运算符
序
种类: ! && ||
设 计
逻辑运算真值表
a
b
!a
!b a&&b a||b
真
真
假
假
真
真
真
假
假
真
假
真
第 五 章 选 择 结 构 程
序< >
设 计
假
真
真
假
假
真
假
假
真
真
C语言第5章选择结构程序设计

第5章选择结构程序设计本章重点:1、熟悉和掌握关系运算和逻辑运算以及各种运算符的优先级2、熟悉和掌握if语句和switch语句的使用§5.1 关系运算符和关系表达式关系运算:比较运算,用“关系表达式”进行运算。
例、a > 3是一个关系表达式,它取两个值:"真"(true)和"假"(false)。
5.1.1 关系运算符及其优先次序C按优先级从高到低:算术运算符、关系运算符、赋值运算符例、c>a+b 等效于c>(a+b)a>b!=c 等效于(a>b)!=ca==b<c 等效于a==(b<c)a=b>c 等效于a=(b>c)5.1.2 关系表达式关系表达式:用关系运算符连接的表达式。
例、a>b 真,表达式的值为1(a>b) = = c 真,表达式的值为1b+c<a 假,表达式的值为0d = a>b d的值等于1f = a>b>c f的值等于0§5.2 逻辑运算和逻辑表达式5.2.1 逻辑运算符及其优先次序a &&b (若a和b均为真,逻辑表达式a&&b为真)a ||b (若a或b为真,逻辑表达式a||b为真)!a (若a为真,逻辑表达式!a为假)!a && b || x>y && c按如图优先级运算:例、(a>b) && (x>y) 可以写为:a>b&&x>y(a==b)||(x==y) 可以写为:a==b||x==y(!a)||(a>b) 可以写为:!a||a>b① a=4 !a=0(假)② a=4,b=5 a&&b=1(真)③ a=4,b=5 a||b=1(真)④ a=4,b=5 !a||b=1(真)⑤ 4&&0||2 1编译器在求解逻辑表达式的值时,采用“非完全求解”的方法,即:当求得表达式为真后,就结束求解;只有在需要执行下一个逻辑运算时,才继续运算。
第五章 选择结构程序设计 zd

例子
switch (a){ case 1: printf(“Monday\n”); case 2: printf(“Tuesday\n”); case 3: printf(“Wednesday\n”); case 4: printf(“Thursday\n”); case 5: printf(“Friday\n”); case 6: printf(“Saturday\n”); case 7: printf(“Sunday\n”); default: printf(“error\n”); } switch (a){ case 1: printf(“Monday\n”);break; case 2: printf(“Tuesday\n”); break; case 3: printf(“Wednesday\n”); break; case 4: printf(“Thursday\n”); break; case 5: printf(“Friday\n”); break; case 6: printf(“Saturday\n”); break; case 7: printf(“Sunday\n”); break; default: printf(“error\n”); }
s=-1
5、调试:
出现的问题
if(表达式) 的处理
多个并列条件
if(500<=a<800)
规范格式
“=”与“==”
注意: 形成多重嵌套实质上是为了进行多分支选 择,这种问题一般可以使用if语句的第三种 形式,即“if-else-if”语句,或者将要介绍 的switch语句完成。因此,在一般情况下 ,较少使用if语句的嵌套结构,以使程序更 便于阅读理解。
例
设输入x=2.0,y=-3.0 问输出是?
c语言-第5章选择结构程序设计

第三课 有关“说”的词根
01
Dict,dic:言,说
02
Fess:说
03
Lect:言
04
Log:言,说
05
Nounce:说
06
Dictate v. Dict说--吩咐,命令,指示+ -ate动词后缀 口授命令或指示 命令,支配,口述 Contradict vt. Contra-相反+dict言 说出相反之言 反驳,同..相矛盾,与..相抵触 Predict vt. Pre-前,先,预先+dict言 预言,预告 Indicate vt. In-指示+dic言,说 说明,表明,表示+-ate 动词后缀 指示,指出,表明
宣告,宣布,通知
05
Pro-向前+nounce说--说出,发出声音
02
An-加强+nounce说,告知
04
Pronounce vt.
06
发音,宣称,宣告
01
第四课 有关“叫喊,问答”的词根
02
Cite:召唤,刺激
03
Voc,voke: 叫喊,声音
04
Quest,quire:寻求,问
05
9
Dialog(ue) n.
1
Dia- 两者之间,相对+log 言,说
2
对话
3
Apologize vi.
4
Apo-分开,离开,脱开+log言,说+-ize动词后缀 开脱 解说
5
道歉,谢罪,辩解
6
Apology
7
y名词后缀
8
道歉,谢罪
9
01
Announce vt.
《c语言程序设计教学资料》第5章-选择控制结构

选择结构的分类
单分支结构
只有一个条件分支的情况。
双分支结构
有两个条件分支的情况。
多分支结构
有多个条件分支的情况。
02
if语句
if语句的基本语法
总结词
描述if语句的基本语法结构。
详细描述
if语句是C语言中用于实现选择控制结构的语句之一,其基本语法格式为“if (条 件) 语句;”。如果条件为真,则执行语句;否则跳过该语句。
《C语言程序设计教学资料 》第5章-选择控制结构
目录
• 选择控制结构概述 • if语句 • switch语句 • 条件运算符 • 综合案例分析
01
选择控制结构概述
选择结构的定义
01
02
03
选择结构
在程序中,根据某个条件 是否成立,选择执行不同 的代码块。
条件
决定程序执行路径的条件 或表达式。
代码块
04
条件运算符
条件运算符的基本语法
01
条件运算符(也称为三元运算符 )的语法格式为:`条件 ? 表达式 1 : 表达式2`
02
如果“条件”为真,则整个表达 式的值为“表达式1”的值;否则 ,整个表达式的值为“表达式2” 的值。
条件运算符的使用场景
在需要基于某个条件选择执行不同操作的场景下,可以使用 条件运算符。
总结词
描述switch语句的基本语法和使 用方法。
详细描述
switch语句是C语言中用于实现多 分支选择控制结构的语句。它的 基本语法格式如下
switch语句的基本语法
```c switch(expression) {
case constant1
switch语句的基本语法
第5章 选择结构程序设计

【例5-3】将百分制成绩转换为五分制成绩。转 换标准如下:90分以上为“优秀”,80分以上为 “良”,70分以上为“中”,60分以上为“及 格”,60分以下为“不及格”。程序运行结果如 图5-5左图所示。
图5-5 成绩转换设计
程序运行时,单击【转换】按钮执行的代码如下: private void button1_Click(object sender, System.EventArgs e) { int k =int.Parse(textBox2.Text); if(k>90) textBox1.Text="优"; else if(k>80) textBox1.Text="良";
5.2.2 if…else…if语句 if…else语句也可以用于多种分支的选择结构, 这种情况也就是if语句嵌套结构。 if语句中,内嵌语句可以是复合语句,也就是说, 内嵌语句中可以包含选择语句、循环语句等。那 么,if语句可以嵌套,但应注意if…else的配对问 题。在默认情况下,else语句总是和最近的if语句 配对。下面通过【例5-3】了解if语句的嵌套方法。
第5章 选择结构程序设计
5.1 选择结构程序的设计 在C#中,提供两种选择语句实现流程的改变: if语句,用于判断特定的条件能否满足,用于单 分支选择,也可以通过嵌套实现多分支选择。 switch语句,用于多分支选择。
5.2 单分支选择结构(if语句) if语句是程序设计中基本的选择语句,它根据 条件表达式的值选择要执行的后面的内嵌语句序 列。一般用于简单选择,即选择项中有一个或两 个分支,语句执行的过程中根据不同的情况进行 选择其中一个分支执行。格式为: if (布尔条件表达式) 内嵌语句序列1; else 内嵌语句序列2;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
入口 N(不成立)
表达式 Y(成立) { 语句组 }
出口
简单应用1:请判断下面程序的结果和功能。
#include <stdio.h> 功能:求任意整数的绝对值。 void main() { int x,y; printf("Enter an integer:"); scanf("%d",&x); y=x; if(y<0) y= -y; { y= -y; } printf("\ninteger:%d--->absolute value:%d\n",x,y); } 运行时: an integer:-12 value :12 结果为:Enter integer:-12--->absolute
课堂练习2:
#include <stdio.h> void main() { int a,b; printf("Input a,b: "); scanf("%d,%d",&a,&b);
if(b!=0) printf("a/b=%.2f\n",a*1.0/b);
}
课后作业1: 输入两个任意整数a和b,若b不等 于0,则输出a/b的值(结果保留两位小 数)。
; a=b, if(a<b) { t=a, ; b=t; }
printf("a=%f,b=%f\n",a,b ); }
题目: 输入3个数a,b,c,要求按照由小到大的 顺序输出。——将程序补充完整
#include <stdio.h> void main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c);
课堂练习1: 输入两个任意不等实数a和b,若a大 于b,则输出a-b的值;否则输出b-a的值。 (要求:结果保留两位小数)
课堂练习1:
#include <stdio.h> void main() { float a,b,c; printf("Input a,b: "); scanf("%f,%f",&a,&b);
入口 N(不成立)
表达式 Y(成立) {语句组1}
{语句组2}
出口
简单应用2: 分析下面程序的功能。
#include <stdio.h> 功能: 输入两个整数并 void main() 判断两数是否相等。 { int a,b; printf("Enter integer a:"); scanf("%d",&a); printf("Enter integer b:"); scanf("%d",&b); if(a==b) printf("a==b\n"); else printf("a!=b\n"); }
注: 非0代表“真” 如:12&&5、'a' && 'b' !1.2、!0、21|| 'a' 0代表“假”
逻辑表达式的值(2种):
假
0
或
1 。
真
下面我们小结一下:
a&&b aቤተ መጻሕፍቲ ባይዱ|b !a
a和b 都为真(非0) 时,结果为1; a和b 有一个为真(非0) 时,结果为1; a为 真(非0) 时,结果为0;
if…else…语句的一般形式:
if(表达式) { 语句组1; } else { 语句组2; }
………………; //其他语句
if(表达式) 语句1; else 语句2;
………………; //其他语句
if(表达式) 语句1; else 语句2;
………………; //其他语句
if(x=10)
if(x==10)
3.写出year年闰年的判定式。已知闰年的条件 是符合下面的二者之一: ①能被4整除,但不能被100整除。 或: ②能被400整除。
((year%4=0)&&(year%100!=0))
||(year%400=0)
((year%4==0)&&(year%100!=0)) ||(year%400==0)
if(ch>='A' && ch<='Z')
ch=ch+32;
printf("ch=%c\n",ch); }
课后作业2:
从键盘上输入一个字符,如果它是大写 字母,则把它转换成小写字母输出;否则, 直接输出。(参考P51例3.7)
课后作业1:
#include<stdio.h> void main() { int a,b; printf("Input a,b: "); scanf("%d,%d",&a,&b);
#include <stdio.h> void main() { int a,b; float c; printf("Input a,b: "); scanf("%d,%d",&a,&b);
if(b!=0) c=1.0*a/b; //c=(float)a/b printf("%.2f\n",c);
}
5.1 关系运算符和关系表达式
5.1.1 关系运算符及其优先级
关系运算符
< <= > >= == !=
含义
小于
小于等于
大于 大于等于 等于 不等于
优先级相同(高)
优先级相同(低)
思考:if(x=10) x=10 x==10 if(x==10)
的区别?
5.1.2 关系表达式P92
如:简单的关系运算
简单应用2: 分析下面程序的功能。
#include <stdio.h> 功能: 输入两个整数并 void main() 判断两数是否相等。 { int a,b; printf("Enter integer a:"); scanf("%d",&a); printf("Enter integer b:"); scanf("%d",&b); if(a!=b) printf("a!=b\n"); else printf("a==b\n"); }
前言
选择结构的作用是(P91):
根据所指定的条件是否满足,决定从
给定的两组或多组语句中选择一组执行。
如:求两个数中的最大值
if(a>b) c=a;
else c=b;
if(条件表达式) 语句1;
else 语句2;
本章主要内容:
准备知识——如何写出正确的条件表达式 关系运算符和关系表达式 逻辑运算符和逻辑表达式 两种选择结构语句: if语句 switch语句
其中:
操作数a和b可以是 常量 、 变量 或 表达式 。
可以是 字符型 、 整型 或 浮点型 但是:运算结果只能是 0 或 1 。 。
优先级:
逻辑非 !
关系运算符 算术运算符
算术运算符 关系运算符
逻辑与 && 赋值运算符 逻辑或||
高
赋值运算符 逻辑运算符
低
赋值运算符
举例 5||0 结果是:1 1.5&&'a' 1 结果是:
特殊情况 (理解内容)
假设:int a=1,b=2,c=3,d=4;
int m=1,n=1;
见教材P94
如果有如下表达式语句运行后,则m,n的值分别变为? (m=a>b)&&(n=c>d);
m= 0 , n= 1
同理:如果有如下表达式语句运行后,则m,n的值分 别变为? (m=a>b)||(n=c>d); m= 0 , n= 0
5.3 if语句
一般结构流程图
双分支结构
入口 N(不成立)
表达式 Y(成立) { 语句组1 }
{ 语句组2 }
出口
if语句的四种应用形式:
① 简单的if语句
② if...else语句
③ 阶梯式else if 语句
④ 嵌套的if语句
简单的if语句的一般形式:
if(表达式) { 语句组; } …………; //其他语句 if(表达式) 一条语句; …………; //其他语句
5.2.1 逻辑运算符及其优先级
逻辑与(AND) && ||
高
低
逻辑或(OR)
逻辑非(NOT)
! 优先级最高(单目运算符)
逻辑运算规则(P94,表5-2): a的初始值 b的初始值
非0 非0 0 0 非0 0 非0 0
!a 0
0 1 1
!b 0
1 0 1
a&&b 1 0 0 0
a||b 1 1 1 0
(1)4.5<=10 (2) 'A'> 'a'
混合 运算
表达式的值=?
1
0
(3)(7-1)*2!=10
(4)x=4.5==10-5.5;
1
1
关系表达式的值(2种):
0
或
1 。
成立(真)
不成立 (假)
下一页
优先级:
关系运算符 算术运算符
算术运算符
关系运算符 赋值运算符
高