C语言程序设计-第04章-选择结构程序设计
0□x=2□1□x=6□1□y=2□1□y=8
第4章 选择结构
4.0 4.1 4.2 4.3 简单介绍 关系运算符和关系表达式 逻辑运算符及逻辑表达式 if语句
C语言中实现选择结构的主要语句格式
15
4.3 if语句
4.3.1 if语句(单分支) 4.3.2 if…else语句(双分支) 4.3.3 if语句的嵌套 4.3.4 if…else if语句(多分支) 4.3.5 条件运算符和条件表达式 4.3.6 实例
程序2:
1. #include<stdio.h> 2. void main() 3. { 4. int a ,b ; 5. printf(“Enter two integers:”); 6. scanf("%d%d",&a,&b) ; 7. if (a>b) 8. printf("max=%d\n",a); 9. else 10. printf("max=%d\n",b); 11. }
优先级次序由高到低
o
!、算术运算符、关系运算符、&&和||、赋值运算符
o
比如 x=!a<b &&a>!b+c||c<0 的运算次序?
【注意】在计算含有&&和||运算符的逻辑表达 式时,C语言规定:只对能够确定整个表达式值 所需要的最少数目的子表达式进行计算。
例如: (1)表达式1&&表达式2,若计算出表达式 1的值为0,就不会对表达式2求值 (2)表达式1||表达式2,若计算出表达式1 的值不为0,就不会对表达式2求值 【运行结果】
6
表达式
0(“假”)
非0(“真”)
内嵌语句
4.0 【简单介绍】if…else语句 (双分支)
形式: if…else语句的语法形式为 if(表达式) 内嵌语句1 else 内嵌语句2 语义: 如果表达式的值非0,则执行 “内嵌语句1”,否则执行“内 嵌语句2”。
非0
表达式
0
内嵌语句1
内嵌语句2
7
第4章 选择结构
23
第一次作业 (10月17日交)
一(1,2,4) 二(1,2,3) 三(1——3) (注意:旧版教材103页第4章,第二题的第1题,改成if(a<b))
24
4.3.3 if语句的嵌套
在if…else语句的语法中,嵌套语句1和嵌套语句2可以是任何可执行语 句,当然也可以是if 语句。这就是if 语句的嵌套。通过if 语句的嵌套, 可以表示多分支结构,例如:
a1+a2+a3=3
若有以下定义和语句,输入b,e char c1,c2; scanf(“%c,%c”,&c1,&c2); printf(“%d,%c\n”,c2-c1,c2-„a‟+‟A‟); 则输出结果是
3,E
3Hale Waihona Puke 屏幕输出\*******************\ \ ”This is „100%‟” \ \*******************\
10
4.1 关系运算符和关系表达式
【注意】关系运算符==和赋值运算符=的区别
例:if(x=8)和if(x==8) 的不同
以及if(x)与if(!x)的用法
1. 2. 3. 4. 5. 6. 7. 8.
#include <stdio.h> void main() //改成if(x==8)结果会有什么不同? { int x = 5; if (x=8) y = 2*x-3; else y = x*x+1; printf(“x=%d\n”,x); }
形式2: if(表达式1) { if(表达式2) 嵌套语句1 else 嵌套语句2 } else 嵌套语句3
形式1: if(表达式1) { if(表达式2) 嵌套语句1 } else 嵌套语句2
形式3: if(表达式1) { if(表达式2) 嵌套语句1 else 嵌套语句2 } else { if(表达式3) 嵌套语句3 else 嵌套语句4 }
子。例如:x<y&&y<z、 x||y、x==y、!(x==y)
逻辑表达式的值
a
0 0 非0 非0
b
0 非0 0 非0
a&&b a||b
0 0 0 1 0 1 1 1
!a
1 1 0 0
!b
1 0 1 0
4.2 逻辑运算符及逻辑表达式
逻辑运算符的优先级和结合性
例4.2.1 分析程序的运行结果
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
9
4.1 关系运算符和关系表达式
关系表达式
由关系运算符将两个表达式连接起来的表达式
o
x>y、(x=5)<=y、x==y
关系表达式的值
只有两种可能:真或假。当它所描述的关系成立时,值为“真”, 否则为“假”。
【注意】C语言用整数1(或者非0)表示“真”,用整数0表示“假”。 例如:a=3, b=4, c=5,则: (1)关系表达式 a+b>2*c 的值为0(假) (2)关系表达式 'b'!='B' 的值为1(真) 【注意】表达式连续使用的正确含义,比如:0<=x<=3,从左到右, 先计算0<=x,值只能是0或1,再判断0<=3或1<=3
20
4.3.1 if语句
例:输入一个整数,如果小于60或大于90,则输出。
1. 2. 3. 4. 5. 6. 7. 8. 9.
#include<stdio.h> void main() { int a; printf(“Please enter one integer:”); scanf(“%d”,&a); if( a<60 || a>=90) printf("a=%d\n",a); }
【注意】if表达式的内嵌语句只有一条时,大括号可以省略。
18
4.3.1 if语句
例:输入任意两个整数,先输出小数,再输出大数:
1.
2.
3. 4. 5. 6. 7. 8. 9. 10.
11.
12. 13. 14.
#include<stdio.h> void main() { int a,b,t; printf(“Please enter two integers:”); scanf("%d %d",&a,&b); if(a>b) // 注意! if条件表达式后面没有„;‟ ! { t=a; a=b; b=t; }//注意加大括号 printf("%d\t%d\n",a,b ); }
16
4.3.1 if语句
形式: if语句的语法形式为: if(表达式) 语句 语义:如果表达式的值不等于0 (称条件为真),则执行“语 句”,否则“语句”不被执行 。 格式: if 语句中的表达式就是 条件,语法规定,表达式必须 加括号。 表达式后的语句称 为内嵌语句,可以是任意C合 法语句。
17
【注意】if表达式的内嵌语句多于一条时,大括号不能省略。
19
4.3.1 if语句
例:输入一个整数,如果在56~59之间,则输出该数。
1. 2. 3. 4. 5. 6. 7. 8. 9.
#include<stdio.h> void main() { int a; printf(“Please enter one integer:”); scanf("%d",&a); if(a>=56 && a<60) //【注意】不能写成:56<=a<=59 printf("a=%d\n",a); }
11
第4章 选择结构
4.0 简单介绍 4.1 关系运算符和关系表达式 4.2 逻辑运算符及逻辑表达式
关系表达式所表示的条件都比较简单,为了 表示更复杂的条件,C语言提供了逻辑运算符
4.3 if语句
12
4.2 逻辑运算符及逻辑表达式
逻辑运算符:逻辑非!、逻辑与&&、逻辑或|| 逻辑表达式:由逻辑运算符将关系表达式或逻辑量连接起来的式
14
#include <stdio.h> void main( ) { int x,y; x=2; printf("%d ", 0&&(x=6)); printf("x=%d ", x); printf("%d ", „A‟&&(x=6)); printf("x=%d ", x); y=2; printf("%d ", „0‟ || (y=8)); printf("y=%d ", y); printf("%d ", 0 || (y=8)); printf("y=%d\n", y); }
C语言程序设计 第四章 选择结构程序设计
厦门大学计算机系 严 严
2014-9-25
运行以下程序时,从键盘输入1 □ 2 (回车),则输出结果是 void main() { int a1,a2; scanf(“%d,%d”,&a1,&a2); printf("a1+a2+a3=%d\n",a1+a2); }
程序1:
1. #include<stdio.h> 2. void main() 3. { 4. int a ,b ,max ; 5. printf(“Enter two integer:”); 6. scanf(“%d%d”,&a,&b) ; 7. if (a>b) 8. max=a; 9. else 10. max=b; 11. printf(”max=%d\n”,max); 12. }
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语言第四章.选择结构程序设计
case 常量表达式n: 语句n; default : 语句n+1; }
语句的执行过程:
先计算表达式的值,并逐个与其后的常量表达式值相 比较; 当表达式的值与某个常量表达式的值相等时,即执行
其后的语句;
然后不再进行判断,继续执行后面所有case后的语句;
如表达式的值与所有case后的常量表达式均不相同时,
a+b>c && x+y<b 等价于 ((a+b)>c) && ((x+y)<b)
2)逻辑运算的值: 逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”
来表示。
反过来在判断一个量是为“真”还是为“假”时,以“0” 的数值代表“假”,以非“0”的数值代表“真”。
3)逻辑运算的规则:
(1)与运算&&
条件运算符和条件表达式
条件表达式通常用于赋值语句之中。 例如条件语句:
if(a>b) max=a;
else max=b; 可用条件表达式写为 max=(a>b)?a:b;
执行该语句的语义是:如a>b为真,则把a 赋予max, 否则把b 赋予max。
注意以下几点:
条件运算符的运算优先级 低于关系运算符和算术运算符,高于赋值符。 因此 max=(a>b)?a:b可以去掉括号而写为 max=a>b?a:b
注意:
(3) 在if 语句的三种形式中,所有的语句应为单个语句,
如果要想在满足条件时执行一组(多个)语句,则必须
把这一组语句用{ } 括起来组成一个复合语句。 例如:交换两个变量 if (a>b) { t= a; a=b; b=t; }
c语言程序设计教程第二版课后答案
c语言程序设计教程第二版课后答案【篇一:c语言程序设计(第2版)-- 课后题答案】p> 参考答案第1章进入c语言程序世界二、1.i love china!printf(we are students.\n)2.6项目实训题参考答案1.编写一个c程序,输出以下信息:* * * * * * * * * * * * * * * * * * * *i am a student!* * * * * * * * * * * * * * * * * * * *main(){ printf(********************\n);printf( i am a student!\n);printf(********************\n);}2.已知立方体的长、宽、高分别是10cm、20cm、15cm,编写程序,求立方体体积。
解:main(){int a,b,c,v;a=10;b=20;c=15;v=a*b*c;printf(v=%d,v);}本程序运行结果为:v=3000第2章编制c程序的基础知识一选择题c b a b a c c二操作题,2,-8,23.000000,2.500000,-8.0000002. abc defghwhy is21+35equal 523.34214. aaa项目实训题1.定义一个符号常量m为5和一个变量n值为2,把它们的乘积输出。
#define m 5main(){ int n,c;n=2; c=m*n;printf(%d\n,c);}2.编程求下面算术表达式的值。
(1)x+a%3*(int)(x+y)%2/4,设x=2.5,a=7,y=4.7;(2)(float)(a+b)/2+(int)x%(int)y,设a=2,b=3,x=3.5,y=2.5。
(1)main(){ int a=7;float x=2.5,y=4.7;printf(%f\n,x+a%3*(int)(x+y)%2/4);}(2)main(){ int a=2,b=3;float x=3.5,y=2.5;printf(%f\n,(float)(a+b)/2+(int)x%(int)y);}第三章顺序结构程序设计一选择题a c d c c二操作题1. x=3,a=2,b=32. z=12.7000002 13 3 2 bb cc abc n3. 1 2 1a2 1 2三.编程题编程题解:#include stdio.hmain(){float sj,gz,yfgz;printf(time,salary:);scanf(%f,%f,sj,gz);yfgz=sj*gz*0.9;printf(total salary:%f\n,yfgz);}本程序运行结果为:time,salary:4,3crtotal salary:10.8000002.编写一个程序求出任意一个输入字符的ascii码解:#include stdio.hmain(){char c;printf(input a string:);scanf(%c,c);printf(%c ascii is %d\n,c,c);}本程序运行结果为:input a string:acra ascii is 973、编写一个程序用于水果店售货员算帐:已知苹果每斤2.50元,鸭梨每斤1.80元,香蕉每斤2元,橘子每斤1.6元,要求输入各类水果的重量,打印出应付3解:main(){float p,y,x,j,ys,g,fk;printf(apple,pear,banana,orange(weight)=);scanf(%f,%f,%f,%f,p,y,x,j);ys=2.5*p+1.8*y+2*x+1.6*j;printf(fu kuan=);scanf(%f,g);fk=g-ys;printf(result:\n);printf(fukuan=%6.2fyuan\nshoukuan=%6.2fyuan\nzhaohui=%6. 2fyuan\n,g,ys,fk);}本程序运行结果为:apple,pear,banana,orange(weight)=1,2,3,4fu kuan=100result:fukuan=100.00yuanshoukuan= 18.50yuanzhaohui= 81.50yuan项目实训1.假设银行定期存款的年利率rate为2.25%,并已知存款期为n 年,存款本金为capital元,试编程计算n年后可得到本利之和deposit。
第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语言程序设计第四单元选择结构程序设计
思路指导
输入:输入学生的成绩存储到变量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语言-选择结构程序设计
a = 4; b = 5; 逻辑运算符的优先级 !a //值为 值为0 //值为0 !,~,++,--,sizeof 高 ++,--, a && b //值为 值为1 //值为1 算术运算符 移位运算符 a ||例如: b //值为 值为1 //值为1 例如: 关系运算符 (a a 等价于: 值为1 !a || b <= x && x <= b 等价于: 值为1 && (x <= b) //值为 // <= x) &,|,^ (a a > b && x > y 等价于: 等价于: > b) && (x > y) 4 && ==||b2|| x == y 等价于:(a 值为1 || (x == y) 0 //值为 // == b) &&,|| &&, a 等价于: 值为1 赋值运算符 5 > 3!a || a低 b 8 < 4 - !0 (!a) 等价于: 值为1 等价于: 值为1> b) && > || 2 //值为 // || (a 等价于: 等价于:(!a) > b 已知: =!a b 5; 已知:a = 4; b&&>'d' //值为 值为1 //值为1 'c' c = 2 || b < b - !a;等价于:c = (a || b) a || 8 等价于: !a;的值? 的值? 问:c = b > 3 && 的值 7 && b & 等价于: 的值为1 a 等价于: 8 等价于:(a | 7) (8 < (b – 8) 答:c 的值为1. |等价于:c = (((b > 3) && 2) || && (b &(!a))));
C语言程序设计第四章 选择结构程序设计
辑量。
Page 4
4.1 逻辑量
逻辑表达式 1.逻辑运算符 逻辑运算符有以下3种:&&(逻辑与)、||(逻辑或)、!(逻辑非) “&&”和“||”是双目运算符,“!”是单目运算符,逻辑运算的运算对 象是逻辑量。其中“!”的优先级别高于“&&”,“&&”的优先级高于
“||”。“&&”和“||”是左结合运算符,“!”是右结合运算符。
Page 6
4.1 逻辑量
逻辑运算的短路 2.逻辑表达式 &&”和“||”在运算时,存在运算的短路。 ① “&&”运算的短路规则。 例如:a&&b
当左目a为逻辑假时,有当左目a为逻辑真时,才运算右目b。
Page 7
4.1 逻辑量
逻辑运算的短路 2.逻辑表达式 &&”和“||”在运算时,存在运算的短路。 ②“||”运算的短路规则。 例如:a||b
逗号运算符高,结合性为右结合。
Page 12
4.2 if语句
条件表达式 2.条件表达式 用条件运算符将运算对象连接起来的符合C语言规则的表达式称为条 件表达式。 条件表达式的运算过程为:先判断第1目逻辑量,如果逻辑量为真,
选取第2目的结果作为整个表达式的值,否则选取第3目结果作为整个
表达式的值。 条件表达式中存在类型的自动转换,条件表达式的值的类型是第2目
立的表达式对待。
Page 14
4.2 if语句
if语句的嵌套 从if语句的格式来看,if( )~else只能解决双分支问题。如果要解决多 分支问题,则需使用if语句的嵌套。 例如多分支函数:
1 x0 y= 0 x 0 1 x 0
《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语言程序设计
第四章 选择(分支)结构程序设计
本章要点:
1 . 关系表达式
2 . 逻辑表达式
3 . 选择结构程序设计
第四章
选择结构程序设计
主要内容: 1. 关系运算符与关系表达式 2. 逻辑运算符与逻辑表达式 3. if 语句 4. switch 语句
5. 程序举例
C语言程序设计
例: 银行存款的例子 设银行定期存款年利率rate 一年 2.68 % 二年 2.98% 三年 3.5 % 五年及以上 4.2 % 并已知存款期为n年,存款本金为capital元, 编程计算n年后本息之和deposit.
{float score;
printf(“input score:”); scanf(“%f”,&score); if(score>=90) printf(“Excellent!\n”); else if(score>=80) printf(“Good!\n”); else if(score>=70) printf(“Middle!\n”); else if(score>=60) printf(“Pass!\n”); else printf(“Fail!\n”);
4.3 if语句
例:要求用户输入一个实数,然后求出这个实数 的绝对值。
4.3 if语句
2. 分支执行 if(表达式) 语句1 else 语句2 即 if (P) A else B
当P 为真时(非0)执行A,否则执行B或后续语句。
4.3 if语句
例: if (a>0) printf(“A is a positive\n”); else printf(“A is not a positive\n”);
C语言程序设计
选择结构是三种基本结构(顺序、选择、循环)之
Ch04_选择结构程序设计
典型示例
求最大值 成绩等级 求方程解
作业/上机
作业(做在书上)
TP62 习题4:一、二、三 TP65 习题4:2,3,5,6
上机
4.1 关系表达式与逻辑表达式
关系运算符及优先级
4.1 关系表达式与逻辑表达式
关系表达式
用关系运算符将两个操作数(常量、变量或表达式)连 接起来,进行关系运算的式子,称为关系表达式。 例如,假设n1=5,n2=8,n3=10,则:
1)关系表达式n1==n2的值为0。 2)关系表达式n1<=n3的值为1。 3)关系表达式n1+n2>n3的值为1。 4)关系表达式n1== n2>n3的值等为0。
举例
if(a>b) max=a; else max=b;
<==>
max = (a > b) ? a : b
4.4 switch表达式
switch格式
switch (<表达式>) if (<表达式> == <数值1>) { <语句或语句组1>; case <数值1>: else if (<表达式> == <数值2>) [<语句或语句组1>;] <语句或语句组2>; <==> case <数值2>: …… [<语句或语句组2>;] else …… <语句或语句组>; [default: <语句或语句组>;] }
例:设a=4,b=5: !a的值为0 a || b的值为1 4 && 0 || 2的值为1
