版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章选择结构第一节关系运算和逻辑运算C语言的逻辑值C语言中的数据类型没有逻辑类型,考量逻辑值的标准为:非零表示“真”;零表示“假”结果为真表示成数值为1;结果为假表示成数值为0。1、关系运算符和关系表达式C语言提供6种关系运算符< <= > >= == !=由两个字符组成的运算符之间不可以加空格关系运算为双目运算,自左至右结合。<,<=,>,>=优先级别相同(优先级10),高于==,!=(优先级9)优先级:算术运算符>关系>赋值关系表达式由关系运算构成的表达式称为关系表达式,如3>5、a<c关系表达式的运算结果(逻辑值)逻辑真为1,逻辑假为0(整形值)例如:变量a中的值为10,变量c中的值为2,表达式a>=b的结果为“真”,其值为1;表达式a<b的结果为“假”,其值为0当关系运算符两边的值类型不一致时,若一边是整型,一边是实型,系统将自动把整型数转换为实型数,然后再进行比较。若两边都是实型,则应当避免使用==进行比较,因为通常存放在内存中的实型数是有误差的,因此不能进行精确比较。2、逻辑运算符和逻辑表达式C语言提供三种逻辑运算符 &&逻辑与 ||逻辑或 !逻辑非&&和||逻辑运算符为双目运算符,!逻辑运算符为单目运算符。优先级顺序:!高于&&高于||。逻辑运算符与赋值运算符、算术运算符、关系运算符之间的优先级顺序(从高至低):!、算术运算符、关系运算符、&&、||、赋值运算符。逻辑表达式由逻辑运算符及运算对象组成的表达式称为逻辑表达式。逻辑表达式的运算结果:为真用1表示;为假用0表示。例:变量a,c的值均为10,变量b,d的值均为15,则表达式a>c&&b>d的结果是什么?表达式(a>c)&&(b>d)的结果是什么?表达式a&&c的结果是什么?表达式(a-c)&&b的结果是什么?表达式(a-c)||b的结果是什么?学会将数学上的关系式转化为C语言合法的逻辑表达式。如数学关系式15<x<30C语言合法的逻辑表达式:x>15&&x<30注意:C语言中,在由&&和||构成的逻辑表达式,要留意“短路”现象。如:变量x的初值为0,变量y的初值为3,求表达式x++&&y++的值和y的值是多少?如:变量x的初值为3,变量y的初值为2,求表达式x++||y++的值和y的值是多少?第二节if语句if语句又称分支语句。1、if(表达式)语句;此语句为不含else子句的if语句。if为关键字,括号中的表达式可以是C语言中任意合法的表达式,if语句执行时,首先计算if后面的表达式的值,如果表达式的值为非零,则执行其后的if子句,然后去执行if语句后的下一条语句;如果表达式的值为零,则跳过if子句,直接执行if语句后的下一条语句。例:编制程序,输入两个整数,如果两数相等,则在屏幕上打印“两数相等”,否则不做任何输出。#include<stdio.h>/*示例文件4-1-1.c*/voidmain(){ inta,b; printf("请输入两个整数\n"); scanf("%d%d",&a,&b); if(a==b)printf("两个整数相等\n");}2、含else子句的if语句if(表达式)语句1;else语句2;此语句为含else子句的if语句。if为关键字,括号中的表达式可以是C语言中任意合法的表达式,if语句执行时,首先计算if后面的表达式的值,如果表达式的值为非零,则执行其后的if子句,然后去执行if语句后的下一条语句;如果表达式的值为零,则执行else子句,执行完后接着执行if语句后的下一条语句。例:编制程序,对输入的整数判断奇偶数。#include<stdio.h>/*示例文件4-1-2.c*/voidmain(){ inta; printf("请输入一个整数\n"); scanf("%d",&a); if(a%2==0)printf("此整数为偶数\n"); elseprintf("此整数为奇数\n");}请注意:if(表达式)语句1;else语句2;语句1以及语句2后的分号不允许省略。默认情况下,if语句表达式后只能是一条语句,称为if子句,如果该子句中需要包含多条语句,必须使用复合语句,即用花括号把一组语句括起来。原理上,此复合语句可以看成是“一条语句”。例:编制程序,实现输入两个整数,按从大到小的顺序输出两个整数。#include<stdio.h>/*示例文件4-1-3.c*/voidmain(){ inta,b,c; printf("请输入两个整数\n"); scanf("%d%d",&a,&b); if(a<b) { c=a; a=b; b=c; } printf("两数按从大到小输出为:%d,%d\n",a,b);}请注意if语句表达式后的复合语句。3、嵌套的if语句if子句中嵌套具有else子句的if语句if(表达式1)if(表达式2)语句1;
else语句2;else
语句3;if子句中嵌套不含else子句的if语句if(表达式1){if(表达式2)语句1;}else
语句2;在else子句中嵌套带else的if语句if(表达式1)语句1;elseif(表达式2)语句2;else语句3;在else子句中嵌套不含else的if语句if(表达式1)语句1;elseif(表达式2)语句2;或if(表达式1)语句1;elseif(表达式2)语句2;利用分支语句的嵌套编制程序,实现根据输入的学生成绩给出相应的等级,大于或等于85分为优秀,75分到85分之间为良好(含75分),60分到75分之间为合格(含60分),低于60分为不及格。#include<stdio.h>/*示例文件4-1-4.c*/voidmain(){ floatscore; printf("请输入学生成绩:\n"); scanf("%f",&score); printf("学生的成绩是:%.1f",score); printf("等级为:"); if(score>=85.0)printf("优秀\n"); elseif(score>=75.0)printf("良好\n"); elseif(score>=60.0)printf("合格\n"); elseprintf("不及格\n");}第三节条件表达式条件运算符?:。它是C语言提供的唯一的三目运算符,要求有三个运算对象。条件表达式形式如下:表达式1?表达式2:表达式3表达式1的值为非零,求出表达式2的值为整个条件表达式的值,当表达式1的值为零时,则求出表达式3的值为整个条件表达式的值。条件运算符的优先级高于赋值运算符,低于关系运算符和算术运算符。若变量x的值为12,经过运算y=x>12*2?1:-1后,变量y的值是多少?第四节多分支语句switch利用if分支语句解决多路分支问题时,有时很困难,引入多分支语句switch能很好解决这个问题。switch(表达式){case常量表达式1:语句1;case常量表达式2:语句2;
…case常量表达式n:语句n;default:语句n+1;}表达式两边的括号不能省略,switch后的表达式可以是整形值或字符型值,不能为实型值。case后必跟常量,类型与switch表达式的类型一致,且各个case后的常量应该互不相同,case与常量应该有一定空格。switch语句可以没有default标号。通过实例,了解switch语句的执行顺序和特点。运用switch分支语句,编制程序,根据输入的学生成绩给出相应的等级,大于或等于90分以上的为A,60分以下的为E,其余每10分为一个等级。示例文件4-1-5.ccase后不带break。示例文件4-1-6.ccase后不带break。注意两个示例文件相同的输入,输出结果有什么不同。#include<stdio.h>/*示例文件4-1-5.c*/voidmain(){ intscore; printf("请输入学生的成绩:\n"); scanf("%d",&score); printf("成绩是:%d",score); switch(score/10) { case10: case9:printf("A\n"); case8:printf("B\n"); case7:printf("C\n"); case6:printf("D\n"); default:printf("E\n"); }}#include<stdio.h>/*示例文件4-1-6.c*/voidmain(){ intscore; printf("请输入学生的成绩:\n"); scanf("%d",&score); printf("成绩是:%d",score); switch(score/10) { case10: case9:printf("A\n");break; case8:printf("B\n");break; case7:printf("C\n");break; case6:printf("D\n");break; default:printf("E\n"); } }[例]以下程序的输出结果是()#include<stdio.h>voidmain(){inta=10;if(a>10)printf(“%d\n”,a>10);elseprintf(“%d\n”,a<=10);}A)10B)a>10C)a<=10D)1答案:D[例]以下程序的输出结果是()/*示例文件4-1-7.c*/#include<stdio.h>voidmain(){inta=15,b=21,m=1;switch(a%3){case0:m++;case1:m++;switch(b%2){default:m++;case0:m++;break;}}printf(“%d\n”,m);}A)1B)5C)3D)4答案:B[例]以下程序的输出结果是()#include<stdio.h>voidmain(){inta=0,b=2,c=3;switch(a){case0:switch(b==2){case1:printf(“*”);break;case2:printf(“%”);break;}case1:switch(c){case1:printf(“$”);case2:printf(“*”);break;default:printf(“#”);}}}A)%B)#C)%#D)*#答案:D[例]有以下程序#include<stdio.h>voidmain(){inti=1,j=2,k=3;if(i++==1&&(++j==3||k++==3))printf("%d%d%d",i,j,k);}程序运行后的输出结果是()。A)123
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 沈阳理工大学《车辆人机工程学》2021-2022学年第一学期期末试卷
- 国家著作权软件著作权转让合同
- 2024-2025学年新教材高中历史第5课古代非洲与美洲课时素养评价含解析新人教版必修中外历史纲要下
- 高中历史第六单元资本主义运行机制的调节第19课当代资本主义的新变化史料解读素材北师大版必修2
- 大班音乐《粗心的小画家》课件
- 2024房屋维修工程施工合同
- 2024装修合同签署小常识分享
- 2024办公设备采购合同范本
- 2024【服务协议模板】代驾服务协议合同范本
- 2024装修合同制定的注意事项
- 篮球社团教案
- 2024 美国中概股上市公司发展现状白皮书
- 丧葬费家庭协议书范文范本
- 公司对公司走账协议书范文模板
- 留置导尿并发症的预防及处理
- 消防安全宣传教育-开展“消防安全大家谈”、“消防公益说”专题讲座
- 中小学119消防宣传月活动方案3篇
- 部编版五年级语文上册快乐读书吧测试题及答案
- 中汇富能排矸场设计
- 江苏省2024-2025学年八年级上学期期中专题复习最值问题专题训练
- 人教版2024新版八年级全一册信息技术第1课 开启物联网之门 教学设计
评论
0/150
提交评论