第4章选择结构程序设计
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; }
第4章_选择结构程序设计
语句1
语句2
语句3
语句4
2013-5-19
图4-9 多分支选择结构
19
例4.5 :体型判断
按“体指数”对肥胖程度进行划分: 体指数t = w / h2 (体重w单位为公斤,身高h单位为米) – 当t < 18时,为低体重; – 当18 ≤ t < 25时,为正常体重; – 当25 < t < 27时,为超重体重; – 当t ≥ 27时,为肥胖。 编程从键盘输入你的身高h和体重w,根据给定公式计算体指 数t,然后判断你的体重属于何种类型。 用3种方法编程: – 算法1:用不带else子句的if语句编程 – 算法2:用在if子句中嵌入if 语句的形式编程 – 算法3:用在else子句中嵌入if 语句的形式编程
}
思考题
语句 if (0 == data2)的必要性 – 1998年11月《科学美国人》杂志,描述了美国导弹巡
洋舰约克敦号上的一起事故,除零错导致军舰推进系统 的关闭
取绝对 值函数 2013-5-19
如果要求程序能进行浮点数的算术运算,语句 if (0 == data2)还能用于比较实型变量data2和 常数0的大小吗? – if (fabs(data2) <= 1e-7) 如果要求输入的算术表达式中的操作数和运算符之 间可以加入任意多个空格符,那么程序如何修改? – scanf("%d%c%d", &data1, &op, &data2); – scanf("%d%1s%d", &data1, &op, &data2);
2013-5-19
13
if-else
第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语句,实现多分支的选择结构 语句, 语句
4.1第四章选择结构的程序设计
本章要点
算法和算法的表示 结构化程序设计的方法 语句的概念和种类 选择结构语句的表示
提出问题 根据学生分数判断是否及格? 根据学生分数如何进行分级? 如何解决? 自然语言:如果… 那么… 否则… C语言: 分支语句 二重分支的条件语句 if 多重分支的条件语句 switch
#include <stdio.h> main( ) /* 程序功能:求a和b的最大值 */ { int a,b,max; printf("Input a and b="); scanf("%d%d",&a, &b); /* input number a and b */ if ( a>b ) max=a; /* 如果a>b,则将a=>max */ else max=b; /* 否则, b=>max */ printf("The max of a and b : %d\n", max); }
if (exp_1) statement_1 else if(exp_2) statement_2 …… else if(exp_n-1) statement_n-1 else statement_n
表达式 1 非0
0
0 表达式 2 非0
n个分支需要n-1次比较
0
0
表达式n-1 非0 语句1 语句2 语句n-1 语句n
例:已知银行整存整取存款月息利率分别为:
一年期:0.63% 三年期:0.69% 八年期:0.84% 二年期:0.66% 五年期:0.75% 其它:0
要求输入存钱的本金和期限,求到期时利息与本金 合计。银行到期利息计算公式:
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语言程序设计
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章 选择结构程序设计
章节:
C语言程序设计→第4章 选择结构程序设计
练一练
问题:编一程序,从键盘输入一个正整数,判 断它的奇偶性。如果输入的是奇数,输出“奇 数”,如果输入的是偶数,则输出“偶数”。
章节: C语言程序设计→第4章 选择结构程序设计
本章的学习难点
1. 单分支与双分支选择结构程序设计; 2. 多分支选择结构程序设计 ; 3. 条件语句的嵌套。
章节: C语言程序设计→第4章 选择结构程序设计
本章目录
1. 选择结构和条件判断 2. 用if语句实现选择结构 3. 关系运算符和关系表达式 4. 逻辑运算符和逻辑表达式 5. 条件运算符和条件表达式 6. 选择结构的嵌套 7. 用switch语句实现多分支选择结构 8. 选择结构程序综合举例
章节: C语言程序设计→第4章 选择结构程序设计
4.1.2逻辑运算符与逻辑表达式
逻辑运算符
&&
逻辑与(并且)
||
逻辑或(或者)
!
逻辑非
章节:
C语言程序设计→第4章 选择结构程序设计
逻辑运算符
章节: C语言程序设计→第4章 选择结构程序设计
逻辑运算真值表
章节: C语言程序设计→第4章 选择结构程序设计
反数。所以,如果iX<0,则iY= -iX,否则不需要 做什么;
5.输出iX和iY。
章节:
C语言程序设计→第4章 选择结构程序设计
流程图
章节:
C语言程序设计→第4章 选择结构程序设计
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课件
/* 求 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章选择结构程序设计通过本章实验作业应达目标1.练习并熟练把握if、switch语句利用,实现二路与多路选择结构;本章必需上交作业程序、、、上传至实验一大小写转换【实验目的】熟悉关系与逻辑运算,了解if-else的顺序与嵌套层次关系。
【实验内容】下面程序希望完成大小写字母转换功能。
假设输入一个大写字母,那么转化为小写输出;假设输入小写字母那么转化为大写输出;对其他字母那么原样不变输出。
程序以命名,运行程序,别离输入一次大写、一次小写字母、一次‘#’进行验证。
若是程序有错,请更正。
#include<>void main(){char ch;ch=getchar();if('a'<=ch<='z') ch-=32;if('A'<=ch<='Z') ch+=32;putchar(ch);putchar('\n');}实验二算术运算【实验目的】学习if~else、switch语句的利用。
【实验内容】键盘输入一个算术的运算式子,输出运算结果。
那个地址咱们规定能够接收五个算术运算的符号:+、-、*、/、^(乘方)。
输入这五个符号之外的运算符号那么提示犯错。
程序以命名并上交。
以下图是输入输出的示用意:输入一个加法的算术式:输入一个除法的算术式:输入一个乘方的算术式:求3的平方根:【实验提示】本程序需要从键盘接收一个表达式,依照表达式中的运算符号实现相应的运算并将结果保留下来并输出。
C语言本身是没有乘方运算符的,能够挪用数学函数pow(x,y)求x的y次方。
注意必然要包括<>。
【试探】输入的表达式实质是按多个不同类型的数据来获取数据的。
程序中需要概念多个变量来接收表达式中包括的数据与运算符,并设计相应的输入/输出函数实现。
实验三金额计算【实验目的】学习分析与解决实际问题的能力,综合嵌套利用if~else或switch语句。
第四章 选择(分支)结构程序设计
用一个逻辑表达式来表示一个复杂的条件。
例如:判断某一年是否闰年。 闰年:能被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!”);
第4章 选择结构程序设计
#include <stdio.h> 4.2用if语句实现选择结构程序设计 int main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a<b) { t=a; a=b; b=t; } if(a<c) { t=a; a=c; c=t; } if(b<c) 如果 b<c,将b和c对换 b是三者中的次大者 { t=b; b=c; c=t; } printf("%5.2f,%5.2f,%5.2f\n",a,b,c); return 0; }
用条件运算符改写if语句
• 有一种if语句,当被判别的表达式的值为 “真”或“假” 时,都执行一个赋值语 句且向同一个变量赋值 • 如:if (a>b)
max=a; else max=b;
max = (a > b) ? a : b;
条件表达式
4.2用if语句实现选择结构程序设计
4.2.2if语句的一般形式
4.1条件判断
4.1.1条件判断的含义
在现实生活中,需要进行判断和选择的情况是很 多的
• 处理这些问题,关键在于进行条件判断 • 由于程序处理问题的需要,在大多数程序中都会 包含选择结构,需要在进行下一个操作之前先进 行条件判断
4.1条件判断
4.1.1条件判断的含义
• C语言有两种选择语句:
(1)if语句,实现两个分支的选择结构
4.2用if语句实现选择结构程序设计
4.2.1用if语句实现选择结构举例
例4.3 输入3个成绩a,b,c,要求按由高 到低的顺序输出。
4.2用if语句实现选择结构程序设计
第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、执行过程:
第4章选择结构程序设计.ppt
材料与能源学院
2019/10/19
C语言程序设计
4.2.1 用if语句处理选择结构举例
例4.2 输入两个实数,按代数值由小到大 的顺序输出这两个数。
解题思路:
只需要做一次比较,然后进行一次交换即可 用if语句实现条件判断 关键是怎样实现两个变量值的互换
互换前 A ★
●B
互换后 A ●
表达式值为真(1)是非闰年,否则为闰年。
材料与能源学院
2019/10/19
Page21
C语言程序设计
4.5 条件运算符和条件表达式
条件运算符 格式:表达式1?表达式2:表达式3
功能:判断表达式1的值,如果成立就执行表达式2,否 则就执行表达式3
使用场合:若在if语句中,当被判别的表达式的值为“真” 或“假” 时,都执行一个赋值语句且向同一个变量赋值 时,可以用一个条件运算符来处理。
内嵌if 内嵌if
匹配规则:else总是
if (number>500) cost=0.15; else if(number>300) cost=0.10; else if(number>100) cost=0.075; else if(number>50) cost=0.05; else cost=0;
材料与能源学院
2019/10/19
Page14
为(ch+32),即相应的小写字母。如果ch的值不是大 写字母,则条件表达式的值为ch,即不进行转换。
scanf("%c",& ch);
ch=(ch>='A'&&ch<='Z')?(ch+32):ch;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章选择结构程序设计通过本章实验作业应达目标1.练习并熟练掌握if、switch语句使用,实现二路与多路选择结构;本章必须上交作业程序4_2.c、4_3.c、4_4.c、4_5.c上传至http://121.251.227.27:8080/c实验一大小写转换【实验目的】熟悉关系与逻辑运算,了解if-else的顺序与嵌套层次关系。
【实验内容】下面程序希望完成大小写字母转换功能。
若输入一个大写字母,则转化为小写输出;若输入小写字母则转化为大写输出;对其他字母则原样不变输出。
程序以4_1.c命名,运行程序,分别输入一次大写、一次小写字母、一次‘#’进行验证。
如果程序有错,请改正。
#include<stdio.h>void main(){char ch;ch=getchar();if('a'<=ch<='z') ch-=32;if('A'<=ch<='Z') ch+=32;putchar(ch);putchar('\n');}实验二算术运算【实验目的】学习if~else、switch语句的使用。
【实验内容】键盘输入一个算术的运算式子,输出运算结果。
这里我们规定可以接收五个算术运算的符号:+、-、*、/、^(乘方)。
输入这五个符号以外的运算符号则提醒出错。
程序以4_2.c命名并上交。
下图是输入输出的示意图:输入一个加法的算术式:输入一个除法的算术式:输入一个乘方的算术式:求3的平方根:【实验提示】本程序需要从键盘接收一个表达式,根据表达式中的运算符号实现相应的运算并将结果保存下来并输出。
C语言本身是没有乘方运算符的,可以调用数学函数pow(x,y)求x的y次方。
注意一定要包含<math.h>。
【思考】输入的表达式实质是按多个不同类型的数据来获取数据的。
程序中需要定义多个变量来接收表达式中包含的数据与运算符,并设计相应的输入/输出函数实现。
实验三金额计算【实验目的】学习分析与解决实际问题的能力,综合嵌套使用if~else或switch语句。
【实验内容】某服装店经营套服。
以50套为限,若购买数量不少于50套,每套80元;不足50套时每套90元;只买上衣每件60元;只买裤子每条45元。
编写程序实现:读入所买上衣c和裤子t的数量,计算应付款总量。
程序以4_3.c命名并上交。
实验四成绩转换【实验目的】使用if~else、switch语句的嵌套完成程序。
【实验内容】【实验提示】本程序需要从键盘接收两个字符,先判断第一个字符,再判断第二个字符以确定其对应的百分制数。
例如:输入4+,第一个字符等于'4',则应再判断第二个字符,如果是'+'则输出80,如果是回车符则输出75,如果是'-'则输出70。
【思考】对于5+、4-这类输入的数据,程序中应采用什么数据类型与数据结构接收保存?实验五判断天数【实验目的】熟练使用switch语句,并设计精巧程序。
【实验内容】按yyyy-mm-dd格式输入一个日期,如2004-10-31,判断这是这一年的第几天。
要有输入的判断,一旦输入错误日期则通知输入出错,重新输入。
程序以4_5.c命名并上交。
【实验提示】以2004-10-31为例,先把前九个月的天数加起来,然后再加上31天。
需要考虑的是,当年是闰年,2月为29天,否则2月为28天。
也可以2月固定按28天计算,当年是闰年且月份大于2时,多加一天。
问题与思考1.若执行下面的程序时从键盘上输入5,则输出结果是______main(){int x;scanf("%d",&x);if(x++>5)printf("%d\n",x);else printf("%d\n",x--);}A) 7 B) 6 C) 5 D) 42.已知a,b,m,n,c,d变量的定义如下,则执行完下列表达式后m,n的值为______int a=3,b=4,m=0,n=0,c=3,d=4;(m=a<b)||(n=c<d);A) m=1 n=1 B) m=1 n=0 C) m=0 n=0 D) m=0 n=13.表达式(!7<5+1>0+4<5)的值是______A) 3 B) 2 C) 1 D) 04.假设在程序中,x,y,z均被定义成整型,且已赋大于1的值,则下列能正确表示1/(xyz)的表达式是______A) 1/x*y*z B)1/(x*y*z)C) 1/x/y/(float)z D) 1.0/x/y/z5.已知字母a的ASCII十进制代码为97,则执行以下语句后的输出为______char a='a';a--;printf("%d,%c\n",a+'2'-'0',a+'3'-'0');A) b,c B) a--运算不合法,故有语法错C) 98,cD) 格式描述和输出项不匹配,输出无定值6.为了避免嵌套的条件语句if-else的二义性,C语言规定:else与_____配对。
A) 缩排位置相同的if B) 其之前最近的ifC) 其之后最近的if D) 同一行上的if7.若给定条件表达式(M)?(a++): (a--),则其中表达式M______A) 和(M==0)等价B) 和(M==1)等价C) 和(M!=0)等价D) 和(M!=1)等价8.若有说明语句char s='\092'; 则该语句______A) 使s的值包含1个字符B) 说明不合法,s的值不确定C) 使s的值包含4个字符D) 使s的值包含3个字符9.设a=1,b=2,c=3,d=4,则表达式:a<b?a:c<d?a:d的结果为______A) 4 B) 3 C) 2 D) 110.有如下的变量定义:int i=8,k,a,b;unsigned long w=5;double x=1.42,y=5.2;则以下符合C语言语法的表达式是______A) a+=a-=(b=4)*(a=3)B) x%(-3) C)a=a*3=2 D) y=float(i)11.有以下变量定义:int k=7,x=12;则下列值为3的表达式是______A) x%=(k%=5) B) x%=(k-k%5)C) x%=k-k%5 D) (x%=k)-(k%=5)12.设 int a=3 ; 则表达式 a<1&& - - a>1 的运算结果和a的值分别是______ A) 0和2 B) 0和3 C) 1和2 D) 1和313.假定所有变量均已正确定义,下列程序段运行后x的值是______ok1=1;ok2=2;ok3=3;x=15;if(!ok1) x--;else if(ok2) if(ok3) x=3;else x=4;A) 14 B) 4 C) 15 D) 314.下面程序的输出结果是______void main(){int x=1,a=0,b=0;switch(x){ case 0 :b++;case 1 :a++;case 2 :a++;b++;}printf(“a=%d,b=%d\n”,a,b);}A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=215.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果分别是_____void main( ){ int x;scanf("%d",&x);if(x++>5)printf("%d",x);else printf("%d\n",x--);}A) 7和5 B) 6和3 C) 7和4 D) 6和416.有定义:int a=1,b=3,c=5,d=4,x;则执行完下面一段程序后x的值是 ______。
if(a<b)if(c<d) x=1;elseif(a<c)if( b<d) x=2;else x=3;else x=6;else x=7;A) 1 B) 2 C) 3 D) 617.能正确表示a和b同时为正或同时为负的表达式是________。
A) (a>=0||b>=0)&&(a<0||b<0)B) (a>=0&&b>=0)&&(a<0&&b<0)C) (a+b>0)&&(a+b<=0)D) a*b>018.当a=3,b=2,c=1时,表达式f=a>b>c的值是 ______ 。
19.当c的值不为0 时,在下列选项中能正确将c的值赋给变量a、b的是________。
A) c=b=a B) (a=c)||(b=c) C) (a=c)&&(b=c) D) a=c=b 20.下面程序程序后输出结果是_____。
void main(){int a=3,b=2,c=1,t;if(a>b>c) t=1;else if(a<b<c) t=0;else t=-1;printf("%d\n",t);}A) 1 B) 0 C) -1 D) 不确定的数21.以下程序运行后的输出结果是________。
void main(){int a=3,b=4,c=5,t=99;if(a<b<c) t=a;a=c;c=t;if(a>c,c>b) t=b;b=a;a=t;printf("%d %d %d\n",a,b,c);}22.以下程序运行后的输出结果是__________。
void main(){int x=1,y=0,a=0,b=0;switch(x){case 1:switch(y){case 0:a++;break;case 1:b++;break;}case 2:a++;b++;break;}printf("%d %d\n",a,b);}23.有以下程序void main( ){ int i=1,j=1,k=2;if((j++||k++)&&i++) printf( "%d,%d,%d\n",i,j,k ); }执行后输出结果是_____。
A) 1,1,2 B) 2,2,1 C) 2,2,2 D) 2,2,3 24.以下程序执行后输出结果是_____。