C语言04选择结构.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语言程序课件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语言选择结构》课件
常见错误和调试技巧
1 常见的语法错误
列举一些学习者常犯的语法错误,并给出如何避免和纠正这些错误的技巧。
2 程序调试技巧
分享一些调试C语言程序的实用技巧,以帮助大家更快地找到和修复错误。
总结和练习答疑
总结本PPT课件的主要内容,并回答学习者对选择结构的问题。鼓励学习者进行练习,并提供支持和答疑。
3
应用场景三
通过一个编程实例,让大家进一步理解和应用选择结构。
优缺点与联系
if-else语句和switch语句的联系
展示if-else语句和switch语句之间的联系和相互转换的方法。
选择结构的优点
总结选择结构的优点,包括简化代码和提高程序可读性。
选择结构的缺点
讨论选择结构的一些潜在缺点,以及如何避免常见的问题。
深入理解
if语句的嵌套和if-else 语句的区别
解释嵌套if语句和if-else语句之 间的区别,并给出何时使用它 们的建议。
case标签的取值类型
展示case标签可以使用的取值 类型,并讨论它们的使用限制 和最佳实践。
关键字的使用注意事 项
提供一些关键字使用的注意事 项,以避免常见的语法错误。
流程图
使用流程图来可视化选择结构的 执行流程。
条件语句
if语句
if语句是最简单的条件语句,用于根据条件的真假执行相应的代码块。
if-else语句
if-else语句允许我们在条件为假时执行另一段代码块。
if-else if-else语句
if-else if-else语句允许我们在多个条件之间进行选择。
《c语言选择结构》PPT课 件
在这个PPT课件中,我们将深入探讨C语言的选择结构,包括条件语句、if语句、 switch语句等,帮助大家更好地理解和运用这些结构。
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)
第4章选择结构PPT教学课件
注意:1)A或B都可以是单一语句,也可以是复合语句;
2)else部分不能独立存在。
即else前一定有一个“;”,它必定是if语句的一 部分
2020/12/10
11
注意:在C语言中,表达式e的值为非0时, 系统均按“真值”处理。 如:if (‘a’) printf (“O. K. ”); x = -5; if (x) printf (“O. K. ”); y = 0; if (y==0) printf (“O. K. ”); if (y) printf (“O. K. ”);
( 1 && 1) | | (0 < 2) =1
2020/12/10
6
★ 注意(短路现象)
与运算中,如果第一个表达式=0,则后面的 表达式则不再计算。
例:设a=0,b=10 a++ && b++ 之后,b=10
或运算中,如果第一个表达式=1,则后面的 表达式则不再计算。
例:设a=1,b=10 a++ || b++ 之后,b=10
!a || a>b
(!a) || (a>b)
5>3 && 2 || !8 < 4-2
((5>3) && 2) || ( (!8) < (4-2))
5
逻辑量:当一个量(可以是基本类型的常量或 变量)用作判断时,C编译系统认为:非0—— 真、0——假
逻辑表达式:用逻辑运算符将关系表达式或逻 辑量连接起来有意义的式子 (单个逻辑量、关系表达式是逻辑表达式的特 例)
2020/12/10
7
练习题:
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 语句是多分支的选择语句又称开关语句。
/* 求 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 语句是多分支的选择语句又称开关语句。
C语言选择结构ppt课件
C语言
必修 -----
1
第四章 选择结构 1、定义:从main函数开始,由上往下有些语句执行有些语句不执行 2、两类语句→执行语句:控制语句
2
第四章 选择结构 1、两类表达式 2、if()……else…… 3、switch(){……} 4、例题分析
3
第四章 选择结构
1、两类表达式
(1)关系运算符及关系表达式
8
第四章 选择结构
2、if语句(三种格式)
格式2:
例题
if(表达式)
main()
语句序列1;
{ int m=5;
else
if(m++>5)
语句序列2;
printf("m=%d",m};
else
printf("m=%d",m++);
printf("m=%d",++m);
}
9
第四章 选择结构
2、if语句(三种格式)
< <= > >= == !=
三要素:功能 优先级 结合性
例题:
4>5
5>4>3
5!=4
4>=3
5==5
7=7
4
第四章 选择结构 1、两类表达式 (2)逻辑运算符及逻辑表达式 && (11级) 丨丨(12级) ! ①在C语言中逻辑表达式的值只有1或0两种值。其中,1表示“真”,0表示 “假”。
5
第四章 选择结构
格式3:
例题:
if语句的嵌套:
int x;
if(表达式1)
scanf"%d'',&x);
if(表达式2)
必修 -----
1
第四章 选择结构 1、定义:从main函数开始,由上往下有些语句执行有些语句不执行 2、两类语句→执行语句:控制语句
2
第四章 选择结构 1、两类表达式 2、if()……else…… 3、switch(){……} 4、例题分析
3
第四章 选择结构
1、两类表达式
(1)关系运算符及关系表达式
8
第四章 选择结构
2、if语句(三种格式)
格式2:
例题
if(表达式)
main()
语句序列1;
{ int m=5;
else
if(m++>5)
语句序列2;
printf("m=%d",m};
else
printf("m=%d",m++);
printf("m=%d",++m);
}
9
第四章 选择结构
2、if语句(三种格式)
< <= > >= == !=
三要素:功能 优先级 结合性
例题:
4>5
5>4>3
5!=4
4>=3
5==5
7=7
4
第四章 选择结构 1、两类表达式 (2)逻辑运算符及逻辑表达式 && (11级) 丨丨(12级) ! ①在C语言中逻辑表达式的值只有1或0两种值。其中,1表示“真”,0表示 “假”。
5
第四章 选择结构
格式3:
例题:
if语句的嵌套:
int x;
if(表达式1)
scanf"%d'',&x);
if(表达式2)
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;
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课件
( 课次 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: “);
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: “);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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)
! :从右向左 && :从左向右 || :从左向右
! 算术 关系 逻辑 赋值
① a+b>c&&b==c ② a||b+c&&b-c ③ !(a>b)&&!c||1 ④ !(x=a)&&(y=b)&&0 ⑤ !(a+b)+c-1&&b+c/2
6
C Programming Language
d=a>b f=a>b>c
关系运算注意:
例 若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
例 应避免对实数作相等或不等的判断
9. “20<x<30或x<-100”的C语言表达式是____。
4. 已知char ch='A‘;ch=(ch>='A'&&ch<='Z')?(ch+32):ch;的值为 ____。
5. 已知w=1,x=2,y=3,z=4;则表达式5+w>x?w:y<z?y:z; 的值为 ____。
6. 执行printf(“%d”,(a=2&&(b=-2)));语句后,输出结果 为____。
较高的类型
9
C Programming Language
课堂练习
1.判断一个点是否
-10
落入圆形中。 x*x+y*y<=100
2.判断一个点是否落 入阴影部分。
(小圆的半径为1)
(pow(x-2,2)+pow(y-2,2))<=1|| -2 (pow(x-2,2)+pow(y+2,2))<=1|| (pow(x+2,2)+pow(y-2,2))<=1|| (pow(x+2,2)+pow(y+2,2))<=1
如 1.0/3.0*3.0==1.0 结果为 0 可改写为:fabs(1.0/3.0*3.0-1.0)<1e-6
4
C Programming Language
逻辑运算符和表达式
逻辑运算符
种类: ! && || 逻辑运算真值表(见教材) (逻辑运算--->产生真假值的运算)
C语言中,
运算量: 0表示“假” 非0表示“真”,
11
C Programming Language
7. 已知int x=15,y=5; 执行语句printf(“%d\n”,x%=(y%=2)); 后,输出结果为____。
8. int a=3,b=4,c=5;则值为0的表达式是()
A) ‘a’&&‘b’
B) a<=b
C) a||b+c&&b-c
D) !((a<b)&&!c||1)
变换一下角度,如何判断year不是闰年?
(year%4!=0)||(year%100==0 && year % 400 !=0)
8
C Programming Language
条件运算符与表达式
一般形式: expr1 ? expr2 : expr3 功能:相当于条件语句,但不能取代一般if语句
条例件(运a=算=b符)?可’Y嵌’:套’N’
运算结果: 0表示“假”, 1表示“真”,
5
C Programming Language
若a=4,!a的值为__ 若a=4,b=5, 则a && b 的值为__ 则a || b 的值为__ 则!a || b 的值为__ 4 && 0||2 的值为__
优先级: 结合方向:
! (2) 高
&& (11) 低
如(xx%>02?==11:()x?<10:0?-1:0)
非0 expr1 0
例 优先(级x>:=10)3?x:-x
x?结‘a合’:‘(b方c’>向=‘/:a/x’自=&0右&,表向c达<左=式‘z值’)?为c-’‘取a’eb+x’’p;Ar’2x:值c‡0,表达取式e值xp为r3值
‘a’如 a>b?a:c>d?c:d a>b?a:(c>d?c:d) x>eyx?p1r:11、.5ex/p/xr>2y、,e值xp为r31类.0;型x可<不y 同,值,为表1.达5 式值取
7
C Programming Language
例:判断某一年是否是闰年。条件是 ① 能被4整除,但不能被100整除 ② 或能被400整除。 用year表示年份,判断闰年的逻辑表达式为:
(year%4==0 && year%100!=0)||(year % 400==0)
如果给year输入一个的值,使上面的表达式的值为1 时,则year所代表的年份就是闰年。
C 语言程序设计 Lecture 4
选择结构程序设计
C Programming Language
关系运算符和关系表达式《 逻辑运算符和逻辑表达式《
条件运算符和条件表达式《
if语句《
switch语句《
goto语句《
选择结构程序示例《
2
C Programming Language
关系运算符和表达式
关系运算符