第四章 选择分支结构程序设计优秀课件.ppt
第四章选择分支结构程序设计第1页,本讲稿共83页C语言程序设计语言程序设计例:例:银行存款的例子银行存款的例子 设银行定期存款年利率设银行定期存款年利率raterate 一年一年 3.8 3.8 二年二年 4.50 4.50 三年三年 5.22 5.22 五年及以上五年及以上 5.76 5.76 并已知存款期为并已知存款期为n n年,存款本金为年,存款本金为capitalcapital元,编程元,编程计算计算n n年后本息之和年后本息之和depositdeposit.第2页,本讲稿共83页C语言程序设计语言程序设计例:用例:用C语言实现图示的分段函数。语言实现图示的分段函数。sin(x)/xx=0y=1x=01.分析问题(分析问题(建立数学模型,选择公式建立数学模型,选择公式),确定算法。确定算法。输入输入x;判断判断x值;值;根据根据x值,计算值,计算y值;值;输出输出y值。值。显然显然顺序结构不能实现,需用选择结构。顺序结构不能实现,需用选择结构。第3页,本讲稿共83页C语言程序设计语言程序设计2.写出算法描述写出算法描述第4页,本讲稿共83页C语言程序设计语言程序设计3.编写程序:用计算机语言写出实现算法的程序。编写程序:用计算机语言写出实现算法的程序。#include#include#include#includevoid main()void main()float x,y;float x,y;printf(“Enter x:”);printf(“Enter x:”);scanf(“%f”,&x);scanf(“%f”,&x);if(xif(x!=0.0)=0.0)y=sin(x)/x;y=sin(x)/x;else else y=1;y=1;printf(“x=%5.2fty=%7.2fn”,x,y);printf(“x=%5.2fty=%7.2fn”,x,y);第5页,本讲稿共83页C语言程序设计语言程序设计3.编写程序:用计算机语言写出实现算法的程序。编写程序:用计算机语言写出实现算法的程序。#include#include#include#includevoid main()void main()float x,y;float x,y;printf(“Enter x:”);printf(“Enter x:”);scanf(“%f”,&x);scanf(“%f”,&x);if(xif(x!=0.0)=0.0)y=sin(x)/x;y=sin(x)/x;else else y=1;y=1;printf(“x=%5.2fty=%7.2fn”,x,y);printf(“x=%5.2fty=%7.2fn”,x,y);第6页,本讲稿共83页C语言程序设计语言程序设计4.输入(编辑)程序输入(编辑)程序,编译、连接、执行程序编译、连接、执行程序,输出输出结果(测试)结果(测试)第7页,本讲稿共83页C语言程序设计语言程序设计n选择结构是三种基本结构(顺序、选择、循环)之一。选择结构是三种基本结构(顺序、选择、循环)之一。n选选择择结结构构的的特特点点是是:程程序序的的流流程程是是由由多多条条支支路路构构成成的的,在在程程序序的的一一次次执执行行过过程程中中,根根据据不不同同的的情情况况,只只有有一一条条支支路路被被选择执行,而其它支路上的语句被直接跳过。选择执行,而其它支路上的语句被直接跳过。n在在C C语言中,提供了语言中,提供了ifif语句和语句和switchswitch语句来实现选择结构。语句来实现选择结构。第8页,本讲稿共83页4.1关系运算符和关系表达式关系运算符和关系表达式411关系运算符及其优先次序关系运算符及其优先次序1.关系运算:是对两个量进行关系运算:是对两个量进行“比较运算比较运算”。2.关系运算符:关系运算符:第9页,本讲稿共83页4.1关系运算符和关系表达式关系运算符和关系表达式411关系运算符及其优先次序关系运算符及其优先次序 3.关于优先级别:关于优先级别:n前前4种关系运算符的优先级别相同,后两种也相同。种关系运算符的优先级别相同,后两种也相同。前前4种高于后两种。种高于后两种。n算术运算符、算术运算符、关系运算符、赋值运算符。关系运算符、赋值运算符。高高低低第10页,本讲稿共83页4.1关系运算符和关系表达式关系运算符和关系表达式4.1.1关系运算符及其优先次序关系运算符及其优先次序例:例:ca+b等价于等价于c(a+b);关系运算符的优先级低于算术运算符;关系运算符的优先级低于算术运算符ab=c等价于等价于(ab)=c;“”优先级高于优先级高于“=”a=bc等价于等价于a=(bc);“c等价于等价于a=(bc);关系运算符的优先级高于赋值运算符。;关系运算符的优先级高于赋值运算符。第11页,本讲稿共83页4.1关系运算符和关系表达式关系运算符和关系表达式4.1.2关系表达式关系表达式1.用关系运算符将两个表达式(算术、关系、逻辑、用关系运算符将两个表达式(算术、关系、逻辑、赋值表达式等)连接起来的有意义的表达式,称为关赋值表达式等)连接起来的有意义的表达式,称为关系表达式。系表达式。如:如:x!=0;a=A;a*a+b*ba+b;a=bc;a=bb&xy等价于等价于(ab)&(xy)a=b|x=y等价于等价于(a=b)|(x=y)!a|ab等价于等价于(!a)|(ab)第17页,本讲稿共83页4.2 4.2 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式4.2.2逻辑表达式逻辑表达式1.逻辑量:当一个量(可以是基本类型的常量或变量)逻辑量:当一个量(可以是基本类型的常量或变量)用作判断的时候,用作判断的时候,C编译系统认为:编译系统认为:非非0真,真,0假假2.逻辑表达式:用逻辑运算符(逻辑与、逻辑或、逻逻辑表达式:用逻辑运算符(逻辑与、逻辑或、逻辑非)将关系表达式或逻辑量连接起来的有意义的表辑非)将关系表达式或逻辑量连接起来的有意义的表达式叫逻辑表达式。达式叫逻辑表达式。第18页,本讲稿共83页4.2 4.2 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式4.2.2逻辑表达式逻辑表达式3.逻辑表达式的值逻辑表达式的值:真(真(1),假(),假(0)。)。4.C语言编译系统在给出逻辑运算结果时,以语言编译系统在给出逻辑运算结果时,以1代表代表“真真”,以,以0代表代表“假假”,但在判断一个量是否为,但在判断一个量是否为“真真”时,以时,以0代表代表“假假”,以非,以非0代表代表“真真”(即认为一个(即认为一个非非0的数值是的数值是“真真”)。)。第19页,本讲稿共83页4.2 4.2 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式4.2.2逻辑表达式逻辑表达式例:例:若若a=4,则则!a值为值为0(假)。(假)。若若a=4,b=5,则则a&b值为值为1(真)(真),a|b值为值为1(真)(真),!a|b值值为为1(真)(真)4&0|2值为值为1(真)(真)c&d(真)值为(真)值为1第20页,本讲稿共83页4.2 4.2 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式4.2.2逻辑表达式逻辑表达式例:计算:例:计算:53&2|8a)|(m=a22.x1+a并并yb3.的定义域的定义域nfabs(x)2或或x2|x-2nx=1+a&y=2|x=0&x!=0第26页,本讲稿共83页4.3if语句语句4.3.1if语句三种形式语句三种形式1.条件执行条件执行if(表达式表达式)语句语句if(p)A第27页,本讲稿共83页4.3if语句语句4.3.1if语句三种形式语句三种形式1.if(p)A例:例:if(xy)printf(“%d”,x);例:例:if(xy)t=a;a=b;b=t;第28页,本讲稿共83页4.3if语句语句4.3.1if语句三种形式语句三种形式n复合语句:用一对花括号复合语句:用一对花括号包围起来的一条包围起来的一条和多条语句。和多条语句。复合语句的形式:复合语句的形式:语句语句1;语句语句2;语句语句3;第29页,本讲稿共83页4.3if语句语句4.3.1if语句三种形式语句三种形式 复合语句在选择结构,循环结构中经常用到。我们在逻复合语句在选择结构,循环结构中经常用到。我们在逻辑上把复合语句看成是一条语句。辑上把复合语句看成是一条语句。第30页,本讲稿共83页4.3if语句语句4.3.1if语句三种形式语句三种形式例:要求用户输入一个实数,然后求出这个实数的绝对值。例:要求用户输入一个实数,然后求出这个实数的绝对值。第31页,本讲稿共83页4.3if语句语句4.3.1if语句三种形式语句三种形式2.分支执行分支执行if(表达式表达式)语句语句1else语句语句2即即if(p)AelseB当当P为真时(非为真时(非0)执行执行A,否则执行否则执行B或后续语句。或后续语句。第32页,本讲稿共83页4.3if语句语句4.3.1if语句三种形式语句三种形式2.分支执行分支执行例:例:if(a0)printf(“Aisapositiven”);elseprintf(“Aisnotapositiven”);nA和和B可以使单一语句,也可以是复合语句。可以使单一语句,也可以是复合语句。nelse部分不能独立存在部分不能独立存在,前面一定有;和前面一定有;和if语句。语句。第33页,本讲稿共83页4.3if语句语句4.3.1if语句三种形式语句三种形式注意:注意:n在在if和和else后面可以是单条语句,也可以是复合语后面可以是单条语句,也可以是复合语句,如果使用了复合语句,一定要用花括号括起来,句,如果使用了复合语句,一定要用花括号括起来,语句块后面不要语句块后面不要“;”号。号。第34页,本讲稿共83页4.3if语句语句4.3.1if语句三种形式语句三种形式例如:例如:if(a+bc&b+ca&c+ab)s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(“%f”,area);elseprintf(“itisnotatriangle”);第35页,本讲稿共83页4.3if语句语句4.3.1if语句三种形式语句三种形式n在在C语言中,表达式语言中,表达式P的值是非的值是非0时,系统均按真时,系统均按真值处理。值处理。例例(1)if(a)printf(“ok!”);(2)x=-5;if(x)printf(“ok!”);(3)y=0;if(y=0)printf(“ok!”);if(y)printf(“ok!”);第36页,本讲稿共83页4.3if语句语句4.3.1if语句三种形式语句三种形式nelse子句不能单独使用,必须是子句不能单独使用,必须是if语句的一部分,语句的一部分,与与if配对使用。配对使用。(缩排的格式缩排的格式)例:例:if(n6)if(n12)printf(“n大于大于6且小雨且小雨12n”);elseprintf(“n小于等于小于等于6n”);第37页,本讲稿共83页4.3if语句语句例:以下程序运行后的输出结果是例:以下程序运行后的输出结果是。main()inta=1,b=3,c=5;if(c=a+b)printf(yesn);elseprintf(non);yes第38页,本讲稿共83页4.3if语句语句4.3.1if语句三种形式语句三种形式例:比较例:比较a和和b的大小,并将大值赋给的大小,并将大值赋给max,并打印并打印出出max的值。的值。编程步骤:编程步骤:1.确定算法,画出流程图;确定算法,画出流程图;2.写出程序;写出程序;3.上机编译;上机编译;4.测试。测试。第39页,本讲稿共83页4.3if语句语句4.3.1 if4.3.1 if语句三种形式语句三种形式#include (#include (注意程序的缩排注意程序的缩排)void main()void main()float a,b,max;float a,b,max;printf(please input a,b:);printf(please input a,b:);scanf(%f%f,&a,&b);scanf(%f%f,&a,&b);if(ab)if(ab)printf(nabn);printf(nabn);max=a;max=a;else else printf(a=bn);printf(a=bn);max=b;max=b;printf(printf(“nmax=%fn,max);nmax=%fn,max);第40页,本讲稿共83页4.3if语句语句4.3.1if语句三种形式语句三种形式例:从键盘上输入例:从键盘上输入a,b,c三个数,按从大到小输出。三个数,按从大到小输出。(难点:交换数据算法难点:交换数据算法)第41页,本讲稿共83页4.3if语句语句4.3.1if语句三种形式语句三种形式#includevoidmain()inta,b,c,t;printf(“Entera,b,c:”);scanf(“%d%d%d”,&a,&b,&c);if(ab)/*t-临时变量临时变量*/t=a;a=b;b=t;/*交换交换a,b*/if(ac)t=a;a=c;c=t;if(b=90优秀优秀score=80良好良好score=70中等中等score=60及格及格score60不及格不及格第45页,本讲稿共83页4.3if语句语句4.3.1if语句三种形式语句三种形式#includevoidmain()floatscore;printf(“inputscore:”);scanf(“%f”,&score);if(score=90)printf(“Excellent!n”);elseif(score=80)printf(“Good!n”);elseif(score=70)printf(“Middle!n”);elseif(score=60)printf(“Pass!n”);elseprintf(“Fail!n”);第46页,本讲稿共83页4.3if语句语句4.3.1if语句三种形式语句三种形式例:模拟超市的优惠购物。根据顾客购物数以及例:模拟超市的优惠购物。根据顾客购物数以及所购商品单价计算顾客应付金额,计算中要进行优所购商品单价计算顾客应付金额,计算中要进行优惠打折。具体打折规定是:惠打折。具体打折规定是:购物超过购物超过10件按件按8折优惠;折优惠;购物超过购物超过100件,按件,按7折优惠。折优惠。第47页,本讲稿共83页4.3if语句语句4.3.1if语句三种形式语句三种形式#includestdio.h#definerate11.0#definerate20.8#definerate30.7voidmain()intnum;floatprice,money;printf(pleaseinputmumandprince:);scanf(%d%f,&num,&price);if(num100)money=rate3*price*num;elseif(num10)money=rate2*price*num;elsemoney=rate1*price*num;printf(moneyis%f,money);第48页,本讲稿共83页4.3if语句语句4.3.2 4.3.2 ifif语句的嵌套语句的嵌套 ifif语句的嵌套:语句的嵌套:ifif语句的语句的ifif块或块或elseelse块中,又块中,又包含一个包含一个ifif语句。语句。if()if()语句语句1;else语句语句2;elseif()语句语句3;else语句语句4;注意:应当注意注意:应当注意if与与else的配对关的配对关系。系。else总是与它总是与它上面上面的的最近最近的的未配对未配对的的if配对。特别是配对。特别是if/else子句数目不一样时(子句数目不一样时(if子句数量子句数量只会大于或等于只会大于或等于else子句数量)子句数量)第49页,本讲稿共83页4.3if语句语句4.3.2 4.3.2 ifif语句的嵌套语句的嵌套 例:编一个程序,例:编一个程序,输入输入x,输出输出y。输入x yx-3?n y=x-1yn输出y。#include#includevoidmain()floatx,y;scanf(“f%”,&x);if(x-3)y=x-1;elseif(x=3)y=sqrt(9-x*x);elsey=log10(x);printf(/n“%f%f/n”,x,y);第50页,本讲稿共83页4.3if语句语句4.3.2 4.3.2 ifif语句的嵌套语句的嵌套比较例:比较例:1.if(x)if(y)printf(1);elseprintf(“2”);2.if(x)if(y)printf(1);elseprintf(“2”);说明:通过加说明:通过加,可以改变,可以改变else的层位,从而改变程的层位,从而改变程序的执行流程。序的执行流程。第51页,本讲稿共83页4.3if语句语句4.3.2 4.3.2 ifif语句的嵌套语句的嵌套例:例:下面程序的运行结果是下面程序的运行结果是_.includeviodmain()inta=2,b=3,c=1;if(ab)if(ac)printf(“%dn”,a);elseprintf(“%dn”,b);printf(“over!n”);over!第52页,本讲稿共83页4.3if语句语句4.3.2 4.3.2 ifif语句的嵌套语句的嵌套例:例:判定某年是否闰年。闰年:能被判定某年是否闰年。闰年:能被4整除,但整除,但不能被不能被100整除;或能被整除;或能被400整除。整除。注意:注意:leap是标志性是标志性变量,在变量,在C语言中经常用语言中经常用到。到。第53页,本讲稿共83页4.3if语句语句4.3.2 4.3.2 ifif语句的嵌套语句的嵌套includeviodmain()intyear,leap;printf(“Whichyear?”);scanf(“%d”,year);if(year%400=0)leap=1;elseif(year%4=0)if(year%100=0)leap=0;elseleap=1;elseleap=0;if(leap=1)printf(“%disaleapyear”,year);elseprintf(“%disnotaleapyear”);第54页,本讲稿共83页4.3if语句语句4.3.2 4.3.2 ifif语句的嵌套语句的嵌套或者程序写成:或者程序写成:includeviodmain()intyear,leap;printf(“Whichyear?”);scanf(“%d”,year);if(year%4=0)&(year%100!=0)|(year%400=0)leap=1;elseleap=0;if(leap=1)printf(“%disaleapyear”,year);elseprintf(“%disnotaleapyear”);第55页,本讲稿共83页4.3if语句语句4.3.2 4.3.2 ifif语句的嵌套语句的嵌套例:判断某人是否属于肥胖体型。根据身高与体例:判断某人是否属于肥胖体型。根据身高与体重因素,医务工作者经广泛的调查分析给出了以下重因素,医务工作者经广泛的调查分析给出了以下“体指数体指数”对肥胖程度的划分:对肥胖程度的划分:体指数体指数t体重体重w/(身高身高h)(w单位为千克,单位为千克,h单位为米单位为米)当当t=27时,为时,为肥胖。肥胖。编程从键盘输入你的身高和体重,根据给定公式编程从键盘输入你的身高和体重,根据给定公式计算体指数,然后判断你的体重属于何种类型。计算体指数,然后判断你的体重属于何种类型。第56页,本讲稿共83页4.3if语句语句 4.3.2 4.3.2 ifif语句的嵌套语句的嵌套#includevoidmain()floath,w,t;printf(Pleaseenterh,w:);scanf(%f,%f,&h,&w);t=w/(h*h);if(t18)printf(t=%ftLowerweight!n,t);elseif(t25)printf(t=%ftStandardweight!n,t);elseif(tb?a:b;说明:说明:(1)条件运算符的执行顺序:先求解表达式条件运算符的执行顺序:先求解表达式1,若为,若为非非0(真)则求解表达式(真)则求解表达式2,表达式,表达式2的值就是整个条件的值就是整个条件表达式的值。若表达式表达式的值。若表达式1的值为的值为0(假),则求解表达式(假),则求解表达式3,此时表达式,此时表达式3的值就是整个条件表达式的值。的值就是整个条件表达式的值。第58页,本讲稿共83页4.3if语句语句4.3.3条件运算符(?:)条件运算符(?:)说明:说明:(2)条件运算符的优先级高于赋值运算符,低于关系条件运算符的优先级高于赋值运算符,低于关系运算符和算术运算符。运算符和算术运算符。例如:例如:max=ab?a:b等价于:等价于:max=(ab)?a:b)(3)条件运算符的结合性条件运算符的结合性“自右向左自右向左”。例如:例如:ab?a:cd?c:d。先考虑优先级、再考虑结合性:上面表达式先考虑优先级、再考虑结合性:上面表达式等价与等价与(ab)?a:(cd)?c:d)。第59页,本讲稿共83页4.3if语句语句4.3.3条件运算符(?:)条件运算符(?:)说明:说明:(4)表达式表达式2和表达式和表达式3不仅可以是数值表达式,还不仅可以是数值表达式,还可以是赋值表达式,函数表达式。可以是赋值表达式,函数表达式。例如:例如:ab?(a=100):(b=100);ab?prinf(“%d”,a):prinf(“%d”,b);(5)表达式表达式1,表达式,表达式2,表达式,表达式3的类型都可以不同。的类型都可以不同。条件表达式值的类型是表达式条件表达式值的类型是表达式2,表达式,表达式3中类型较高中类型较高的类型。的类型。例如:例如:xy?1:1.5整个表达式类型为实型。整个表达式类型为实型。第60页,本讲稿共83页4.3if语句语句4.3.3条件运算符(?:)条件运算符(?:)例例从键盘输入你和你朋友的年龄,编程判断谁从键盘输入你和你朋友的年龄,编程判断谁的年龄最大,并打印最大者的年龄。的年龄最大,并打印最大者的年龄。第61页,本讲稿共83页4.3if语句语句4.3.3条件运算符(?:)条件运算符(?:)#includevoidmain()intyourage,hisage,max;printf(Pleaseenteryourage:);scanf(%d,&yourage);printf(Pleaseenteryourfriendsage:);scanf(%d,&hisage);if(hisage=yourage)printf(hisageisequaltoyourage.);elsemax=(hisageyourage)?hisage:yourage;printf(theolderageis%dn,max);第62页,本讲稿共83页4.3if语句语句4.3.3条件运算符(?:)条件运算符(?:)例例:输入一个字符,如果是大写字母,转换为小写,输入一个字符,如果是大写字母,转换为小写,如果不是不转换。最后输出。如果不是不转换。最后输出。#includevoidmain()charch;scanf(“%c”,&ch);ch=(ch=A&ch=Z)?(ch+32):ch;printf(“%c”,ch);第63页,本讲稿共83页4.3if语句语句4.3.3条件运算符(?:)条件运算符(?:)例例:输入一个字符,如果是大写字母,转换为小输入一个字符,如果是大写字母,转换为小写,如果不是不转换。最后输出。写,如果不是不转换。最后输出。考虑:编程通过键盘输入一个字符,判断该字考虑:编程通过键盘输入一个字符,判断该字符是数字字符符是数字字符(digitcharacter)、字母字母(englishcharacter)、空格空格(spacecharacter)还是其他字符还是其他字符(othercharacter)。第64页,本讲稿共83页4.4switch语句语句多分支可以使用嵌套的多分支可以使用嵌套的if语句处理,但如果分语句处理,但如果分支较多,嵌套的支较多,嵌套的if语句层数多,程序冗长,降低可语句层数多,程序冗长,降低可读性。读性。C语言中语言中switch语句亦称多分支选择语句,它比语句亦称多分支选择语句,它比用嵌套的用嵌套的if语句实现多路分支问题,其程序结构清语句实现多路分支问题,其程序结构清晰、易读。晰、易读。第65页,本讲稿共83页4.4switch语句语句1.switch语句一般形式:语句一般形式:switch(表达式表达式e)case常量表达式常量表达式C1:语句语句1case常量表达式常量表达式C2:语句语句2case常量表达式常量表达式Cn:语句语句ndefault:语句语句n+1第66页,本讲稿共83页4.4switch语句语句 说明:说明:(1)switch括括号号后后面面的的表表达达式式e,允允许许为为任任何何类类型型,例例如整型、字符型、枚举型如整型、字符型、枚举型。(2)常常量量表表达达式式Ci必必须须与与表表达达式式e类类型型一一致致(整整型型和和字字符型可以通用)。符型可以通用)。第67页,本讲稿共83页4.4switch语句语句2.执行过程执行过程(1 1)计算计算“表达式表达式e”的值。的值。(2)(2)当当“表达式表达式e e”的值与某的值与某casecase后的后的 “常量表达式常量表达式 Ci Ci”的值一致时,就执行此的值一致时,就执行此casecase后面的语句后面的语句i i。直到直到 遇到遇到breakbreak语句和语句和switchswitch语句的语句的 “”。(3 3)如果)如果“表达式表达式e e”的值与所有常量表达式均不的值与所有常量表达式均不 一致一致,就执行就执行defaultdefault后面的语句后面的语句(如果没有如果没有 default default就执行跳出就执行跳出switch,switch,执行执行switchswitch语句后面语句后面 的语句的语句)。第68页,本讲稿共83页4.4switch语句语句 注意:注意:(1)常量表达式常量表达式Ci仅起语句标号的作用,不做求值仅起语句标号的作用,不做求值 判断。判断。(2)常量表达式)常量表达式Ci的值必须是唯一的,没有先后的值必须是唯一的,没有先后 次序。次序。(3)多个多个case可以共用一组执行语句。(注意可以共用一组执行语句。(注意 break使用的位置)使用的位置)(4)case后面如果有多条语句,不必用后面如果有多条语句,不必用 括起来。括起来。第69页,本讲稿共83页4.4switch语句语句 只只有有switch语语句句和和break语语句句配配合合起起来来,才才能能形形成成真真正意义上的多分支。正意义上的多分支。第70页,本讲稿共83页4.4switch语句语句例:设有声明语句例:设有声明语句inta=1,b=0;则执行以下语句后则执行以下语句后输出为输出为_.switch(a)case1:switch(b)case0:printf(*0*);break;case1:printf(*1*);break;case2:printf(*2*);break;*0*2*第71页,本讲稿共83页4.4switch语句语句问题:本题中没有问题:本题中没有break语句,执行结果会怎么样?如何解决语句,执行结果会怎么样?如何解决这个问题?这个问题?#includevoidmain()floatscore;printf(“pleaseinputthescore:”);scanf(“%f”,&score);switch(int)score/10)case10:case9:printf(“excellent!n”);case8:printf(“good!n”);case7:printf(“middle!n”);case6:printf(“pass!n”);default:printf(“fail!n”);第72页,本讲稿共83页4.5应用程序举例应用程序举例例:物流公司对用户计算运费,收费标准随距离变例:物流公司对用户计算运费,收费标准随距离变化如下:化如下:s250km不折扣;不折扣;250kms500km%2;500kms1000km%5;1000kms2000km%8;2000kms3000km%103000kms%15;计费按照运输距离计费按照运输距离s货物重量货物重量w进行,设每公里每吨货进行,设每公里每吨货物基本运费为物基本运费为p,考虑折扣考虑折扣d时,总运费计算公式为时,总运费计算公式为f=p*w*s*(1-d);第73页,本讲稿共83页4.5应用程序举例应用程序举例例:物流公司对用户计算运费,收费标准随距离变例:物流公司对用户计算运费,收费标准随距离变化如下:化如下:分析:分析:int(s/250)0:d=0;1:d=0.02;2、3:d=0.05;411:d=0.10;其它其它 d=1.5;第74页,本讲稿共83页4.5应用程序举例应用程序举例#includevoidmain()floatf,w,p,s,d;printf(“inputunitprice,space,weight:”);scanf(“%f%f%f”,p,s,w);switch(int)s/250)case0:d=0;break;case1:d=0.02;break;case2:case3:d=0.05;break;case4:case5:case6:case7:d=0.08;break;case8:case9:case10:case11:d=0.1;break;default:d=0.15第75页,本讲稿共83页4.5应用程序举例应用程序举例例例:读读入入一一个个年年份份和和月月份份,打打印印出出该该月月有有多多少少天天(考虑闰年),用(考虑闰年),用switch语句编程。语句编程。#includevoidmain()intyear,month;printf(Inputyear,month:);scanf(%d,%d,&year,&month);switch(month)case1:case3:case5:case7:case8:case10:case12:printf(31daysn);break;第76页,本讲稿共83页4.5应用程序举例应用程序举例case2:if(year%4=0&year%100!=0)|(year%400=0)printf(29daysn);elseprintf(28daysn);break;case4:case6:case9:case11:printf(30daysn);break;default:printf(Inputerror!n);第77页,本讲稿共83页4.5应用程序举例应用程序举例 例:编程计算一个简单的计算器程序,完成两个数的例:编程计算一个简单的计算器程序,完成两个数的 加、加、减、乘、除。减、乘、除。分析分析(1 1)输入输入 操作数操作数1 1 运算符运算符 操作数操作数2 2。(2 2)switchswitch表达式:运算符。表达式:运算符。(3 3)常量)常量+,-,*,/.第78页,本讲稿共83页4.5应用程序举例应用程序举例#includevoidmain()intdata1,data2;charop;printf(Pleaseentertheexpression:);scanf(%d%c%d,&data1,&op,&data2);/*输入数据时不能有空格输入数据时不能有空格*/switch(op)switch(op)第79页,本讲稿共83页4.5应用程序举例应用程序举例case+:printf(%d+%d=%dn,data1,data2,data1+data2);break;case-:printf(%d-%d=%dn,data1,data2,data1-data2);break;case*:printf(%d*%d=%dn,data1,data2,data1*data2);break;case/:if(0=data2)printf(Divisionbyzero!n);elseprintf(%d/%d=%dn,data1,data2,data1/data2);break;default:printf(Unknownoperator!n);第80页,本讲稿共83页4.5应用程序举例应用程序举例作业作业(200903)17.一下是一下是if语句的基本形式语句的基本形式:if(表达式表达式)语句语句 其中其中表达式表达式A)必须是逻辑表达式必须是逻辑表达式B)必须是关系表达式必须是关系表达式C)必须是逻辑表达式或关系表达式必须是逻辑表达式或关系表达式D)可以是任意合法的表达式可以是任意合法的表达式第81页,本讲稿共83页4.5应用程序举例应用程序举例18.有以下程序有以下程序#includemain()intx;scanf(%d,&x);if(x=3);elseif(x!=10)printf(%dn,x);程序运行时程序运行时,输入的值在哪个范围才会有输出结果输入的值在哪个范围才会有输出结果A)不等于不等于10的整数的整数B)大于大于3且不等于且不等于10的整数的整数C)大于大于3或等于或等于10的整数的整数D)小于小于3的整数的整数第82页,本讲稿共83页4.5应用程序举例应用程序举例19.有以下程序有以下程序#includemain()inta=1,b=2,c=3,d=0;if(a=1&b+=2)if(b!=2|c-!=3)printf(%d,%d,%dn,a,b,c);elseprintf(%d,%d,%dn,a,b,c);elseprintf(%d,%d,%dn,a,b,c);程序运行后输出结果是程序运行后输出结果是A)1,2,3B)1,3,2C)1,3,3D)3,2,1第83页,本讲稿共83页