电工电子技术基础教程(第2版)第4章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第4章选择结构程序设计本章要点关系运算符与关系表达式逻辑运算符与逻辑表达式if语句switch语句本章难点if语句的嵌套switch语句的使用4.1关系运算符和关系表达式6种关系运算符:①<(小于)②<=(小于或等于)③>(大于)④>=(大于或等于)⑤==(等于)⑥!=(不等于)一、关系运算符及其优先次序优先级相同(高)优先级相同(低)结合性:自左向右4.1关系运算符和关系表达式一、关系运算符及其优先次序与其它运算符优先级的比较:算术运算符关系运算符赋值运算符(高)(低)例如:c=da+b等效于:c=(d(a+b))1.什么是关系表达式?二、关系表达式如:(ab)(bc)、‘a’‘b’、xy、s+fd2.关系表达式的值运算结果∶逻辑值1——“真”,0——“假”如:设a=3,b=2,c=1求下面关系表达式的值:cb(a-b)==1b+ca值为0值为1值为0如果关系运算对象的类型不同,也要先进行类型转换。4.2逻辑运算符和逻辑表达式3种逻辑运算符:①!(逻辑非)②&&(逻辑与)③||(逻辑或)一、逻辑运算符及其优先次序优先级(高)(低)如:!aa为真,则!a为假。a||ba、b之一为真,则a||b为真。a&&ba、b同时为真,则a&&b为真。4.2逻辑运算符和逻辑表达式与其它运算符优先级的比较:一、逻辑运算符及其优先次序(高)(低)!算术运算符关系运算符&&和||赋值运算符例如:c=da+b&&ab等效于:c=((d(a+b))&&(ab))1.什么是逻辑表达式?二、逻辑表达式用逻辑运算符将逻辑运算对象连结起来的式子。如:(ab)&&(bc)、!a||ab2.逻辑表达式的值运算结果∶逻辑值(只有假为0、真为1两种取值)如:53&&2||84‘b’&&’d’值为1值为1运算对象∶以数值非0为真、0为假4.3if语句1.if(表达式)语句一、if语句的三种形式执行过程:当表达式的值为“真”(非零)时,执行语句,否则,不执行语句。如:if(xy)z=x;2.if(表达式)语句1else语句2执行过程:当表达式的值为“真”(非零)时,执行语句1,否则,执行语句2。如:if(xy)z=x;elsez=y;3.if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3:elseif(表达式m)语句melse语句n如:if(grade=85)level=‘A’;elseif(grade=70)level=‘B’;elseif(grade=60)level=‘C’;elselevel=‘D’;if语句说明:⑴if后面的表达式一般为逻辑表达式或关系表达式,也可以是任意数值类型表达式。该语句是合法的:if(3)printf(“ok!”);⑵if语句中的“语句”为一个简单语句或复合语句。如:下面程序段是否有错?if(x=0)printf(“Xispositive.”);x++;elseprintf(“Xisnegative.”);if(x=0){printf(“Xispositive.”);x++;}elseprintf(“Xisnegative.”);二、if语句的嵌套在if语句中又包含一个或多个if语句称为if语句的嵌套。一般形式:if(条件1)if(条件2)语句1else语句2elseif(条件3)语句3else语句4内嵌if内嵌if如:if(x0)if(y0)printf(x0,y0);elseprintf(“x0,y=0);elseif(y0)printf(“x=0,y0);elseprintf(“x=0,y=0”);说明:else与if的匹配原则是:一个else应与其之前距离最近且没有与其它else配对的if配对。if(n6)if(n12)printf(“6n12”);elseprintf(“n=6”);if(n6){if(n12)printf(“6n12”);}elseprintf(“n=6”);缩排#incldestdio.hmain(){intx;scanf(“%d”,&x);if(x0){printf(“Xispositive.”);x=x+1;}elseprintf(“Xisnegative.”);}缩进缩进缩进三、用if语句实现选择结构举例-1;x0例:求y=0;x=0输入x值,输出y值。1;x0main(){intx,y;scanf(%d,&x);if(x0)y=-1;elseif(x==0)y=0;elsey=1;printf(x=%dy=%d,x,y);}main(){floata,b,c;scanf(“%f%f%f”,&a,&b,&c);if(ab){t=a;a=b;b=t;}if(ac){t=a;a=c;c=t;}if(bc){t=b;b=c;c=t;}printf(“%5.2f,%5.2f,%5.2f”,a,b,c);}四、条件运算符和条件表达式条件表达式的一般形式:表达式1?表达式2∶表达式3如:max=(ab)?a:b;若a=3,b=2,则max=?如:(ab)?a:b目的∶简化if语句。if(ab)max=a;elsemax=b;等效于:条件运算符的优先级:算数运算符=关系运算符=逻辑运算符(除!)赋值运算符=条件运算符如:x=a+bc&&cd?a+b:d等效于:x=((((a+b)c)&&(cd))?(a+b):d)条件运算符的结合方向:自右至左如:ab?a:cd?c:d等效于:ab?a:(cd?c:d)例:把输入字符中的小写字符转换成大写并输出。#includestdio.hmain(){charch;scanf(%c,&ch);ch=(ch='a'&&ch='z')?ch-32:ch;printf(“%c”,ch);}输入数据:b输出结果:Bmain(){inta,b,c,t,max;scanf(%d%d%d,&a,&b,&c);t=(ab)?a:b;max=(tc)?t:c;printf(max=%d\n,max);}4.4switch语句一般形式:switch(表达式){case常量表达式1:语句序列1[break;]case常量表达式2:语句序列2[break;]:case常量表达式n:语句序列n[break;][default:语句序列n+1]}执行过程:例如:switch(grade){case‘A’:printf(“85~100”);case’B’:printf(“70~84”);case’C’:printf(“60~69”);case‘D’:printf(“60”);default:printf(“error”);}若grede=‘A’,输出结果是什么?85~10070~8460~6960error用break语句处理后的程序段:switch(grade){case‘A’:printf(“85~100”);break;case’B’:printf(“70~84”);break;case’C’:printf(“60~69”);break;case‘D’:printf(“60”);break;default:printf(“error”);}若gread=‘A’,输出结果又是什么?85~100完整程序:main(){chargrade;printf(“Inputgrade(A,B,C,D):”);scanf(“%c”,&grade);switch(grade){case‘A’:printf(“85~100”);break;case’B’:printf(“70~84”);break;case’C’:printf(“60~69”);break;case‘D’:printf(“60”);break;default:printf(“error!”);}}流程图为:grade输出“85-100”输出“60”输出“60-69”输出“error”输出“70-84”4.5选择结构程序举例例1写程序,判断某一年是否闰年。设:leap代表闰年信息,leap=1闰年,leap=0非闰年不能被4整除非闰年被4整除,但不能被100整除闰年被100整除,又能被400整除闰年其他,非闰年非闰年main(){intyear,leap=0;scanf(“%d”,&year);/*输入年份值*/if((year%4==0&&year%100!=0)||(year%400==0))leap=1;elseleap=0;if(leap==1)printf(“%disleap”,year);elseprintf(“%disnotleap”,year);}main(){intyear,leap=0;scanf(“%d”,&year);/*输入年份值*/if(year%4!=0)leap=0;elseif(year%100!=0)leap=1;elseif(year%400!=0)leap=0;elseleap=1;if(leap==1)printf(“%disleap”,year);elseprintf(“%disnotleap”,year);}例已知基本运费、货重,以及路程(s)和折扣的关系标准如下:s250km没有折扣250≤s500%2折扣500≤s10005%折扣1000≤s20008%折扣2000≤s300010%折扣3000≤s15%折扣算法:先按距离的250倍数进行分类,求每类的折扣,再按公式计算。编程序,计算运费。设基本运费p、货物重量w、距离s和折扣d。则总运费的计算公式为:f=p*w*s*(1-d)250500100020003000s0161412108642折扣的变化点都是250的倍数.c=s/250代表250的倍数。124812c总运费的计算公式为:f=p*w*s*(1-d)程序为:main(){intc,s;floatp,w,d,f;scanf(“%f,%f,%d”,&p,&w,&s);if(s=3000)c=12;elsec=s/250;/*按250分类*/switch(c){case0:d=0;break;/*s250*/case1:d=2;break;/*250≤s500*/case2:/*500≤s750*/case3:d=5;break;/*750≤s1000*/case4:/*1000≤s1250*/case5:/*1250≤s1500*/case6:/*1500≤s1750*/case7:d=8;break;/*1750≤s2000*/case8:/*2000≤s2250*/case9:/*2250≤s2500*/case10:/*2500≤s2750*/case11:d=10;break;/*2750≤s3000*/case12:d=15;break;/*3000≤s*/}f=p*w*s*(1-d/100.0);printf(“freight=%15.4f”,f);}运行情况:输入:100,20,300↙结果:freight=588000.0000若用if语句实现上述功能,程序为:main(){ints;floatp,w,d,f;scanf(“%f,%f,%d”,&p,&w,&s);if(s=3000)d=15;elseif(s=2000&&s3000)d=10;elseif(s=1000&&s2000)d=8;elseif(s=500&&s1000)d=5;elseif(s=250&&s500)d=2;elsed=0;f=p*w*s*(1-d/100.0);printf(“freight=%15.4f”,f);}例求ax2+bx+c=0方程的解1、a=0,方程不是二次方程2、b2-4ac=0,有两个相等的实根3、b2-4ac0,有两个不相等的实根4、b2-4ac0,有两个共轭复根5、如何判断实数为零(或大于零,或小于零)特殊条

1 / 41
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功