C语言选择结构的程序设计_第1页
C语言选择结构的程序设计_第2页
C语言选择结构的程序设计_第3页
C语言选择结构的程序设计_第4页
C语言选择结构的程序设计_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

选择结构的程序设计【主要内容】关系表达式和逻辑表达式选择结构控制语句

(if语句,switch语句)2引例计算函数值计算过程:输入x判断x的值根据x值,计算y值输出y值显然顺序程序不能实现,须引入选择结构35.1关系表达式关系运算:是对两个量进行比较运算关系运算符:<,<=,>,>=,==,!=优先级别:算术运算符关系运算符赋值运算符逗号运算符如c>a+bc<(a+b)a==b<ca==(b<c)a=b<ca=(b<c)高低高低45.1关系表达式关系表达式:用关系运算符将两个表达式(可以是算术表达式或关系表达式,逻辑表达式,赋值表达式,字符表达式)接起来的式子,称关系表达式如x!=0‘a’==’a’a*a+b*b<Y*Y对数值量比较:比较数值的大小;对字符的比较,比较字符的ASCII码关系表达式的值:真(1)假(0)c>a+ba==b<ca=b<c假如a=1,b=-5,c=‘a’,上述表达式的值为多少?结合规则:左结合55.2逻辑表达式逻辑运算符:&&(与)、||(或)、!(非)优先级别:!(非)--->&&--->||例:a>b&&b>c(a>b)&&(b>c)!a||a>b(!a)||(a>b)5>3&&2||!8<4-2((5>3)&&2)||((!8)<(4-2))6逻辑量:当一个量(可以是基本类型的常量或变量)用作判断时,C编译系统认为:非0——真、0为假用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式(单个逻辑量、关系表达式也是逻辑表达式)逻辑表达式的值:真(1)假(0)例:设a=4,b=5:!a=a&&b的值为a||b的值为!a||b的值为4&&0||2的值为7例:判断某年year是否闰年:(闰年:能被4整除,但不能被100整除;或能被400整除)Year%4==0&&year%100!=0||year%400==0写出C语言的表达式|x|>2abs(x)>2或x>2||x<-2x<1+a并y≤bx<(1+a)&&y<=b

的定义域(x-2)*(x-1)>=0&&x!=0或(x>=2||x<=1)&&(x!=0)85.3if语句If语句的三种形式条件执行if(e)A

如if(A>0)printf(“Aispositive\n”);分支选择if(e)AelseB当条件e的值为真时执行A,否则执行Bif(A>0)printf(“Aispositive\n”);elseprintf(“Aisnotpositive\n”);B可以是单条语句,也可以是复合语句;Else部分不能单独存在,即else前一定有一个;,它必定是if语句的一部分C语言中,表达式e的值为非0时,均按“真”处理9举例10例5-3输入一个整数a,判断它是偶数还是奇数分析:偶数:a%2==011例5-4任给a,b,c三个数,按照从大到小的顺序输出分析:3)使用判断——交换法若a<b,则交换a和b的值若a<c,则交换a和c的值若b<c,则交换b和c的值交换法的实现若a=5,b=8,a=b;b=a则结果a=8,b=8t=a;a=b;b=t;1213elseif形式(阶梯式的if-else语句)系统从上至下的逐个判断条件Pi,一旦发现某条件Pi满足时,则执行与其有关的语句Si,并跳过其他剩余的阶梯。若所有条件均不满足,执行最后一个else语句或后续语句。else总是与最近的if语句匹配141516If语句的嵌套

if(P1)if(p2)AelseBelseif(p3)CelseD例子5-7计算函数17If语句的嵌套

if(P1)if(p2)AelseBelseif(p3)CelseD注意嵌套语句中哪个else与哪个if匹配比较if(x)if(y)printf(“1”);elseprintf(“2”);

if(P1)Aelseif(p3)CelseD

if(P1)if(p2)AelseBelseC

if(P1)if(p2)Aelseif(p3)CelseD

if(P1)if(p2)AelseC

if(P1){if(p2)A}elseif(p3)CelseD

if(P1){if(p2)A}elseCif(x){if(y)printf(“1”);}elseprintf(“2”);18例子5-8判断某年是否为闰年闰年:年份year能被4整除,但不能被100整除;或能被400整除19条件运算符和条件表达式条件运算符:?和:/唯一的一个三目运算符条件表达式:基本形式:<表达式1>?<表达式2>:<表达式3>求解过程:计算表达式1的值为真,计算表达式2的值,并将表达式2的值作为整个条件表达式的结果,不再计算表达式3的值为假,计算表达式3的值,并将表达式3的值作为整个条件表达式的结果,不计算表达式2的值20优先级高于赋值运算,但低于所有关系、逻辑运算和算术运算结合方向是“右结合”如a>b?a:c>d?c:d,等价于a>b?a:(c>d?c:d)21例题:设intx=10,y=9;inta,b,c;

a=(--x==y++)?--x:--y;b=x++;c=y;执行上述程序段后a,b,c的结果8,8,1022各种运算符的优先级

!(逻辑非)高算术运算符关系运算符

&&和||(&&高于||)

条件运算符赋值运算符逗号运算符低23例5-9读程序,写出程序完成的功能#include<stdio.h>main(){inta,b,imax;printf(“inputdatatoaandb:”);scanf(“%d,%d”,&a,&b);imax=a>b?a:b;printf(“Themaxis%d\n”,imax);}printf(“Themaxis%d\n”,imax=a>b?a:b);printf(“Themaxis%d\n”,a>b?a:b);思考:n个数中找出最大数或最小数?24例5-10:任意输入一个字符,若是大写字母将其转换成小写字母分析:判断一个字符ch是否为大写字母ch>=‘A’&&ch<=‘Z’ch>=65&&ch<=90将大写字母转化为小写字母:ch+32ch+(‘a’-‘A’)#include<stdio.h>voidmain(){charch;ch=getchar();ch=(ch>=‘A’&&ch<=‘Z’)?ch+32:ch;putchar(ch);}可见,对于二分支、并对同一个变量赋值时,用条件表达式比较方便255.4开关语句也称多分支选择语句比用嵌套的if语句实现多路分支问题,其程序结构清晰、易读语句格式:

switch(表达式e){

case常量表达式a1:语句序列S1;

break;

case常量表达式a2:语句序列S2;

break;

…case常量表达式an:语句序列Sn;

break;

[default:语句S;]

}26执行过程首先计算表达式e的值将e的值依次与每一个case后的常量表达式ai进行比较如果相等,执行常量表达式ai后的语句序列Si若si结束处有break语句,则跳出switch语句,执行结束若没有break语句,在执行完Si后将无条件的继续执行下一条case语句的语句,此时并不再检查后面的case后的标号ai是否与e的值相等如果未找到与之匹配的常量表达式ai,则若有default语句,则执行default后的语句序列S后结束若没有default语句,switch语句直接结束(什么也没有做)27注意switch后面括号中可以是整型、字符型、枚举型,不能是实型常量表达式ai必须与表达式类型一直(整型和字符型通用)常量表达式ai仅起语句标号的作用,不做求值判断常量表达式ai的值必须唯一,没有先后次序多个case语句可以共用一组执行语句switch(i){case1:case2:case3:语句1;break;case4:语句2;break;case5:case6:语句3;break;default:语句4;}28如:switch(x){case1:printf(“statement1”);break;case2:printf(“statement2”);break;default:printf(“default”);}提问:case1,case2中没有break,结果如何例5-11用switch语句重作例5-5(评价学生成绩)29例5-12:运输公

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论