版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计
目
录目录CONTENTS
关系运算符和关系表达式4.1
逻辑运算符和逻辑表达式4.2
if语句的基本形式4.3
嵌套的if语句4.4
条件运算符和条件表达式4.5
switch语句4.6在C语言中,条件运算符(?:)是唯一的三目运算符(需要三个操作数),它可以简化某些if-else语句的逻辑,形成条件表达式。其核心作用是根据一个条件的真/假,从两个表达式中选择一个执行:条件表达式?表达式1:表达式2;条件表达式的执行过程是:若条件表达式为真,则条件表达式的值等于表达式1的值,否则等于表达式2的值。例如:c=a>b?a:b;若a大于b,则条件表达式的值为a,赋值给c;否则,条件表达式的值为b,赋值给c,即求a和b两个数中较大的数。等价于:if(a>b) c=a;else c=b;
4.5条件运算符和条件表达式条件运算符的结合性为从右到左,当有条件运算符嵌套时,按照从右到左的顺序依次运算。例如,当a等于1,b等于2时,条件表达式:a<b?(c=3):a>b?(c=4):(c=5)该表达式的值为3,变量c的值也为3。首先计算表达式a>b?(c=4):(c=5),因为a>b为假,所以这一条件表达式的结果为5,此时c=5;接着计算a<b?(c=3):5,因为a<b为真,所以这一条件表达式的结果为3,此时c=3。2条件表达式中表达式1一般是关系表达式,表达式2和表达式3不仅可以是数值表达式,还可以是赋值表达式或函数表达式。例如:a>b?printf("%d",a):printf("%d",b)3条件运算符的优先级低于算术运算符、关系运算符及逻辑运算符,仅高于赋值运算符和逗号运算符。1
4.5条件运算符和条件表达式在C语言中,switch语句是一种多分支控制结构,用于根据一个整型表达式(或字符型、枚举型)的值,从多个预设分支中选择一个执行。它比多层if-elseif更适合“判断一个值是否匹配多个固定选项”的场景,代码结构更清晰。switch语句的一般形式如下:switch(表达式){case常量表达式1:[语句1];break;case常量表达式2:[语句2];break;…case常量表达式n:[语句n];break;[default:语句n+1];break;}其中,方括号括起来的内容是可选项。
4.6switch语句switch语句的执行过程如图所示,首先计算switch后表达式的值,然后将其结果与case后常量表达式的值依次进行比较,若此值与某case后常量表达式的值一致,即转去执行该case后的语句;若没有找到与之匹配的常量表达式,则执行default后的语句。
4.6switch语句
提示(1)整型表达式:switch后的表达式必须是整型相关类型(如int、char、enum,float、double等非整型不允许);(2)case常量:case后的“常量”必须是字面常量(如1、'A')或#define定义的宏,不能是变量;(3)break语句:用于跳出switch语句,避免“穿透”到下一个case(若不写break,会继续执行后续所有case的语句,直到遇到break或switch结束);(4)default分支:可选分支,当表达式值不匹配任何case时执行,通常放在最后(位置不固定,但习惯放末尾)。【例4-7】根据月份判断季节(12/1/2为冬季,3/4/5为春季,6/7/8为夏季,9/10/11为秋季)。【问题分析】这是一道典型的可以利用多分支选择语句的题目,可以定义整型变量month,使用switch语句判断整型变量month的值,利用case语句检验month值的不同情况;如果month的值不是case中所检验列出的情况,那么利用default语句输出“输入的月份无效!”。
4.6switch语句【参考代码】#include<stdio.h>intmain(){intmonth;printf("请输入月份(1-12):");scanf("%d",&month);switch(month){case12://12月case1://1月(无break,穿透到2月的逻辑)case2://2月(三个月份共用同一逻辑)printf("冬季\n");break;case3://3月case4://4月(穿透)case5://5月printf("春季\n");break;
4.6switch语句
case6://6月case7://7月(穿透)case8://8月printf("夏季\n");break;case9://9月case10://10月(穿透)case11://11月printf("秋季\n");break;default:printf("输入的月份无效!\n");break;}return0;}
4.6switch语句【运行结果】程序运行结果如图所示,当输入1~12之间的月份时,输出相应的季节,否则输出错误提示语。【程序说明】在每个case或default语句后都有一个break关键字,用于跳出switch结构。
4.6switch语句
名师点睛(1)case常量不能重复:同一个switch中,多个case的常量值必须唯一,否则编译报错。错误示例:switch(x){case1:...;break;case1:...;break;//错误:case常量重复}(2)表达式必须是整型:若用非整型(如float),编译会报错。错误示例:floatscore=85.5;switch(score){...}//错误:表达式为float类型(3)default的位置不固定:default可放在任意case之间,但建议放在最后,且必须加break(否则会穿透到后续case);(4)避免过度依赖穿透:除“多值共用逻辑”外,尽量为每个case加break,否则易导致逻辑混乱(尤其是代码维护时)。
4.6switch语句【例4-8】使用switch语句实现两个数简单的加减乘除计算。【问题分析】接收用户输入的整数表达式(如10+5),解析出两个操作数和运算符,执行对应的加减乘除运算并输出结果,我们开始定义三个变量,两个整型变量a、b用来储存将要进行计算的整数,一个字符型变量op用来储存运算符。
4.6switch语句【参考代码】#include<stdio.h>intmain(){inta,b;charop;//运算符(+、-、*、/)printf("请输入表达式(格式:aopb,如10+5):");scanf("%d%c%d",&a,&op,&b);switch(op){case'+':printf("%d+%d=%d\n",a,b,a+b);break;case'-':printf("%d-%d=%d\n",a,b,a-b);break;case'*':printf("%d*%d=%d\n",a,b,a*b);break;
4.6switch语句case'/'://额外判断除数是否为0if(b==0){printf("错误:除数不能为0\n");}else{printf("%d/%d=%d\n",a,b,a/b);}break;default:printf("错误:不支持的运算符(仅支持+-*/)\n");break;}return0;}
4.6switch语句【运行结果】【程序说明】该程序是一个基于switch语句实现的简易整数计算器,核心功能是接收用户输入的整数表达式(如10+5),解析两个整数操作数和运算符后,执行加减乘除运算并输出结果,同时包含异常情况处理。首先通过inta,b定义存储两个整数操作数的变量,charop定义存储运算符(+、-、*、/)的变量;然后通过printf提示输入格式(如10+5),再用scanf("%d%c%d",&a,&op,&b)读取输入的两个整数和运算符,确保输入数据与变量类型匹配;再通过switch(op)对运算符进行多分支判断——当op为'+'时,执行加法运算a+b并输出结果;当op为'-'时,执行减法运算a-b并输出结果;当op为'*'时,执行乘法运算a*b并输出结果;当op为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年丰城新高焦化有限公司本部(第2批次)招聘4人备考题库附答案
- 2025年聊城临清市卫健系统事业单位公开招聘工作人员笔试考试题库附答案
- 2025宿迁市泗阳县招聘合同制和公益性岗位工作人员38人(公共基础知识)综合能力测试题附答案
- 2025年湖北省建设科技与建筑节能办公室统一组织公开招聘工作人员(公共基础知识)测试题附答案
- 2025年湖北省教育科学研究院专项公开招聘3人考试参考题库附答案
- 2026广西北海市第三人民医院招聘笔试备考题库及答案解析
- 2026上海复旦大学环境科学与工程系招聘王戎课题组科研助理岗位2人笔试备考试题及答案解析
- 2026青海省海西州德令哈市司法局招聘1人笔试备考试题及答案解析
- 2025秋人教版道德与法治八年级上册9.1社会责任我担当教学设计
- 2026湖南长沙市天心区实验小学教师招聘笔试备考试题及答案解析
- 饼房(西点)厨师长年度工作总结课件
- 2025年统编版语文三年级上册第七、八单元模拟测试卷
- 2026年江苏盐城高中政治学业水平合格考试卷试题(含答案详解)
- 主动脉瓣置换术指南
- 装配式装修管线分离培训课件
- 2025年陕西公务员《申论(C卷)》试题含答案
- 管理体系不符合项整改培训试题及答案
- 消防鉴定考试承诺书(初-中-高级模板)
- 医院住院部建筑投标方案技术标
- 偏瘫康复的科普小知识
- 2025年(AIGC技术)生成式AI应用试题及答案
评论
0/150
提交评论