




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、,第四章 选择结构程序设计,4.1分支结构中常用运算符,一、关系运算符 所谓“关系运算”实际上就是“比较运算”,即将两个数据进行比较,判定两个数据是否符合给定的关系。 例如, 53 则结果为“真true”,即条件成立; 23 则结果为“假false”,即条件不成立。 1、C语言提供6种关系运算符 (wai table 4.1) (大于), =(大于或等于), =(等于), !=(不等于) 注意:在语言中,“等于”关系运算符是双等号“= =”,而不是单等号“= ”(赋值运算符)。,2优先级 (1)在关系运算符中,前4个优先级相同,后2个也相同,且前4个高于后2个。 (2)与其它种类运算符的优先级
2、关系 关系运算符的优先级,低于算术运算符,但高于赋值运算符。 3、关系表达式 关系表达式的概念 所谓关系表达式是指,用关系运算符将两个表达式连接起来,进行关系运算的式子。 例如,下面的关系表达式都是合法的: ab,a+bc-d,(a=3)=b,(ab)= =(bc) 关系表达式的值逻辑值(非“真”即“假”)true or false。 由于语言没有逻辑型数据,所以用整数“”表示“逻辑真”,用整数“”表示“逻辑假”。,例如,假设num1=3,num2=4,num3=5,则: (1)num1num2的值=。 (2)(num1num2)!=num3的值=。 (3)num1num2num3的值。 思考
3、题:任意改变num1或num2的值,会影响整个表达式的值吗?为什么? (4)(num1num2)+num3的值=,二、逻辑运算符 关系表达式只能描述单一条件,例如“x=0”。如果需要描述“x=0”、同时“x=0) scanf(“%d”,单分支: 例2: main() int a=30,temp=0,b=28; if (ab) temp=a; a=b; b=temp; printf(“a=%dtb=%dn”,a,b); ,二、if_else的嵌套结构(多分支) 1、if_if结构 if(x400) if(x500) y=0.5*(x-400); else y=x-400; else y=0; 说
4、明: else与同一层最接近它,而又没有其它else语句与之相匹配的if语句配对,例: main() int I=4,k=8; if(Ik”); ,2、else_if嵌套或多路选择 例: if(ab) printf(“ab”); else printf(“error”);,格式: if(测试条件1) 语句体1; else if(测试条件2) 语句体2; else if(测试条件3) 语句体3; ,语句执行流程:,表达式1,语句1,真(非0),假(0),练习一: 输入年份,判断是否闰年。 条件:能被4整出,不能被100整除是闰年。 或能被400整除,是闰年。,Scanf(“%d”, if (ye
5、ar%4=0) if(year%100!=0) printf(“是闰年”); else if (year%400=0) printf(“是闰年”); else printf (“不是闰年”); else printf (“不是闰年”);,练习二: 输入一个字符,如果是数字则输出1;如果是大写字母则输出2;如果是小写字母则输出3;如果是空格则输出4;如果是回车换行符号则输出5;是其他字符则输出6。,Scanf(“%c”,练习三: 输入一个带符号的短整形数,输出该数的位数。,Int x,x1,m; scanf(“%d”,例 求一元二次方程ax2+bx+c=0的解(a0)。#include math
6、.hmain()float a,b,c,disc,x1,x2,p,q; scanf(“%f,%f,%f”, 说明:由于实数在计算机中存储时,经常会有一些微小误差,所以本案例判断disc是否为0的方法是:判断disc的绝对值是否小于一个很小的数(例如10-6)。,练习: 任意输入三个数,判断能否构成三角形?若能构成三角形,是等边三角形、等腰三角形还是其它三角形?,三、条件运算符,?: 三目运算符 expression1?Expression2:expression3,例: result=a0?1:1.5 =1.0 Ab)?a:b)c?max1:c;,4.3 switch语句多分支选择语句,格式:
7、 switch(表达式) case 常量表达式1:语句序列1;break; case 常量表达式2:语句序列2;break; case 常量表达式n:语句序列n;break; default: 语句序列; ,2、语句执行流程:,指语句的最后一条是否为break,简单语句或复合语句,case语句出 现的次序并 不影响执行 结果。,说明: 表达式类型一般是整型或字符型。 若case后面跟break;语句,可迫使switch结束。 若case后面不加break;其后所有的case语句都被执行,除非遇到另一终止switch的语句。 语句序列不管有几条,都不加。 Default是可选项,用于捕捉错误。,
8、例4-4:假设用0、1、2.6分别表示星期日、星期一.星期六。现输入一个数字,输出对应的星期几的英文单词。如果输入3,输出“Wednesday”。,#include stdio.h void main() int n; scanf(%d, ,程序运行情况如下: 3 Wednesday Thursday Friday Saturday error,将上面的例4-4修改如下:,#include stdio.h void main() int n; scanf(%d, ,程序运行情况如下: 3 Wednesday,3、说明,多个case语句可以共用一组执行语句。,switch(grade) case
9、 A: case B: case C:printf(grade=60n);break; default:printf(grade60); ,各case和default子句的先后顺序可以变动,而不会影响程序执行结果。,default语句可以省略不用。,case和default与其后面的常量表达式间至少有一个空格。,switch语句可以嵌套,break语句只跳出它所在的switch语句。,嵌套switch 5级分制 5+ 5 5- 4+ 4 4- 3 2 1 百分制 100 90 85 80 75 70 60 60 60 将5级分制 转换成百分制输出。,Char c1,c2; Scanf(“%c%
10、c”, case 4: default:printf(”error”),1.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; case 3:a+;b+; printf(“a=%d,b=%dn”,a,b); ,结果: a=2,b=1,课堂练习,练习1: 某幼儿园招收26岁的小孩,23岁入小班,4岁入中班,56岁入大班。输入年龄,输出应入的班级。,例4-5 企业发放的奖金根据利润提成。从键盘输入当月利润,求应发放奖金总数?,利
11、润x x=10 10x20 20x40 40x60 60x100 100x,(int )x/10,常量 0,1 1,2 2,3,4 4,5,6 6,7,8,9,10 10以上,用这种方法转换后,n出现了在不同区域有重复数字的情况。解决的方法有很多,其中一种是可以采用当x为10的整数倍时,将计算出的n值减1。,使用switch解题的关键,通过分析找到表达式,将问题分成几种情况。,#include stdio.h void main() float x,y; int n; scanf(%f, ,程序如下:,案例 已知某公司员工的保底薪水为500,某月所接工程的利润profit(整数)与利润提成的关
12、系如下(计量单位:元): profit1000没有提成; 1000profit2000提成10%; 2000profit5000提成15%; 5000profit10000提成20%; 10000profit提成25%。,算法设计要点: 为使用switch语句,必须将利润profit与提成的关系,转换成某些整数与提成的关系。分析本题可知,提成的变化点都是1000的整数倍(1000、2000、5000、),如果将利润profit整除1000,则当: profit1000对应0、1 1000profit2000对应1、2 2000profit5000对应2、3、4、5 5000profit1000
13、0对应5、6、7、8、9、10 10000profit对应10、11、12、,main() long profit; int grade; float salary=500; printf(Input profit: ); scanf(%ld, ,练习2: 某物品原有价值为p,由于使用使其价值降低。价值的折扣率根据时间t(月数)确定如下: t=21 10%折扣,4.3 选择结构程序设计举例,例 将任意三个整数按从大到小的顺序输出。,#include stdio.h void main() int x,y,z,t; scanf(%d,%d,%d, ,例 给一个不多于4位的正整数,求出它是几位数,逆序打印出各位数字。,#include stdio.h void main() int x,a,b,c,d; /*a,b,c,d代表千位、百位、十位、个位*/ scanf(%d, ,例 任意输入三个数,判断能否构成三角形?若能构成三角形,是等边三角形、等腰三角形还是其它三角形?,#include stdio.h void main() float a,b,c; scanf(%f,%f,%
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东省七校联合体2025年高一物理第二学期期末监测试题含解析
- 黑龙江哈尔滨市省实验中学2025届高一物理第二学期期末经典模拟试题含解析
- 宣传和传播课件
- 2025版智能车库租赁与新能源物流车辆停放合同
- 2025版办公室装修合同(含艺术装饰品定制)
- 二零二五版智能校巴租赁服务合同范本
- 2025年消防设施安装工程合同书
- 2025版仓储物流场地租赁与配送服务合作协议
- 2025版朝阳区校园保安服务与消防设施检查合同
- 2025版高校附属企业博士专家聘用合同模板
- 【真题】江苏省苏州市2025年中考物理试卷(含答案解析)
- 卡口及道路交通智能监控系统方案设计
- 呼吸机相关性肺炎的预防和护理
- 肺结核鉴别诊断
- 门诊口腔院感基础知识培训
- 论咏叹调《妈妈不在》的形象刻画与唱段处理
- 2025年邮政社招笔试考试历年真题及答案
- 2025年河南省中考数学试卷及答案
- 仓库技能考试试题及答案
- 子宫平滑肌瘤护理
- 营造林工程监理规范(试行)
评论
0/150
提交评论