第四章 选择结构程序设计
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语言-第4章 选择结构程序设计
第4章选择结构程序设计注:选择结构的考点,最重要的有两个,一个是逻辑表达式的值,另一个是分支界限。
弄明白这两个知识点,就能够以不变应万变了。
一、单项选择题1. 在C语言中,能代表逻辑值"真"的是。
A) true B)大于0的数C)非0整数D)非0的数2. 表示关系x<=y<=z的c语言表达式为。
A) (x<=y)&&(y<=z) B) (x<=y)AND(y<=z) C) (x<=y<=z) D) (x<=y)&(y<=z)3. 能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是。
A) a>=10 or a<=0 B) a>=0|a<=10 C) a>=10 &&a<=0 D) a>=10‖a<=04、判断char型变量c1是否为大写字母的表达式为。
A)’A’<=c1<=’Z’ B)(c1>=’A’) & (c1<=’Z’)C)(’A’<=c1)AND (‘Z’>=c1) D)(c1>=’A’)&& (c1<=’’Z’)5. 有定义char c; c=getchar(); 判断字符变量c为大写字母的正确表达式为。
A) ‘A’=<c<=’Z’ B)c>=‘A’&& c<=’Z C)A=<c<=Z D) c>=A && c<=Z6. 设有语句“int a=4;b=3,c=-2,d=2;”,则逻辑表达式“a>0&&b&&c<0&&d>0”的值是。
A)1B)0 C)-1 D)出错7. 设a为整型变量,则不能正确表达数学关系10<a<15的C语言表达式是。
第4章 选择结构程序设计《C语言程序设计(第三版)》-电子教案
【注意】
switch后跟的"表达式"允许为任何类型的表达式,其 后跟的"表达式"允许为任何类型的表达式, 后跟的 数据类型和case后面的常量表达式的数据类型一致. 后面的常量表达式的数据类型一致. 数据类型和 后面的常量表达式的数据类型一致 每一个case后的各常量表达式的值不允许重复,否则 后的各常量表达式的值不允许重复, 每一个 后的各常量表达式的值不允许重复 会报错. 会报错. 每一个case后允许有多条语句 可以不用花括号" 后允许有多条语句, 每一个case后允许有多条语句,可以不用花括号"{}" 括起来. 括起来. case和default子句出现的先后顺序可以变动,不会影 子句出现的先后顺序可以变动, 和 子句出现的先后顺序可以变动 响程序的执行结果. 子句也可以省略不用. 响程序的执行结果.default子句也可以省略不用. 子句也可以省略不用 多个case可以共用一组执行语句.例如: 可以共用一组执行语句. 多个 可以共用一组执行语句 例如: … case 'A': case 'B': case 'C':printf("Pass\n");break;
3<5 || ++b
【例4-2】测试短路现象 】
#include <stdio.h> void main() { int a,b; a=b=0; a || ++b; printf("%d,%d\n",a,b); a=b=1; a || ++b; printf("%d,%d\n",a,b); a=b=0; a && ++b; printf("%d,%d\n",a,b); a=b=1; a && ++b; printf("%d,%d\n",a,b); }
C语言 第4章 选择结构程序设计
#include <stdio.h> int main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a>b) 如果 a>b,将a和b对换 , 和 对换 是 、 中的小者 { t=a; a=b; b=t; } a是a、b中的小者 if(a>c) { t=a; a=c; c=t; } if(b>c) { t=b; b=c; c=t; } printf("%5.2f,%5.2f,%5.2f\n",a,b,c); return 0; }
if (disc<0) 8<0为假 为假 printf(“has not real roots\n”); else 的值变为-1 的值变为 { p=-b/(2.0*a); p的值变为 的值变为0.71 的值变为 q=sqrt(disc)/(2.0*a); q的值变为 x1=p+q; x1的值变为 的值变为-0.29 的值变为 x2=p-q; x2的值变为 的值变为-1.71 的值变为 printf(“real roots:\nx1=%7.2f\n x2=%7.2f\n”,x1,x2); } return 0; }
if (disc<0) printf(“has not real roots\n”); else { p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(“real roots:\nx1=%7.2f\n x2=%7.2f\n”,x1,x2); } return 0; 复合语句 }
C语言有两种选择语句: 语言有两种选择语句: 语言有两种选择语句 (1)if语句,实现两个分支的选择结构 语句, 语句 (2)switch语句,实现多分支的选择结构 语句, 语句
C程序设计(第五版)-第4章选择结构程序设计课后习题答案
C程序设计(第五版)-第4章选择结构程序设计课后习题答案1. 什么是算术运算?什么是关系运算?什么是逻辑运算?【答案解析】算熟运算:算术运算即“四则运算”,是加法、减法、乘法、除法、乘⽅、开⽅等⼏种运算的统称。
其中加减为⼀级运算,乘除为⼆级运算,乘⽅、开⽅为三级运算。
在⼀道算式中,如果有多级运算存在,则应先进⾏⾼级运算,再进⾏低⼀级的运算。
C语⾔中的算熟运算符包括:+、-、*、/、++、--、%等种类。
如果只存在同级运算;则从左⾄右的顺序进⾏;如果算式中有括号,则应先算括号⾥边,再按上述规则进⾏计算。
⽰例:$ (1 + 1)^{2} * 4+5 * 3$解析:1. 先进⾏括号内运算1+1,然后进⾏乘⽅运算得到结果4.2. 接下来与4相乘,得到结果163. 因为乘法优先级⼤于加法,因此先进⾏5*3,得到结果154. 最终相加得到结果31结果:31关系运算:关系的基本运算有两类:⼀类是传统的集合运算(并、差、交等),另⼀类是专门的关系运算(选择、投影、连接、除法、外连接等),⽽在C语⾔中,关系运算通常被认为是⽐较运算,将两个数值进⾏⽐较,判断⽐较结果是否符合给定的条件。
常见的关系运算符包括:<、<=、>、>=、==、!=等种类。
其中,前4种关系运算符(<、<=、>、>= )的优先级别相同,后2种(==、!=)也相同。
⽽前4种⾼于后2种。
例如, >优先于==。
⽽>与<优先级相同。
并且,关系运算符的优先级低于算术运算符,关系运算符的优先级⾼于赋值运算符(=)。
逻辑运算:在逻辑代数中,有与、或、⾮三种基本逻辑运算。
表⽰逻辑运算的⽅法有多种,如语句描述、逻辑代数式、真值表、卡诺图等。
⽽在C语⾔中,逻辑运算通常⽤于使⽤逻辑运算符将关系表达式或其它逻辑量连接起来组成逻辑表达式⽤来测试真假值。
常见的逻辑运算符包括:&&、||、!等种类&&:与是双⽬运算符,要求有两个运算对象,表⽰两个运算对象都成⽴,则结果为真,否则结果为假。
C语言程序设计实例教程(第2版)丁爱萍第4章 选择结构程序设计_百度文库
本文由xjsir2010贡献 ppt文档可能在WAP端浏览体验不佳。
建议您优先选择TXT,或下载源文件到本机查看。
第4章 选择结构程序设计 章 第4章 选择结构程序设计 章 4.1 关系运算符及其表达式 4.2 逻辑运算符及其表达式 4.3 条件运算符 4.4 单条件选择if语句 单条件选择 语句 4.5 开关分支 开关分支switch语句 语句 习题4 第4章 选择结构程序设计 章 4.1 关系运算符及其表达式 关系表达式是由关系运算符连接表达式构成的。
1. 关系运算符 1) 关系运算符 关系运算符都是双目运算符,共有如下6种: >,<,>=,<=,==,!= 分别是大于、小于、大于或等于、小于或等于、 等于和不等于。
第4章 选择结构程序设计 章 2) 运算符的优先级和结合性 前4种关系运算符的优先级别相同,后2种也相同,前4 种高于后2种。
关系运算符具有自左至右的结合性。
关系运算符、算术运算符和赋值运算符之间的优先级次序 为:算术运算符优先级最高,关系运算符次之,赋值运算 符最低。
2. 关系表达式 1) 关系表达式 由关系运算符组成的表达式称为关系表达式。
关系运算符两边的运算对象可以是C语言中任意合法 的表达式。
例如,x>y,(x=5)<=y,x==y等。
第4章 选择结构程序设计 章 2) 关系表达式的值 关系表达式的值是整数0(代表结果为逻辑假)或 1(代表结果为逻辑真),在C语言中不存在专门的“逻 辑值”,此处请读者务必清楚。
例如,关系表达式 (x=3)>(y=4)的值为0。
关系表达式常用在条件语句和循环语句中。
3) 举例 一般情况下,关系表达式用在选择结构或循环结 构的关系判断中,并不需要输出关系表达式的值,这 里我们为了了解关系表达式的内部运行机制,在例4-1 中可以看到关系表达式的值只能是0或1。
第4章 选择结构程序设计 章 【例4-1】关系表达式示例。
#include "stdio.h" main( ) { char x='m' , y='n' ; int n ; n=x<y ; printf("%d\n" , n) ; n=x==y-1 ; printf("%d\n" , n) ; n=('y'!='Y')+(5<3)+(y-x==1) ; printf("%d\n" , n) ; } 第4章 选择结构程序设计 章 运行结果: 1 1 2 通过上面的程序可以看出:关系运算的结果为 “真”时,值等于1;结果为“假”时,值等于0。
选择结构程序设计
4.1 选择结构 4. 1 If…Then语句(单分支结构)
If <表达式> Then 语句块 End If 或 If <表达式> Then <语句> 例:已知两个数x和y,比较它们的 大小,使得x大于y。 If x<y Then t=x : x=y: y=t End If 或 If x<y Then t=x: x=y: y=t
图 1-3-8 过程 两个数交换
x
y
t
4.2 If…Then…Else语句(双分支结构) If <表达式> Then <语句块1> Else <语句块2> End If
双分支选择结构执行过程
If <表达式> Then <语句1> Else <语句2>
例如:输出x,y两个中值较大的一个值。 IF X>Y Then Print X Else Print Y End If 也可以写成如下的单行形式: IF X>Y Then Print X Else
注意:
对于多层IF嵌套结构中,要特别注意IF与Else的配 对关系,一个Else必须与IF配结,配对的原则是:在写 含有多层嵌套的程序时,建议使用缩进对齐方式,这样
容易阅读和维护。
4.4 选择结构的嵌套 在IF语句的Then分支和Else分支中可以完整地嵌套另 一IF语句或Select Case语句,同样Select Case语句每一个 Case分支中都可嵌套另一IF语句或另一Select Case语句。 下面是两种正确的嵌套形式:
(1)IF <条件1> Then ….. if <条件2> Then …… Else ….. End If …. Else …. IF <条件3> Then ….. Else ….. End If ….. End IF (2)IF <条件1> Then ….. Select Case … Case …… IF <条件1> Then …… Else ….. End If …… Case…. ….. End Select …. End IF
实验4 选择结构程序设计
实验4 选择结构程序设计1.实验目的(1)熟练掌握if语句的三种形式,在实际中能根据具体情况灵活选择某种形式的if语句(2)进一步熟悉关系表达式和逻辑表达式(3)熟练掌握switch语句的功能、格式和执行过程(4)能用switch语句实现简单的选择功能2.实验内容2.1基础知识(1)在横线上填上适当的标点符号。
该程序的功能是输出a、b中的最大值。
#include “stdio.h”void main(){ int a,b,t;scanf("%d %d",&a,&b);if___b>a_______ t=a;a=b;b=t;____ptintf("\nmax=%d",a);}(2)在横线上填上适当的标点符号。
将题(1)改写成if—else的形式:#include “stdio.h”void main(){ int a,b,t;scanf("%d %d",&a,&b);if___a>b_______ptintf("\nmax=%d",a);____ /* 思考:此处的符号是否可以省略?什么情况下不能省略?*/else____ptintf("\nmax=%d",b);____}(3)在横线上填上适当的标点符号。
switch (表达式){ case_____常量表达式1____ 语句1____case_____常量表达式2____ 语句2____……default____ 语句n____ }(4)对于if—else语句,如果分支较多,有时用swtich语句更加合适,swtich语句是多分支选择结构,其执行过程:首先比较___________与___________是否相等,如果相等,则执行case后面的语句,如果都不相等,则执行__________。
2.2阅读程序(1)#include “stdio.h”void main(){ int number;printf(“number=“);scanf(“%d”,&number);if (number%10==0) printf(“%d是10的倍数。
C语言程序设计第四章
运行情况: 1989↙ 1989is not a leap year.
2000↙
2000 is a leap year.
C程序设计
第五章
选择结构程序设计
例4.6 求
2 ax bx c 0 方程的解
#include "stdio.h" #include "math.h" main() {float a,b,c,d,disc,x1,x2,realpart,imagpart; scanf("%f,%f,%f",&a,&b,&c); printf("The equation"); if (fabs(a)<=1e-6) printf("is not a quadratic"); else disc=b*b-4*a*c; if(fabs(disc)<=1e-6) printf("has two equal roots:%8.4f\n",-b/(2*a)); else if(disc>1e-6) {x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); printf("has distinct real roots:%8.4f and %8.4f\n",x1,x2); } else {realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf("has complex roots:\n"); printf("%8.4f+%8.4fi\n",realpart,imagpart); printf("%8.4f-%8.4fi\n",realpart,imagpart); } }
C语言课件 选择结构程序设计
述
4-3 switch语句和break语句
4.3.1 break语句(辅助控制语句)
break语句的格式:break; break语句不能单独使用,只能与switch和循环语句
结合使用。 功能:在循环语句和switch语句中,终止并跳出循环
体或开关体。
4.3.2 switch语句(开关语句)
格式: switch(表达式) { case E1: 语句组1;break;
C
语 言
关系运算注意:
程
序
例 应避免对实数作相等或不等的判断,而只能
设
使用“<”和“>”,原因在于舍入误差可能造
计
成
两个逻辑上应该相等的数不相等。
如 1.0/3.0*3.0==1.0
可改写为:fabs(1.0/3.0*3.0-1.0)<1e-6
例 注意区分“=”与“==”
第 二 章 数 据 描 述
1表示“真”,
描
述
C
语 言
优先级与结合方向:
程
序
设 计
!
高
&& 低
||
! :从右向左
第
二
&& :从左向右
章
数
据
|| :从左向右
描
述
高
!(非) 算术运算符 关系运算符 &&和|| 赋值运算符=
低
C
语
言
程
逻辑表达式的值:
序
设
计
例 a=4;b=5;
!a
值为0
a&&b
值为1
a||b
值为1
!a||b
值为1
第四章 选择(分支)结构程序设计
用一个逻辑表达式来表示一个复杂的条件。
例如:判断某一年是否闰年。 闰年:能被4整除,但不能被100整除;或能被 400整除。
(year%4==0&&year%100!=0)||year%400==0
表达式为“真”,闰年条件成立,是闰年,否则 非 闰年。
复合语句的形式:
{ 语句1; 语句2; 语句3; ……
}
4.3 if语句
4.3.1 if语句三种形式
复合语句在选择结构,循环结构中经常用到。 我们在逻辑上把复合语句看成是一条语句。
4.3 if语句
4.3.1 if语句三种形式
例:要求用户输入一个实数,然后求出这个实数 的绝对值。
4.3 if语句
逻辑运算的真值表:
a b a&&b
a||b
真真 真
真
真假 假
真
假真 假
真
假假 假
假
a
!a
真
假
假
真
4.2 逻辑运算符和逻辑表达式
4.2.1 逻辑运算符及其优先顺序
例:逻辑运算举例 a&&b 若a、b为真,则a&&b为真。 a||b 若a、b之一为真,则a||b为真。 !a 若a为真,则!a为假,反之若a为假,
4.3.1 if语句三种形式
▪ 在C语言中,表达式P的值是非0时,系统均按真 值处理。
例(1) if (‘a’) printf(“ok!”); (2) x=-5; if(x) printf(“ok!”); (3) y=0; if(y==0) printf(“ok!”); if(y) printf(“ok!”);
915145-C语言程序设计-第4章 选择结构程序设计
老年人
票价分类 两日联票
65周岁及以上
选择两日联票
• 常见错误
– 条件表示时,“==” 运算符误写作“=”运算符 – 数值0、1、…、9与数字字符’0’、’1’、…、’9’的混淆
4.2.2 逻辑运算
• • • 逻辑运算符
– 逻辑非(!)、逻辑与(&&)和逻辑或(||)
• 逻辑表达式求值方法
– 在逻辑表达式的求值过程中,按其操作数从左至右的 计算顺序,当某个操作数的值可以确定整个逻辑表达 式的值时,其余的操作数不再计算
4.2.3 短路求值
例如:假如有变量定义为 int x,y,z; 求下列表达式执行后,表达式的值和变量的值
序号
① ② ③ ④ ⑤ ⑥
变量初始值
x=y=z=1; x=2,y=0,z=1; x=y=z=1; x=0,y=1,z=2; x=0,y=1,z=2; x=0,y=1,z=2;
单分支 双分支 多分支 综合决策
– 选择控制结构
• 即根据条件进行判断选择执行相应操作的 问题,也称为分支控制结构 • 一般分为单分支、双分支和多分支三种结 构
• 实现的关键
– 判断条件的合法描述 – 选择操作流程的合理设计
4.1 门票价格问题
表4-1 上海迪士尼主题乐园的门票价格表
平日票
370
4.2 条件的表示
微视频:短路求值示例
4.3 单分支结构
• 问题
– 迪士尼门票规则
• 老年人:65周岁以上 平日票:280元,高峰日票:375元
分析 – 需要对条件(年龄大于等于65)进行判断
如果为真,则享受优惠票价 平日票:280元,高峰日票:375元
选择结构课件
N 语句2
在if和else后面可以有多个操作语句,则if语句 的形式变成: if (表达式) {语句序列1} else {语句序列2}
教育改变命运,励志改变人生。
第四章 选择结构程序设计—if语句
if语句的其他形式
当语句2为空时, else可以省 略,if语句的形式变换为: if (条件) 语句 任务2:由键盘输入x、y两个数,要求从大到小排序并输出。 分析: 关键技术:两个变量互换的算法是:t=x;x=y;y=t; 定义x、y、t用于存放输入的两个数和中间变量; 输入x、y if(x<y) {t=x;x=y;y=t;} 输出x、y
引例
计算函数值
sin( x) y x 1
需考虑:① 输入x ② 判断x值
x0 x0
③ 根据x值,计算y值
④ 输出y值 显然②③顺序程序不能够实现,须引入选择结构程序。
教育改变命运,励志改变人生。
第四章 选择结构程序设计—if语句
引例:计算函数值
sin( x) y x 1 x0 x0
通过这几个例子,我们可以发现,计算机编程的核心是算法,算法通用于各种语 言。算法可以通过不同的编程语言来实现。 教育改变命运,励志改变人生。
第四章 选择结构程序设计—if语句
任务3: 任给a、b、c三个数,按从大到小的顺序输出。
分析: 1)对于任意两个数a,b:若a>b, 则输出a,b,否则交换a和b 2)对于三个数,有6种可能: a>b>c a>c>b b>a>c b>c>a c>a>b c>b>a 3) 使用判断-交换法: ① 若a<b,则交换a和b ② 若a<c,则交换a和c 结果a最大 ③ 若b<c,则交换b和c 结果a>b>c 交换方法: 设a=5,b=8 a=b;b=a; 结果a=8,b=8(错误)
计算机二级C语言第4章 选择结构程序设计
①应当注意if与else的配对关系。原则是else总是与它上面最近的、未
配对的if配对。
②如果if与else的数目不一样,为了避免在if与else配对时出错,建议
读者使用“{}”来限定了内嵌if语句的范围。如下形式的嵌套语句:
if(表达式1)
{if(表达式2)语句1} /*内嵌if*/
这时形成了阶梯形的嵌套if语句,此形式的语句可以用以下语句形式
表示,看起来层次比较分明。
4.4.2 if语句的嵌套
if(表达式1)
…
语句1
…
else if(表达式2)
else if(表达式n-1)
语句2
语句n-1
else if(表达式3)
else
语句3
语句n
嵌套选择结构主要用于处理多条件的问题。设计嵌套选择结构时,应
②只在else子句中嵌套if语句,形式如下:
if(表达式1)
语句1
else
if(表达式2) 语句2
else 语句3
③不断在else子句中嵌套if语句就形成多层嵌套,形式如下:
if(表达式1) 语句3
语句1
…
else
if(表达式n)
if(表达式2) 语句n
语句2
else(表达式n)
else(表达式3) 语句n
case常量表达式2: 语句2
…
case常量表达式n: 语句n
default:
语句n+1
}
【说明】
①switch后面的表达式必须用圆括号括起来,其取值必须是整型或字
符型。switch语句后面用花括号“{}”括起来的部分称为switch语句体,
第4章 C语言选择结构程序设计
《 C语言程序设计》
流程图
真 (非0) 表达式
假(0)
语句1
语句2
《 C语言程序设计》
例4.1
【例4.1】试用if…else语句编写程序,判断学生成绩 是否合格。
判断方法: ①如果成绩大于等于60,输出及格 ②否则输出成绩不及格
《 C语言程序设计》
4.2 if语句 if语句
C语言中if条件语句有三种结构形式,分别是: if结构(单分支结构) if if-else if-else结构(双分支结构) if-else-if结构 (多分支结构) if-else-if
《 C语言程序设计》
例4.5 设计一个应用程序,判断某一年是否为闰年
判断方法: ①如果该年能被4整除而不能被100整除,则为闰年; ②或者能被400整除也是闰年。 如: 1996年、2000年是闰年 1996年 2000年是闰年
1998年 1900年不是闰年 1998年、1900年不是闰年
逻辑表达式为: year%4==0 && year%100!=0 || year%400==0
4.4 条件运算符和条件表达式
条件运算符: 1、条件运算符:?:是C语言中惟一的一个三 目运算符。 一般形式为: 2、一般形式为: 表达式1 ? 表达式2 : 表达式3 3、操作过程:如果表达式1成立,则表达式2的 操作过程: 值就是此条件表达式的值;否则,表达式3 的值是此条件表达式的值。
《 C语言程序设计》
《 C语言程序设计》
4.2.2 if-else结构 if-else结构
1、格式: if(条件表达式 语句1 条件表达式) if(条件表达式) 语句1; 真 (非0) else 语句2; 语句 ; 语句1 2、执行过程:
VB第4章 选择结构
教案讲稿第四章选择结构程序设计[旧课复习]:复习内容:1.已学过的几个常用的控件2.控件中输入输出语句的使用复习目的:让学生掌握基本控件的使用复习时长:大约10分钟[新课导入]:导入方式:以日常生活中的实例让学生理解什么是选择结构导入目的:增强学生的理解能力导入时长:大约5分钟[新课讲授]:重点:各种分支结构语句的使用难点:选择结构的嵌套方法:运用多媒体辅助教学,采用讲授法和案例教学法4.1算法介绍4.1.1算法介绍一、算法概述所谓算法,是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每个指令表示一个或多个操作。
算法有以下特征:(1)有穷性(2)确定性(3)可行性(4)输入(5)输出4.1.2算法的表示常用的表示算法的方法有:自然语言、伪代码、流程图,本章重点介绍用流程图表示算法。
流程图用一些图框、流程线以及文字说明来表示算法。
用图来表示算法,直观、形象、容易理解。
包括:传统流程图、结构化流程图。
因传统流程图中流程线的使用无限制可能导致流程图毫无规律。
结构化流程图使用3中基本结构,即:顺序结构、选择结构和循环结构(如图4-1所示),从而大大提高流程图的规律性。
图4-1(a)顺序结构流程图图4-1(b)选择结构流程图图4-1(c)循环结构流程图4.2条件语句VB中选择结构通过条件语句来完成,包括:单分支、双分支和多分支等。
4.2.1单分支结构语句单分支结构语句包括单行结构和块结构。
1.“单行结构”格式为:If <条件表达式> Then <语句序列>2. “块结构”格式为:If <条件表达式> Then<语句序列>说明:(1)“条件表达式”可以是关系表达式、布尔表达式或者数值表达式。
如果是数值表达式,则非0值为真,0为假。
(2)当条件表达式的值为真时执行语句序列。
【例4-1】已知两个数x和y,比较它们的大小,使得x>y。
分析:对任意的两个数x、y,其中x若为大的数,直接输出即可,若 y为大的数,则交换两数即可。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关系表达式
逻辑表达式
选择结构程序设计
主要内容
4.1 关系运算符和关系表达式
4.2 逻辑运算符和逻辑表达式
4.3 if语句
4.4 switch语句
4.5 程序举例
4.1 关系运算符和关系表达式
1.关系运算符及其优先次序 1. < (小于) 2. <= (小于或等于) 优先级相同(高) 3. > (大于) 4. >= (大于或等于) 5. == (等于) 优先级相同(低) 6. != (不等于)
4.3 if语句
2.if语句的嵌套
在if语句中又包含一个或多个if语句称为if语句的嵌套 形式: if() if() 语句1 else 语句2 内嵌if else if() 语句3 else 语句4
4.3 if语句
匹配规则: else总是与它上面、最近的、统一复合语句中、未配 对的if语句配对
例:
语句1 语句2
Y 语句1 条件 N 语句2
例: if (a>b) printf(“%d”,a); else printf(“%d”,b);
4.3 if语句
(3)if(表达式1)语句1 else if(表达式2)语句2 else if(表达式3)语句3 …… else if(表达式m)语句m else 语句n
4.4 switch语句
说明: (1)switch( ) 括号内的表达式允许是任何类型 (2) 每一个case的常量表达式的值必须互不相同, 否则 会出现互相矛盾的现象
4.4 switch语句
(3) 各个case和default的次序不影响执行结果 default∶( printf ″error\n″);
优先次序: !非 算术运算符 关系运算符 &&和‖ 赋值运算符
高
低
4.2 逻辑运算符和逻辑表达式
2.逻辑表达式 •用逻辑运算符将关系表达式或逻辑量连接起来的式子就 是逻辑表达式。 •逻辑表达式的值应该是一个逻辑量“真”或“假”。
任何非零的数值被认作“真”
例:设a=4,b=5: !a的值为0 a||b的值为1 4&&0||2的值为1
4.4 switch – 多分支选择语句
switch语句的格式: switch (表达式)
{case 常量表达式1:语句1 case 常量表达式2:语句2 … case 常量表达式n:语句n default :语句n+1 }
4.4 switch语句
例: 要求按照考试成绩的等级输出百分制分数段,用 switch语句实现: switch(grade) { case ′A′∶ printf (″85~100\n″); case ′B′∶ printf (″70~84\n″); case ′C′∶ printf (″60~69\n″); case ′D′∶ printf (″<60\n″); default∶( printf ″error\n″); }
上例中的程序段有四个,请判断哪个是正确的?
程序1: 程序3: if(x<0) y=-1; y=-1; 正 if(x!=0) else 确 { if(x>0) y=1;} if(x= =0) y=0; else y=0; else y=1; 程序3: y=-1; if(x!=0) if(x>0) y=1; else y=0; 程序4 2: : 程序 y=0; if(x>=0) if(x>0) y=1; if(x>=0) else y=0; { if(x>0) y=1;} else y=-1; else y=-1; 程序4: y=0; if(x>=0) if(x>0) y=1; else y=-1;
• 关系表达式的值是一个逻辑值,即“真”或“假”。 例:关系表达式”a>b”的值为“真”,表达式的值为1。
4.2 逻辑运算符和逻辑表达式
1.逻辑运算符及其优先次序 (1)&& (逻辑与) 相当于其他语言中的AND (2)|| (逻辑或) 相当于其他语言中的OR (3)! (逻辑非) 相当于其他语言中的NOT 例:a&&b 若a,b为真,则a&&b为真。 a||b 若a,b之一为真,则a||b为真。 !a 若a为真,则!a为假。
4.4 switch语句
怎样才能得到期望的结果? case „A‟: printf (″85~100\n″);break; case „B‟: printf (″70~84\n″);break; case „C‟: printf (″60~69\n″);break; case „D‟: printf (″<60\n″);break;
a&&b的值为1 !a||b的值为1
4.2 逻辑运算符和逻辑表达式
例:5>3&&8<4-!0
自左向右运算
5>3逻辑值为1 !0逻辑值为1 4-1值为3
表达式值为0
1&&0逻辑值为0
8<3逻辑值为0
4.2 逻辑运算符和逻辑表达式
在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。 (1)a&&b&&c 只有a为真时,才需要判断b的值,只有a和b都为真时, 才需要判断c的值。 (2)a||b||c 只要a为真,就不必判断b和c的值,只有a为假,才 判断b。a和b都为假才判断c
4.3 if语句
#include<stdio.h> 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); }
4.3 if语句
4.3 if语句
说明:
(3)在if和else后面可以包含一组语句,此时用大 括号将几个语句括起来成为一个复合语句 大括号外不需再加; if(a<b) {t=a; a=b; b=t; }
4.3 if语句
例4.1 输入两个实数,按代数值由小到大的顺序输出 这两个数 #include<stdio.h> main() a>b { y float a,b,t; n scanf(″%f,%f″,&a,&b); t=a if(a>b) a=b {t=a; b=t a=b; b=t;} printf(″%4.2f,%4.2f\n″,a,b); }
正 确
4b) max=a; else max=b; C语言中上述程序可以用一条语句表达: max=(a>b)?a∶b;
条件表达式
4.3 if语句
3.条件表达式
•运算符号 ? :配合
•格式
•功能
表达式1?表达式2∶表达式3
判断表达式1的值,如果成立就执行表 达式2,否则就执行表达式3
case ‟A‟: printf (″85~100\n″);
case ‟C‟: printf (″70~84\n″); case ‟B‟: printf (″60~69\n″); case ‟D‟: printf (″<60\n″);
4.4 switch语句
(4) switch语句只判断一次,之后依次执行
4.3 if语句
说明:
(1)3种形式的if语句中在if后面都有表达式, 一般为逻辑表达式或关系表达式。 if(a>b) printf(“a=%d”,a); (2) 第二、三种形式的if语句中,在每个 语句结束处有一个分号 if(a>b) printf(“a=%d”,a); else printf(“b=%d”,b);
if() if() 语句1
例:
if() {if() 语句1}
else
if() 语句2 else 语句3
else
if() 语句2 else 语句3
当if和else数目不同时,可以加大括号来确定配对关系。
4.3 if语句
-1 (x<0) 例 4.3 有一个函数 y= 0 (x=0),编一程序,输入一个x 值,输出y值。 1 (x>0) 算法1: 输入x 若x<0,则y=-1 若x=0,则y=0 若x>0,则y=1 输出y 算法2: 输入x 若x<0,则y=-1 否则: 若x=0,则y=0 否则 y=1 输出y
4.3 if语句
说明:
(3)例:a=1;b=2;c=3;d=4 max=a>b?a:c>d?c:d; 执行后 max=4;
条件运算符的结合方向 “自右至左”
4.3 if语句
说明:
(4) 例:a>b?(a=100): (b=100);
a>b?printf(“%d”,a):printf(“%d,b”); “表达式2”和“表达式3”不仅可以是数值表达式,还可以 是赋值表达式或函数表达式
答 案
(year%4==0&&year%100!=0)||year%400==0
值为真(1)是闰年,否则为非闰年。
4.3 if语句
1.if语句的三种基本形式
(1)if (表达式) 语句
表达式 假 (0)
真(非0)
例: if(x>y)
语句
printf(“%d”,x);
4.3 if语句
(2)if(表达式) else
switch(grade) { case ′A′∶ printf (″85~100\n″); case ′B′∶ printf (″70~84\n″); case ′C′∶ printf (″60~69\n″); case ′D′∶ printf (″<60\n″); default∶( printf ″error\n″); } 若输入A 会有怎样的输出结果? 输出所有printf语句中的内容