第4讲C语言选择结构PPT课件

合集下载

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。

第4章-选择结构PPT课件

第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的倍数。采用自顶向下的分析方法,分析如下

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

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

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语言程序课件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课件

《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课件

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语言 第四章 选择结构课件

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)

C语言第四章选择结构ppt课件

C语言第四章选择结构ppt课件
/* 定义实型变量 x , y */
/* 求 x 的绝对值并赋给 y */
/* 输入 x 的值 */
/* 输出 x 的绝对值 */
/* 编译预处理:包含头文件 */
二、if ... else 语句
对这一句话“如果x>=0则y=x,如果x<0则y=-x”,可以写出以下语句:
表达式1 ? 表达式2 :表达式3
表达式1为真,结果为表达式2的值 表达式为假,结果为表达式3的结果; 运算符 “ ?:”的优先级只在逗号和赋值运算 符之前;表达式2和表达式3只可能执行一个;这是C语言中的唯一一个三目运算符;条件运算符的结合方向为“自右自左”。
例:已知a=5,b=6,c=7,d=8,n=2 ; 执行以下语句后表达式的值为多少? n的值为多少? (a < b ) ? ( c + d ) : ( + + n )
if ( 表达式1 ) if ( 表达式2 ) 语句1; else 语句2;else if ( 表达式3 ) 语句3; else 语句4;
实现if ~ else 正确配对方法:加{ }
五、条件运算符
能否把两条语句合成一句,更好地体现这种逻辑关系呢?这就是 if ...... else 语句的功能。
简单的if 语句只能表达“如果 ,那么 ”的含义,而if ...... else 语句却能表达“如果 那么 否则 ”的含义。
If ( x>=0) y=x;if (x<0) y=-x;
a>b?a:c>d?c:d
a>b?a:(c>d?c:d)
表达式值为15,n=2
六、 switch 语句
switch 语句是多分支的选择语句又称开关语句。

第4讲选择结构

第4讲选择结构

4
二、if 语句的形式2—双边选择结构
格式: if (表达式) 语句1 else 语句2
执行过程:
表达式取值非0,即条件成立,执行语句1后继续向下执行 判断条件 表达式取值为0,即条件不成立,跳过语句1执行语句2后向 下执行 (入口)
Y P
语句1
N
语句2
(出口)
5
二、if 语句的形式2—双边选择结构
x=2,y=1
*/
17
用多层选择结构求分段函数的值
从键盘上输入2时程序的运行顺序
main ( ) { int x,y; scanf("%d",&x); if(x>0) y=1; else if(x==0) y=0; /*x>0不成立再判断x==0是否成立*/ /* x>0和x==0都不成立,即x<0 */ else y=-1; printf("x=%d,y=%d\n",x,y); }
15
求分段函数的值
根据所输入的x之值,求:
y=
1 0 -1
(x>0) (x=0) (x<0)
程序分析:要对x 的值判断之后计算y 的值,要用到 选择结构。考虑到要进行两次判断,因而使用单边或双 边选择结构都不能很好地解决这一问题,应使用多层选 择结构或选择结构的嵌套。
16
用if 嵌套结构求分段函数的值
第4讲
选择结构程序设计
要设计选择结构程序,要考虑两个方面的问题:一
是在C语言中如何来表示条件,二是在C语言中实现选择
结构用什么语句。 在C语言中表示条件,一般用关系表达式或逻辑表达
式,实现选择结构用if语句或switch语句。
4.1 if语句 4.2 switch语句

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

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

void main( ) {
int score;
printf("input a score:");
scanf("%d",&score);
switch(score/10) {
case 10:
case 9: printf("优秀\n");break;
case 8: printf("良好\n");break;
(2)||
(逻辑或) 相当于其他语言中的OR
(3)!
(逻辑非) 相当于其他语言中的NOT
例:a&&b 若a,b为真,则a&&b为真。
a||b 若a,b之一为真,则a||b为真。
优!先a次序:若a为真,则!a为假。 !(非)->&&()->||() 逻辑运算符中的“&&”和“||”低于关系运算符,“!”高于算 术运算符
ch=ch+32; printf("%c\n",ch); } }
4.3.2 双分支if语句
双分支if语句的基本格式为: if(表达式)
语句块1; else
语句块2;
注意:⑴ 语句块1或语句块2都可以是单一语句,也可以是 复合语句;else部分不能独立存在,即else之前一定有 一个“;”号,它必须是if语句的一部分。
2.逻辑表达式
•用逻辑运算符将关系表达式或逻辑量连接起来的式子就 是逻辑表达式。 •逻辑表达式的值应该是一个逻辑量“真”或“假”。
例:设a=4,b=5: !a的值为0 a||b的值为1 4&&0||2的值为1
任何非零的数值被认作“真”

第四章C语言选择结构PPT课件

第四章C语言选择结构PPT课件
( 课次 1,课时 3 )
2008-04-18
1
1、关系运算和逻辑运算
2、if语句构成的选择结构
3、条件表达式构成的选择结构
4、switch语句以及用switch语句和
break语句构成的选择结构
2008-04-18
2
➢ C语言中的逻辑值:用非零值来表示“真”, 用零表示“假”。
➢ 关系运算符:
else子句的if语句 : 语句:
if(表达式1)
if(表达式1)
if(表达式2)
{ if(表达式2) 语句1}
语句1
else
else
语句2
语句2 注意:在if子句中的一对花括号不可
else
缺少.因为c语言语法规定:else子
语句3
句总是与前面最近的不带else的if相
结合,与书写格式无关.
2008-04-18
main()
{ int x,y;
printf(“Enter x &y:\n”);
scanf(“%d %d”,&x,&y);
printf(“x,y:%d %d\n”,x,y);
if(x>y)printf(“x=%d\n”,x);
if(y>x)printf(“y=%d\n”,y);
if(x==y)printf(“x==y =%d\n”,x);
}
2008-04-18
8
➢ 例2、输入三个整数,分别放在变量a、b、c中,程序把输入的 数据重新按由小到大的顺序放在变量a、b、c中,最后输出a、b、 c中的值。
main()
{ int a,b,c,t;
printf(“input a,b,c: “);

C语言-04-嵌套选择结构ppt课件

C语言-04-嵌套选择结构ppt课件

case ‘a’:printf(“90—100\n”);break;
grade(a,b,c,d,e):\n”); case ‘b’:printf(“80—90\n”);break;
scanf(“%c”,&grade); case ‘c’:printf(“70—80\n”);break;
case ‘d’:printf(“60—70\n”);break;
printf( “Today is Monday!”);
else if (i= =2)
printf( “Today is Tuesday!”);
else if (i= =3)
printf( “Today is Wednesday !”);
else if (i= =4)
printf( “Today is Thursday!”);
}
2
if嵌套举例
#include<stdio.h>
main( )
{ int x,y;
scanf(“%d %d”,&x,&y);
if(x>0)
{ if(y>0)printf(“ 1”);
else printf(“ -1”);
}
else printf(“ 0”,);
}
完整最新ppt
3
4.2.2 if … else if结构
(5) 执行完一个case语句块后,流程转到下一个 case语句继续执行
(6) 在执行过程中碰到break语句,程序退出switch 结构
完整最新ppt
8
例、根据学生成绩的等级打印gt;
main( )
switch(grade)
{ char grade;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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”);
相关文档
最新文档