第4讲C语言选择结构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。
第4章-选择结构PPT课件

例如“如果你有空,并且天气好,我们就去打篮球”,此 例中,只有同时满足“你有空”和“天气好”两个条件, “去打篮球”这个动作才会发生。
再如,要表示数学中常用的区间取值,要求检查int型变量x 的取值是否在[1,20]区间,初等数学中通过判断表达式 “1=<x<=20”的值来确定,C语言中并不支持这种写法,需 要表示为 “x>=1”且“x<=20”, 这两个表达式同时成立, 才表示x的取值落在了[1,20]区间。
条件判断
现实生活中我们经常要做判断,根据不同的情况去做不同的 事情:举例
1、如果外面阴天,出门就把雨伞带上
2、如果周末天气好,我们就去郊游,否则就去看电影
3、如果明天不下雨,我们就去爬山,如果下小雨,我们 就去体育馆打球,如果下大雨,就呆在屋子里。
4、如果你有空,并且天气好,我们就去打篮球
即当该表达式为结果为真时,表示y是闰年,否则 y不是闰年。相应的判断某一年份是否为非闰年的 表达式即为判断闰年对应的表达式取反:
!(((y % 4 == 0)&&(y % 100 != 0)) || (y % 400 == 0))
注意:当逻辑表达式比较复杂,出现多个条件的 连接时,建议采用“()”来明确层次关系。
X==1.0 || x==3.0 X>=z && x<=y z>x || y<x
0 || 1等于1 1 &&1等于1 0 || 0 等于0
9
高职学院 计算机专业 《程序设计基础》
逻辑运算实例
根据输入的年份数值,判断其是否为闰年。假设int型变量y里 面保存了此年份数据。
分析:根据历法,闰年的年份值是4的倍数但又不是100的倍 数,或者是400的倍数。采用自顶向下的分析方法,分析如下
再如,要表示数学中常用的区间取值,要求检查int型变量x 的取值是否在[1,20]区间,初等数学中通过判断表达式 “1=<x<=20”的值来确定,C语言中并不支持这种写法,需 要表示为 “x>=1”且“x<=20”, 这两个表达式同时成立, 才表示x的取值落在了[1,20]区间。
条件判断
现实生活中我们经常要做判断,根据不同的情况去做不同的 事情:举例
1、如果外面阴天,出门就把雨伞带上
2、如果周末天气好,我们就去郊游,否则就去看电影
3、如果明天不下雨,我们就去爬山,如果下小雨,我们 就去体育馆打球,如果下大雨,就呆在屋子里。
4、如果你有空,并且天气好,我们就去打篮球
即当该表达式为结果为真时,表示y是闰年,否则 y不是闰年。相应的判断某一年份是否为非闰年的 表达式即为判断闰年对应的表达式取反:
!(((y % 4 == 0)&&(y % 100 != 0)) || (y % 400 == 0))
注意:当逻辑表达式比较复杂,出现多个条件的 连接时,建议采用“()”来明确层次关系。
X==1.0 || x==3.0 X>=z && x<=y z>x || y<x
0 || 1等于1 1 &&1等于1 0 || 0 等于0
9
高职学院 计算机专业 《程序设计基础》
逻辑运算实例
根据输入的年份数值,判断其是否为闰年。假设int型变量y里 面保存了此年份数据。
分析:根据历法,闰年的年份值是4的倍数但又不是100的倍 数,或者是400的倍数。采用自顶向下的分析方法,分析如下
C语言第4章 选择结构程序设计PPT教学课件

例如:
(1)若a=4,则!a的值为
(2) 0
(3)(2) 若a=4,b=5,则a&&b的值为
(4) 1
(5)(3) a、b值同前, a||b的值为
(6) 1
(4) 4&&0||2的值为
1 2020/12/10
12
特别注意! (1) 用&&对两个表达式进行计算时,若第一个表达式的值
为“假”,则运算结果与第二个表达式的值无关,结果肯 定为假,所以C语言规定此时第二个表达式将不再计算。
(因为“>”运算符是自左至右的结合方向,先执行 “a>b”得值为1, 再执行关系运算“1>c”,得值0, 赋给f)。
2020/12/10
8
逻辑运算符
逻辑运算符是对两个关系式或逻辑值进行运算的,运算结 果仍是逻辑值。
在C语言中,逻辑值用数值非0和0来表示逻辑真和假的, 所以逻辑运算符也可以对两个数值型数据进行运算,包括 整型、实型、字符型等数据。
3.关系运算符的使用实例
设变量定义如下: char c1=‘a’,c2=‘A’;
(c1,c2可看成整型,其值为97,65)
int n1=65,n2=97; float f1=0.3E1,f2=3.0001;
则: ① c1>c2,n1>n2,f1==f2的值依次是 1.,0,0
② c1>=n1,c2>=n2,c1==n2的值依次是 1,0,1
③ f1>c1,f2<c2,f1==n1-62的值依次是 0,1,1
④ c1>c2>=1<=0==1!=0的值是 0
⑤ c1>c2>=n1<=n2==f1!=f2的值是 1
C语言04选择结构.ppt

10
C Programming Language
10 10
-10 2
,z;执行语句z=x>y?++x:y++;后,x、 y、z的值分别为____、____和 ____ 。
2. 已知int a=4,b=5,c;执行语句c=a=a>b后,a的值为 ____ 。
3. 已知int x=10,y=3 , z;执行语句printf("%d\n" , z = (x%y , x/y));后,输出结果为 ____ 。
种类:< <= = = >= > != 结合方向:自左向右 优先级别:
< <= 优先级6 > (高)
>=
== 优先级7 != (低)
关系表达式的值:是逻辑值“真”或“假”,
用1和0表示
例 int a=3,b=2,c=1,d,f;
a>b
(a>b)==c
b+c<a
3
C Programming Language
已知a=1,b=2,c=3
逻辑运算规则简化:
⑴、两个表达式作&&,只要一个的值为0, 不必计算另一个,该表达式的值为0。 例:int a=0,b=2;a && (b+=b)
⑵、两个表达式作 || ,只要一个的值非0, 不必计算另一个,该表达式的值为1。 例:int a=5,b=2; a || (b+=b) 例:a=1;b=2;c=3;d=4;m=1;n=1; (m=a>b)&&(n=c>d) m=?0 ,n=?1
|| (12)
! :从右向左 && :从左向右 || :从左向右
C语言程序课件ppt第4章选择结构程序设计谭浩强C程序设计第四版

C★
A★
●B
4.2.1 用if语句处理选择结构举例
C★ A ●★ ● B
4.2.1 用if语句处理选择结构举例
C★ A ● ●★ B
#include <stdio.h> int main() { float a,b,t;
scanf("%f,%f",&a,&b);
if(a>b) 如果a>b
{ t=a;
a=b; 将a和b的值互换
b=t; } printf("%5.2f,%5.2f\n",a,b); return 0; }
#include <stdio.h>
int main()
{ float a,b,t;
scanf("%f,%f",&a,&b);
if(a>b)
{ t=a; a=b;
选择结构,用if语句实现的
a && b 真 假 假 假
a || b 真 真 真 假
4.4.1 逻辑运算符及其优先次序
➢逻辑运算符的优先次序
! → && → ||
(!为三者中最高)
➢与其他运算符的优先次序
! 算术运算符 关系运算符
&& 和 || 赋值运算符
(高) (低)
4.4.2 逻辑表达式
➢ 逻辑表达式的值应该是逻辑量“真”或“假” ➢ 编译系统在表示逻辑运算结果时
4.3.1关系运算符及其优先次序
c>a+b a>b==c a==b<c a=b>c
等效于 c>(a+b) 等效于 (a>b)==c 等效于 a==(b<c) 等效于 a=(b>c)
《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章选择结构程序设计简明教程PPT课件

例:a<c-d
‘a’+5>c -i-5*j==k+1 a==b<c
C语言中没有专用是“真”和“假”。
C语言程序设计 第4章 选择结构程序设计 5
【例4.1】关系表达式的应用 #include <stdio.h> int main() { char c='m'; int i=2,j=1,k=6; float x=3e+5,y=1.85; printf("%d,%d\n",'a'+7<c,-i-2*j<=k+1); printf("%d,%d\n",1<j<5,x-5.25<=x+y); printf("%d,%d\n",i+j==-2*j+k,k==j==i+9); return 0; }
逐渐缩小判 断的范围
第4章 选择结构程序设计
13
补充1:流程图表示算法(ISO)
流程图是用一些图框来表示各种操作 用图形表示算法,直观形象,易于理解
起止框
输入输出框
判断框
处理框
流程线
连接点
注释框
补充2:流程图表示算法(NS)
N-S流程图用以下的流程图符号:
p Y A N B 当p1成立 A 循环结构 (当型)
思考:求5>2&&8<5-!0 的值
C语言程序设计 第4章 选择结构程序设计 10
逻辑运算符的短路特性:
在C语言中,&&和||逻辑运算符具有短路特性: (1)在一个或多个&&连接的逻辑表达式中,只要有一 个操作数为0(逻辑假),则停止后面的&&运算,因为 此时可以判断逻辑表达式结果为假。 (2)由一个或多个||连接的逻辑表达式中,只要遇到第 一个操作数不为0(逻辑真),则停止后面的||运算,因为 此时可以判断逻辑表达式结果为真。
c语言 第四章 选择结构课件

if (expr1) if (expr2) statement1 else statement2
内嵌if
if (expr1) if (expr2) statement1
else statement3
内嵌if
if (expr1) statement1
else if(expr3) statement3 else statement4
if ~ else 配对原则:缺省{ }时,else 总是和它上面离它最近的未配对的if配对
if(……) if(……) if(……) else…... else…...
else…...
例: if (a==b) if(b==c) printf("a==b==c");
else printf("a!=b");
if(x>y) printf("X>Y\n");
else printf("X<Y\n");
else printf("X==Y\n");
}
运行:Enter integer x,y:12,23 X<Y Enter integer x,y:12,6 X>Y Enter integer x,y:12,12 X==Y
内嵌if
if (expr1)
if (expr2) else
statement1 statement2
内嵌if
else
if(expr3) else
statement3 statement4
内嵌if
例 输入两数并判断其大小关系
main() { int x,y;
printf("Enter integer x,y:"); scanf("%d,%d",&x,&y); if(x!=y)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8
If语句和用if语句构成的选择结构
if语句(条件选择语句)
if语句的三种形式 ➢ 形式一: 格式:if (expression) statement
=0 expr
非0 statement
执行过程:
➢ 形式二:
例格:式i:f ip(f rx(ei>xnypt)rfe(ss“ion%)d”,x)非; 0 expr
11
if嵌套语句的一般形式:
if (expr1) if (expr2) statement1 else statement2
内嵌if
if (expr1) {
if (expr2) statement1
} else
内嵌if
if (expr1)
statement3
statement1
if (expr1)
…...
expr1
=0
[ else
statementn ]
非0
=0 expr2
例:iefl(ssealiafry(>s1a非0l0a00r)y>i8n0d0e)exxip=nr0d3.e4x;=0=.03;
else if (salary>60非0)0index=0.2; seetalltessmeentii1fnd(essxtaa=tel0ma;nrty2>40s0ta)teimnndte3x=0.st1a;temntn
优先级
! :从右向左 && :从左向右 || :从左向右
例 a=4;b=5;
!a
值为0
例:a&a&<b=x && x<值=b为1
// (a<=x) && (x<=b)
a|a|b>b&&x>y 值为1
//(a>b)&&(x>y)
!aa||=b=b||x==y值为1 4&!&a0||||a2>b 值为1
else if(expr3)
if (expr2) else
statement1 statement2
➢ 结合方向:自右向左
取expr2值
如 a>b?a:c>d?c:d a>b?a:(c>d?c:d)
取expr3值
➢ expr1、expr2、expr3类型可不同,表达式值取较高的类型
例 x?‘a’:‘b’ //x=0,表达式值为‘b’; x‡0,表达式值为‘a’ x>y?1:1.5 //x>y ,值为1.0; x<y ,值为1.5
//表达式值1
b+c<a
//表达式值0
d=a>b
//d=1
f=a>b>c
//f=0
2
关系运算注意:
例 若a=0; b=0.5; x=0.3; 则 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
//(a==b)||(x==y) //(!a)||(a>b)
5>3&&2||8<4-!0
(5>3)&&2||(8<(4-(!0))) 值为1
‘c’&&‘d’
值为1
6
逻辑运算的短路特性:逻辑表达式求解时,并非所有的 逻辑运算符都被执行,只是在必须执行下一个逻辑运算 符才能求出表达式的解时,才执行该运算符
=0
statement1
else
statement1
statement2
statement2
执行过程:
例:if (x>y) max=x; else max=y;
9
➢ 形式三: 格式: 执行过程:
if ( expr1 ) else if (expr2 ) else if (expr3 )
statement1 statement2 statement3
第四章 选择结构
1
关系运算符和表达式
关系运算符
种类:<、<=、==、>=、>、!= 结合方向:自左向右 优先级别:
关系<表达式的值:是逻辑值“真”或“假”,用1和0
表示<= 例>
>=
int
优先级6(高)
a=3,b=2,c=1,d,f;
a>b
== !=
优先级7(低)
//表达式值1
(a>b)==c
例 a&&b&&c //只在a为真时,才判别b的值;
只在a、b都为真时,才判别 c的值
例 a||b||c
//只在a为假时,才判别b的值;
只在a、b都为假时,才判别 c的值
例 a=1;b=2;c=3;d=4;m=1;n=1;
(m=a>b)&&(n=c>d)
//结果m=0,n=1
7
条件运算符与表达式
一般形式: expr1 ? expr2 : expr3
➢ 执行过程 ➢ 功能:相当于条件语句,但不能取代一般if语句
➢➢例例如例条优件先求(pi(((xefaxcxr>l运级(=>%>isnaap0=e==pt>+2:算r?fb0‘ri(ab=|n1i)“b)n1符’)?=ta:?|tf(&3’(f+x1xY(可“&:)|“%<-b’?%:x嵌’|0c1dN=d<?:”%0’套”-,=,a1b‘d)z:);0\’;n))?”,cb->’a0’+?’aA+’:bc:a-bp);r非in0tf(“%dex”,par>1b?a:b=)0;
10
说明: ➢ if后面的表达式类型任意 ➢ 语句可以是复合语句 ➢ if(x) if(x!=0) ➢ if(!x) if(x==0) 如:if(a==b&&x==y) printf(“a=b,x=y”); if(3) printf(“OK”); 如:iifn(t‘xa;’) printf(“%d”,’a’); scanf(“%d”,&x); if(x) printf(“x!=0”); else printf(“x==0”);
4
逻辑运算符和表达式
逻辑运算符
➢ 种类: !、&&、|| ➢ 逻辑运算真值表
a
b
!a
真
真
假
真
假
假
假
真
真
假
假
真
!b a&&b a||b
假
真
真
真
假
真
假
假
真
真
假
假
➢ C语言中,运算量: 0表示“假”, 非0表示“真”,
运算结果: 0表示“假”, 1表示“真”,
5
优先级
! (2) 高 && (11) || (12) 低
3
关系运算注意:
➢ 应避免对实数作相等或不等的判断
如:1.0/3.0*3.0==1.0 结果为 0 可改写为:fabs(1.0/3.0*3.0-1.0)<1e-6
➢ 注意区分“=”与“==”
例:int a=0,b=1; if(a=b) printf(“a equal to b”); else printf(“a not equal to b”);