C语言程序设计第四章选择结构(精)
C语言程序设计第4章选择结构程序设计ppt课件
![C语言程序设计第4章选择结构程序设计ppt课件](https://img.taocdn.com/s3/m/e15a3ec5cd22bcd126fff705cc17552707225eab.png)
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语言C程序设计(4 选择结构)
![山东理工大学史上最全C语言C程序设计(4 选择结构)](https://img.taocdn.com/s3/m/f1ddf939aeaad1f346933fe0.png)
思考:输入年和月,输出这个月份的天数?
定义年(year),月(month),天数(day),输入年,月
switch
month
1,3,5,7,8,10,12
case 4,6,9,11
day=31;
day=30;
2
Y 闰年? N
day=29
day=28
输出年,月对应的天数
19
#include <stdio.h>
6
4.5从键盘输入两个整数,求出其中的较大数并输出。
#include<stdio.h> main() {
int a,b,max; printf("请输入两个整数:\n"); scanf("%d%d",&a,&b); if(a>=b) max=a; else max=b; printf("较大数为%d\n",max); }
else if(income<=5000)
5 >12500
tax=(income-3500)*0.03;
税率(%) 0 3 10 20 30
else if(income<=8000)
tax=(5000-3500)*0.03+(income-5000)*0.1;
else if(income<=12500)
• 结合方向:自右向左
取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
C语言-第4章 选择结构程序设计
![C语言-第4章 选择结构程序设计](https://img.taocdn.com/s3/m/c4e7625627284b73f24250fc.png)
第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语言程序设计(第三版)》-电子教案
![第4章 选择结构程序设计《C语言程序设计(第三版)》-电子教案](https://img.taocdn.com/s3/m/c3cca106eff9aef8941e06fe.png)
【注意】
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章 选择结构程序设计
![C语言 第4章 选择结构程序设计](https://img.taocdn.com/s3/m/6bd8b51859eef8c75fbfb3c5.png)
#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语言程序设计第四单元选择结构程序设计
![C语言程序设计第四单元选择结构程序设计](https://img.taocdn.com/s3/m/5b639129941ea76e59fa046e.png)
思路指导
输入:输入学生的成绩存储到变量score中 输出:根据学生的成绩输出学生的等级 条件判断:判断学生成绩符合哪个范围 处理:根据判断,输出学生的等级
相关知识
1.多重if(多分支if语句)的语法格式 if(表达式1)
{语句体1} else if(表达式2)
{语句体2} else if(表达式3)
/*母亲身高*/
printf("你是男孩(b) 还是女孩(g)?");
scanf("%1s", &sex);
printf("你输入你爸爸的身高(cm):");
scanf("%f", &faheight);
printf("你输入你妈妈的身高(cm):");
scanf("%f", &moheight);
条件1 条件2
语句组1 语句组2
条件
语句组n+1 语句组n
语句组n 语句组n+1
相关知识
(二)解决选择问题的基本步骤和方法
选择结构是结构化程序设计的三种结构之一,也是常用的一种 结构,在大多数的程序中都包含有选择结构,一般来说解决这样 的问题用以下的方法和步骤:
1. 判断解决的问题是否是选择问题。 2. 若是选择问题,则判断是哪种选择结构类型,是单分支、双 分支还是多分支结构。 3. 若是选择问题,确定选择结构,确定选择条件、执行过程与 结束过程。 4. 用C语言描述。
此外,如果喜爱体育锻炼,那么可增高身高2%;如果有良 好的卫生饮食习惯,那么可增加身高1.5%。
思路指导
输入:性别(用字符型变量sex存储,输入字母g表示女性, 输入字符b表示男性)、父母身高(用实型变量存储, faheight为其父身高,moheight 为其母身高)、是否喜爱体 育锻炼(用字符型变量sports存储,输入字符y表示喜爱,输 入字符n表示不喜爱)、是否有良好的饮食习惯(用字符型变 量diet存储,输入字符y表示喜爱,输入字符N表示不喜爱)。 输出:身高 处理:利用给定公式和身高预测方法对身高进行预测。 判断条件:性别男还是女、是否喜爱体育锻炼、是否有良好 的饮食习惯。
C程序设计(第五版)-第4章选择结构程序设计课后习题答案
![C程序设计(第五版)-第4章选择结构程序设计课后习题答案](https://img.taocdn.com/s3/m/7394f6004531b90d6c85ec3a87c24028915f85f1.png)
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章 选择结构程序设计_百度文库
![C语言程序设计实例教程(第2版)丁爱萍第4章 选择结构程序设计_百度文库](https://img.taocdn.com/s3/m/950afd250722192e4536f625.png)
本文由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。
高树芳C语言程序设计--第四章
![高树芳C语言程序设计--第四章](https://img.taocdn.com/s3/m/443e2580680203d8ce2f24e7.png)
4.5 switch语句
案例4-10 计算成绩级别 案例4-11 根据月份求季度 案例4-12 输入算式做四则运算
38
4.5 switch语句
案例4-10 [案例任务]
计算成绩级别
输入百分制成绩,输出成绩级别A、B、C、D、E。 90~100分以上为A,80~89分为B,70~79为C, 60~69为D,0~59为E,其他成绩则显示“成绩 错误!”。
26
4.4
if语句
4.4.3多分支
案例4-7 用多分支求解分段函数
27
4.4
if语句
4.4.3多分支
案例4-7 用多分支求解分段函数
[案例任务]
对于如下函数: 用scanf函数输入x的值,输出y的值。 运行结果如下(输入的数据是9)
[解决方案]使用if „ else if„else语句。
28
4.4
分析下列程序的运行结果,掌握“与”、 “或”、“非”三个逻辑运算符及其优先级。
程序代码
11
4.3 逻辑运算符和逻辑表达式
相关知识: 1.逻辑运算符及其优先级 2. 逻辑表达式 3. 逻辑表达式的优先级与结合性
12
4.3 逻辑运算符和逻辑表达式
案例4-4 [案例任务]
逻辑运算中的“短路”现象
分析下列程序的运行结果,掌握多个运算对象 进行“与”、“或”情况下的“短路”现象。
22
4.4
if语句
4.4.2双分支
案例4-6 求两个数中的最大者
23
4.4
if语句
4.4.2双分支
案例4-6 求两个数中的最大者
[案例任务]
由键盘输入两个整数,输出它们中的最大 者。运行结果如下:
C语言程序设计:第4章 选择结构程序设计
![C语言程序设计:第4章 选择结构程序设计](https://img.taocdn.com/s3/m/a4e78649a55177232f60ddccda38376baf1fe0bc.png)
作用 小于 小于等于 大于 大于等于 等于 不等于
运算数 双目 双目 双目 双目 双目 双目
结合性 左结合 左结合 左结合 左结合 左结合 左结合
优先级 10 10 10 10 9 9
2
例如:
(1) 比较整型变量k大于0,表达式为:k>0 (2) 比较考试成绩score大于等于60,表达式为:score>=60 (3) 比较整型变量k模2等于0,即判断k是否是偶数:k%2==0 (4) 比较字符变量ch的值等于'A',表达式为:ch!='A'
return 0; }
Input 2 integers(a b):100 10<回车> 100,10
Input 2 integers(a b):10 100<回车> 100,10
2.双分支if语句
if (表达式) 语句1 else 语句2
执行过程: 首先先判断表达式的值 若为非0则执行语句1 若为0则执行语句2
if语句的双分支形式,在语法上 视为一条语句。
表达式
真
语句1
假
语句2
例4-4:判断整数的奇偶性。从键盘输入一个整数x,根据其奇 偶性输出x是奇数或x是偶数。
Input an integer: 12<回车> 12 is odd number.
#include <stdio.h>
int main()
return 0;
}
例4-5:修改例3-6使用海伦公式计算三角形面积程序的要求,当输入 的三个边长能够构成三角形时,计算面积;否则,输出不能构成三角 形。
思路分析:三角形面积的计算过程与原例题相同,新要求是在“三个 边长能构成三角形”这一条件成立时才进行计算面积,否则直接输出 提示信息。根据数学知识,这一条件可以描述为“任意两个边长之和 大于第三个边长”,输入三个边长a、b、c后,条件可以使用如下的 逻辑表达式描述:
c语言第4章 选择结构程序设计习题答案
![c语言第4章 选择结构程序设计习题答案](https://img.taocdn.com/s3/m/59fe3c9527d3240c8547ef79.png)
第4章选择结构程序设计习题(P111)4。
2 C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?答:C语言中用1表示真,0表示假;系统按照“非0为真,0为假”判断一个逻辑量的真假。
4.3 写出下面各逻辑表达式的值。
设a=3,b=4,c=5。
(1)a+b〉c&&b==c (2)a||b+c&&b-c (3)!(a〉b)&&!c||1(4)!(x=a)&&(y=b)&&0 (5)!(a+b)+c—1&&b+c/2解:该题在求解过程中注意:一、优先级。
逻辑运算符(&&和||)低于算术运算符和关系运算符而高于赋值运算符,在逻辑运算符中,逻辑非最高,逻辑与其次,逻辑或最低;二、逻辑表达式的求值规则。
(P94)所以得以上表达式的值分别为:(1)0 (2)1 (3)1 (4)0 (5)14。
4有3个整数a、b、c,由键盘输入,输出其中最大的数。
分析:这是一个规模较小的求最值的算法,习题1.6用函数的方法实现。
该题不用函数调用实现,但方法类似。
法一:先求前两个数的最值,再用前两个数的最值和第三个数比较即得结果。
法二:先假设第一个数是最值,再依次和第二、第三个数比较得结果。
其中都要用到单分支或双分支选择结构语句。
参考程序如下:法一:main(){ int a,b,c,max;/*定义4个整型变量,其中a,b,c存原始数据,max存最值*/ printf(”\ninput the value of a,b,c:"); /*提示输入*/scanf(”%d%d%d",&a,&b,&c);/*格式符之间无分隔符,输入时可以以空格、回车、跳格分隔*/if(a>b) max=a;else max=b;if(max<c) max=c;printf("\nmax=%d\n",max);}法二:main(){int a,b,c,max;printf(”\ninput the value of a,b,c:”);scanf(”%d%d%d",&a,&b,&c);max=a;if(max〈b) max=b;if(max<c) max=c;printf("\nmax=%d\n”,max);}4.6有一个函数:写一段程序,输入x,输出y的值。
C语言程序设计第4章
![C语言程序设计第4章](https://img.taocdn.com/s3/m/a4db91a314791711cd79177b.png)
能够使用if语句和switch语句,进行 选择结构程序设计 会利用多分支结构解决较复杂逻辑 判断问题
目录
CONTENTS
00 案例4 百分制转换等级制 01 4.1 选择结构判定条件的构成 02 4.2单分支和双分支选择结构程序设计 03 4.3 多分支选择结构程序设计
目录
CONTENTS
04 4.4 小结 05 4.5 拓展案例
案例4 百分制转换等级制
问题描述
学生成绩管理系统中需要对老师录入的百分制转换为等 级制。百分制与等级制的对应关系如下:90-100 对应A、 80-89对应B、70-79对应C、60-69对应D、0-59对应E。
问题分析
这是一个需要根据不同条件作出相应选择的程序,根据 描述,我们可以定义float变量fScore用来存放成绩值, 从而根据题目列出下列条件表达式: fScore>=90&&fScore<=100 your grade is A fScore>=80&&fScore<=89 your grade is B fScore>=70&&fScore<=79 your grade is C fScore>=60&&fScore<=69 your grade is D fScore>=0&&fScore<=59 your grade is E
4.4 小结
(1)嵌套if-else语句和switch语句都是用来实现多分支选择结构的,它们的 应用环境不同,嵌套if-else 语句用于对多条件并列测试,从中取一的情形; switch语句用于单条件测试,从其多种结果中取一种的情形。 (2)一般情况下用switch能解决的问题,用嵌套if-else 也一样能解决,反 之用嵌套if-else 语句能解决的问题用switch也能解决,在使用时要根据具体 问题灵活运用。 (3)如果多分支选择结构中需要判断的逻辑关系只是是否相等,则最好用 switch语句。switch语句的执行效率高于嵌套if-else语句。
C语言程序设计第四章
![C语言程序设计第四章](https://img.taocdn.com/s3/m/03a283ed6137ee06eff918dc.png)
运行情况: 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); } }
915145-C语言程序设计-第4章 选择结构程序设计
![915145-C语言程序设计-第4章 选择结构程序设计](https://img.taocdn.com/s3/m/914d8472a45177232f60a287.png)
老年人
票价分类 两日联票
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元
C语言程序设计第四章 选择结构
![C语言程序设计第四章 选择结构](https://img.taocdn.com/s3/m/cb36d267f5335a8102d2201f.png)
C语言程序设计
• 主要内容 4.1 关系运算符及其表达式 4.2 逻辑运算符及其表达式 4.3 条件运算符 4.4 单条件选择if语句 单条件选择 语句 4.5 开关分支 开关分支switch语句 语句
C语言程序设计
4.1 关系运算符及其表达式
1.关系运算符及其优先次序 1.关系运算符及其优先次序 (小于 小于) 1. < (小于) (小于或等于 小于或等于) 2. <= (小于或等于) 优先级相同( 优先级相同(高) (大于 大于) 3. > (大于) (大于或等于 大于或等于) 4. >= (大于或等于) (等于 等于) 5. == (等于) 优先级相同( 优先级相同(低) (不等于 不等于) 6. != (不等于)
C语言程序设计
4.2 逻辑运算符及其表达式
1.逻辑运算符及其优先次序 1.逻辑运算符及其优先次序 (逻辑与 逻辑与) 相当于其他语言中的AND (1)&& (逻辑与) 相当于其他语言中的AND (逻辑或 逻辑或) 相当于其他语言中的OR (2)|| (逻辑或) 相当于其他语言中的OR (逻辑非 逻辑非) 相当于其他语言中的NOT (3)! (逻辑非) 相当于其他语言中的NOT a,b为真 为真, a&&b为真 为真。 例:a&&b 若a,b为真,则a&&b为真。 a,b之一为真 之一为真, a||b为真 为真。 a||b 若a,b之一为真,则a||b为真。 为真, !a为假 为假。 !a 若a为真,则!a为假。 优先次序: 优先次序: •!>&&>||() ! •逻辑运算符中的“&&”和“||”低于关系运算符,“!”高于算 逻辑运算符中的“ 低于关系运算符, 高于算 逻辑运算符中的 和 低于关系运算符 术运算符
第四章选择结构程序设计(最终版)-2013(1)分析
![第四章选择结构程序设计(最终版)-2013(1)分析](https://img.taocdn.com/s3/m/b988dcc35022aaea998f0f52.png)
试写程序
给n1、n2、n3 输入数值
Y n1>n2 N scanf("%d,%d,%d",&n1,&n2,&n3); if (n1>n2) else
max=n1; max=n2;
max=n1
max=n2
n3>max Y max=n3
N
if (n3>max) max=n3;
输出max
printf("max=%d\n",max);
返回 计算机科学学院
4.2 逻辑运算及其表达式
用逻辑运算符将关系表达式或逻辑 量连接起来的式子就是逻辑表达式。
计算机科学学院
4.2.1 逻辑运算及其优先次序
1.逻辑运算符及其运算规则 (1)C语言提供三种逻辑运算符: && || !
例如,下面的表达式都是逻辑表达式:
(x>=0) && (x<10) (x<1) || (x>5) ! (x= =0)
计算机科学学院
例如,假设num1=3,num2=4,num3=5,则 (1)num1>num2的值 0 1 1
(2)(num1>num2)!=num3的值 (3)num1<num2<num3的值
( 4)(num1<num2)+num3 6 思考题:任意改变 num1或num2的值,会影响整个表达式 的值吗?为什么?
n1<n2 演示程序 输出n1、n2、n3 返回 计算机科学学院
4.3.1 if语句
给n1、n2、n3 输入数值 n
4.3.2 if语句的嵌套
if语句的嵌套与嵌套匹配原则 if语句允许嵌套。所谓if语句的嵌套是指, 在“语句1”或(和)“语句2”中,又包含有if 语句的情况。 if语句嵌套时,else子句与if的匹配原则: 与在它上面、距它最近、且尚未匹配的if配对。
第4章 C语言选择结构程序设计
![第4章 C语言选择结构程序设计](https://img.taocdn.com/s3/m/d12654343968011ca3009118.png)
《 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、执行过程:
最新课件-C语言程序设计教学第四章选择结构 推荐
![最新课件-C语言程序设计教学第四章选择结构 推荐](https://img.taocdn.com/s3/m/14ebaa6f6f1aff00bfd51ea8.png)
运行情况如下:
3.6, –3.2 –3.20, 3.60
形式2: if(表达式)语句A else 语句B
功能: 表达式为非0,执行语句A 表达式为0,执行语句B
!=0 语句A
=0 表达式
语句B
例: if(x>y) printf("%d", x);
else printf(" %d", y);
❖例子1: 输入两个数,分别赋给x和y,输出其 中一个最大的数。 #include<stdio.h> main() {
语句A
例如: if (x>y) printf(" %d", x)
例子: 输入两个实数,按代数值由小到大次序输出这两个数。
#include<stdio.h> main() {
float a, b, t; scanf("%f, %f", &a, &b); if (a>b) {t=a; a=b; b=t;} printf("%5.2f, %5.2f\n", a, b); }
int x,y; scanf("%d%d",&x,&y); if(x>y)
printf("max=x=%d\n",x); else
printf("max=y=%d\n",y) ; }
例子2:从键盘输入一个数,判断它是否能被7整 除。若能被7整除,打印YES,否则打印NO。 #include<stdio.h> main() {
➢或者:
当(year%4!=0) ¦¦(year%100= =0&& year%400!=0) 为1时, year为非闰年。
C语言第四章选择结构ppt课件
![C语言第四章选择结构ppt课件](https://img.taocdn.com/s3/m/0fe22b2a001ca300a6c30c22590102020640f243.png)
/* 求 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 语句是多分支的选择语句又称开关语句。