《2.1学期C程序设计教材第章讲稿ppt课件》由会员分享,可在线阅读,更多相关《2.1学期C程序设计教材第章讲稿ppt课件(41页珍藏版)》请在金锄头文库上搜索。
1、5.1 5.1 关系运算符和关系表达式关系运算符和关系表达式5.2 5.2 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式5.3 if5.3 if语句语句5.4 switch5.4 switch语句语句5.5 5.5 程序举例程序举例第5章:选择结构三种基本结 构 :1.顺序结构:顺序结构:2.选择结构:选择结构:3.循环结构循环结构1.顺序结构:顺序结构:3.循环结构:循环结构:2.选择结构:选择结构:要设计选择结构程序,要考虑两个方面的问题:要设计选择结构程序,要考虑两个方面的问题:一一. .是在是在C C语言中如何来表示条件,语言中如何来表示条件,二二. .是在是在C C语言中实现选择结构
2、用什么语句。语言中实现选择结构用什么语句。在在C C语言中表示条件,一般用关系表达式或逻辑表达式,语言中表示条件,一般用关系表达式或逻辑表达式,实现选择结构用实现选择结构用ifif语句或语句或switchswitch语句。语句。ifif语句的常用形式:语句的常用形式: if( if(关系表达式关系表达式) )语句语句1 else 1 else 语句语句2 2例如:例如: if(x0)y=1;else y=-1; if(x0)y=1;else y=-1;关系表达式关系表达式 ;“”“”为关系运算符为关系运算符关系运算比较运算):将两个值进行比较,判断其比较的关系运算比较运算):将两个值进行比较,
3、判断其比较的结果是否符合给定的条件。结果是否符合给定的条件。例如:例如: a5 - a5 - 为一个关系表达式为一个关系表达式如果如果a=3a=3,则不满足,则不满足a5a5这个条件,此关系表达式的值为这个条件,此关系表达式的值为“假假”;如果如果a=9a=9,则满足,则满足a5a5这个条件,此关系表达式的值为这个条件,此关系表达式的值为“真真”。5.1.1 5.1.1 关系运算符及其优先次序关系运算符及其优先次序在语言中有以下关系运算符:在语言中有以下关系运算符:1) 1) 小于小于2) = 2) 3) 大于大于4) = 4) = 大于或等于大于或等于5) = 5) = 等于等于6) !=
4、6) != 不等于不等于关系运算符都是双目运算符,其结合性均为左结合。关系运算符都是双目运算符,其结合性均为左结合。关系运算符的优先级低于算术运算符,高于赋值运算符。关系运算符的优先级低于算术运算符,高于赋值运算符。在在六六个个关关系系运运算算符符中中,,=,=的的优优先先级级相相同同,高高于于=和和!=!=,=和和!=!=的优先级相同。的优先级相同。优先级相同高)优先级相同高)优先级相同低)优先级相同低)注意:在语言中,注意:在语言中,“等于关系运算等于关系运算符是双等号符是双等号“= “= =”=”,而不是单等,而不是单等号号“= ”“= ”(赋值运(赋值运算符)。算符)。例如:例如: c
5、a+b ca+b 等效于等效于c(a+b)c(a+b) ab=c ab=c 等效于等效于(ab(ab)=c =c a=bc a=bc 等效于等效于a=(bc )a=(bc a=bc 等效于等效于a=(bc )a=(bc )算术运算符算术运算符关系运算符关系运算符赋值运算符赋值运算符(高)(低)图5-15.1.2 5.1.2 关系表达式关系表达式1 1关系表达式的概念关系表达式的概念关系表达式是指用关系运算符将两个表达式连接起来,进行关关系表达式是指用关系运算符将两个表达式连接起来,进行关系运算的式子。系运算的式子。 例如,合法的关系表达式:例如,合法的关系表达式: ab ab,a+bc-da+
6、bc-d,(a=3)=(b=5)(a=3)=ba=b,(ab)= =(bc)(ab)= =(bc)2 2关系表达式的值关系表达式的值逻辑值非逻辑值非“真即真即“假假”)。)。 由于语言没有逻辑型数据,所以用整数由于语言没有逻辑型数据,所以用整数“表示表示“逻辑逻辑真真”,用整数,用整数“表示表示“逻辑假逻辑假”。 例如,假设例如,假设a=3a=3,b=4b=4,c=5c=5,那么:,那么: (1 1abab的值的值= 0= 0。 (2 2)(ab)!=b(ab)!=b的值的值= 1= 1。 (3 3abcab 1= 1。 (4 4)(ab)+c(a6=6,因为,因为aba1=1,1+5=61+
7、5=6。 强强调调:C C语语言言用用整整数数“1“1表表示示“逻逻辑辑真真”,用用整整数数“0“0表表示示“逻逻辑辑假假”。所所以以,关关系系表表达达式式的的值值,还还可可以以参参与与其其它它种种类类的运算,例如算术运算、逻辑运算等。的运算,例如算术运算、逻辑运算等。关系表达式只能描述单一条件,例如关系表达式只能描述单一条件,例如“x=0”“x=0”。如需描。如需描述述“x=0”“x=0”、同时、同时“x10”“x=0) & (x=0) & (x10) ,(x5) (x5) ,! (x= =0)! (x= =0), (year%4=0)&(year%100!=0)|(year%400=0)
8、(year%4=0)&(year%100!=0)|(year%400=0) (2 2运算规则运算规则 1 1)&:当且仅当两个运算量的值都为:当且仅当两个运算量的值都为“真时,运算结果为真时,运算结果为“真真”,否则为,否则为“假假”。 2 2)| | :当且仅当两个运算量的值都为:当且仅当两个运算量的值都为“假时,运算结果为假时,运算结果为“假假”,否则为,否则为“真真”。 3 3) ! ! :当运算量的值为:当运算量的值为“真时,运算结果为真时,运算结果为“假假”;当运算量;当运算量的值为的值为“假时,运算结果为假时,运算结果为“真真”。例如,假定例如,假定x=5x=5,那么,那么(x=0
9、) & (x=0) & (x10)的值为的值为“真真”,(x-1) | (x5)(x5)的值为的值为“假假”。2 2逻辑运算符的运算优先级逻辑运算符的运算优先级 (1 1逻辑非的优先级最高,逻辑与次之,逻辑或最低,即:逻辑非的优先级最高,逻辑与次之,逻辑或最低,即:!(非)!(非) & &(与)(与) | |(或)(或) (2 2与其它种类运算符的优先关系与其它种类运算符的优先关系! 算术运算符算术运算符 关系运算符关系运算符 & | & | 赋值运算符赋值运算符5.2.2 5.2.2 逻辑表达式逻辑表达式1 1逻辑表达式的概念逻辑表达式的概念用用逻逻辑辑运运算算符符将将1 1个个或或多多个个
10、表表达达式式连连接接起起来来,进进行行逻逻辑辑运运算算的的式式子子。在在C C中,用逻辑表达式表示多个条件的组合。中,用逻辑表达式表示多个条件的组合。例例如如,(year%4=0)&(year%100!=0)|(year%400=0)(year%4=0)&(year%100!=0)|(year%400=0)就就是是一一个个判判断一个年份是否是闰年的逻辑表达式。断一个年份是否是闰年的逻辑表达式。逻辑表达式的值是一个逻辑值非逻辑表达式的值是一个逻辑值非“真即真即“假假”)。)。2 2逻辑量的真假判定逻辑量的真假判定和非和非 编编译译系系统统在在给给出出逻逻辑辑运运算算结结果果时时用用整整数数“表表
11、示示“逻逻辑辑真真”、用、用“表示表示“逻辑假逻辑假”。 但但在在判判断断一一个个数数据据的的“真真或或“假假时时,却却以以和和非非为为根根据据:如如果果为为,则则判判定定为为“逻逻辑辑假假”;如如果果为为非非,则则判判定定为为“逻逻辑真辑真”。例例如如,假假设设num=12num=12,那那么么:!numnum的的值值= = ,num=1 num=1 num=31num31num | num31的值的值=1=1。 3 3说明说明 (1 1逻逻辑辑运运算算符符两两侧侧的的操操作作数数,除除可可以以是是和和非非的的整整数数外,也可以是其它任何类型的数据,如实型、字符型等。外,也可以是其它任何类型
12、的数据,如实型、字符型等。例如:例如:c&d c&d 的的值值为为1 1 ( (关关键键看看,c,c和和dd的的ASCIIASCII码码值值是否为是否为0)0)如如果果在在一一个个表表达达式式中中不不同同位位置置出出现现数数值值,要要区区分分哪哪些些是是作作为为数数值运算或关系运算的对象,那些作为逻辑运算的对象?值运算或关系运算的对象,那些作为逻辑运算的对象?例如:例如:53 & 83 & 8n2)&(y=n3n4)”“(x=n1n2)&(y=n3n4)”后,后,x x的值变为,而的值变为,而y y的值不变,仍等于的值不变,仍等于1 1!例如:求闰年问题!例如:求闰年问题!表示是闰年的条件可用
13、下列逻辑表达式:表示是闰年的条件可用下列逻辑表达式:(year%4=0)&(year%100!=0)|(year%400=0)(year%4=0)&(year%100!=0)|(year%400=0)表示非闰年的条件可用下列逻辑表达式:表示非闰年的条件可用下列逻辑表达式:!(year%4=0 )& (year%100!=0)|(year%400=0)!(year%4=0 )& (year%100!=0)|(year%400=0)或或(year%4!=0)|(year%100=0 & yer%400!=0)(year%4!=0)|(year%100=0 & yer%400!=0)将将C C提供的
14、关系运算符和逻辑运算符有效的结合使用,可编写出合提供的关系运算符和逻辑运算符有效的结合使用,可编写出合适的逻辑表达式来表示一个复杂的条件!适的逻辑表达式来表示一个复杂的条件!分析:闰年的条件是:分析:闰年的条件是:(1)(1)能被能被4 4整除,但不能被整除,但不能被100100整除的年份整除的年份都是闰年,如都是闰年,如2019,20192019,2019年是闰年;年是闰年;(2)(2)能被能被100100整除,又能整除,又能被被400400整除的年份是闰年。如整除的年份是闰年。如1600,20001600,2000年是闰年。不符合这年是闰年。不符合这两个条件的年份不是闰年。两个条件的年份不
15、是闰年。 5.3.1 if 5.3.1 if语句的三种形式语句的三种形式1 1ifif语句的一般格式:语句的一般格式: if( if(表达式表达式)语句组语句组1;1;1 1ifif语句中的语句中的“表达式必须用表达式必须用“(”“(”和和“)”“)”括起来。括起来。2 2elseelse子句可选是子句可选是ifif语句的一部分,必须与语句的一部分,必须与ifif配对配对使用,不能单独使用。使用,不能单独使用。3 3当当ifif和和elseelse下面的语句组,仅由一条语句构成时,也下面的语句组,仅由一条语句构成时,也可不使用复合语句形式即去掉花括号)。可不使用复合语句形式即去掉花括号)。 i
16、f if 语句是用来判定所给的条件是真还是假决定执行给出的两种语句是用来判定所给的条件是真还是假决定执行给出的两种操作之一!操作之一!表达式表达式表达式表达式语句语句假假(0)真真(非非0)真真语句语句1语句语句2假假C C语句提供了三种形式的语句提供了三种形式的ifif语句语句: :1.if(1.if(表达式表达式) ) 语句语句 if(xy)printf(“%d”,x); if(xy)printf(“%d”,x);2.if(2.if(表达式表达式) ) 语句语句1 else 1 else 语句语句2 2 if(xy)printf(“%d”,x); if(xy)printf(“%d”,x);
17、 else printf(“%d”,y); else printf(“%d”,y);3.if(3.if(表达式表达式1) 1) 语句语句1 1 else if ( else if (表达式表达式2) 2) 语句语句2 2 else if ( else if (表达式表达式3) 3) 语句语句3 3 else if ( else if (表达式表达式m) m) 语句语句m m else else 语句语句n n表达式表达式1表达式表达式2表达式表达式3表达式表达式4语句语句1语句语句2语句语句3语句语句4语句语句5假假真真真真假假真真假假假假真真例如: if(number500) cost=0.
18、15; else if(number300)cost=0.10; else if(number100)cost=0.075; else if(number50)cost=0.05 else cost=0;说明:说明:(1 1三种形式的三种形式的ifif语句在语句在ifif后都有后都有“表达式表达式”,一般为逻辑,一般为逻辑表达式或关系表达式,也可为其它类型。表达式或关系表达式,也可为其它类型。例如:例如:if(b3)printf(“Hello”); if(b3)printf(“Hello”); if(a)printf(“%d”,a);if(a)printf(“%d”,a);(2 2第二种和第三
19、种形式的第二种和第三种形式的ifif语句中,在每个语句中,在每个elseelse前面有一前面有一个分号,整个语句结束处有一个分号。虽然分号是个分号,整个语句结束处有一个分号。虽然分号是C C语句的组语句的组成部分,但是成部分,但是ifif和和elseelse同属于一个语句。同属于一个语句。例如:例如:if(xy)printf(“%d”,x);if(xy)printf(“%d”,x);else printf(“%d”,y);else printf(“%d”,y);(3 3在在ifif和和elseelse后面可以只含一个内嵌的操作语句后面可以只含一个内嵌的操作语句, ,也可以有也可以有多个操作语句
20、多个操作语句, , 此时用一对花括号此时用一对花括号“”“”将几个语句括起来成将几个语句括起来成为一个复合语句为一个复合语句. . 例如例如: : if ifa+bca+bc) s=0.2*(a+b); s=0.2*(a+b); printf(“s=0.2*(a+b)=%fn”,s printf(“s=0.2*(a+b)=%fn”,s);); else s=0.5*c; else s=0.5*c; printf(“s=0.5*c=%f;n”,s); printf(“s=0.5*c=%f;n”,s); 例例5.15.1:输入两个实数,按代数值由小到大的次序输出这两:输入两个实数,按代数值由小到大
21、的次序输出这两个数个数#include #include void main()void main() float a,b,t; float a,b,t;scanf(%f,%f,&a,&b);scanf(%f,%f,&a,&b);if(ab)if(ab)t=a;a=b;b=t;t=a;a=b;b=t;printf(%5.2f,%5.2fn,a,b);printf(%5.2f,%5.2fn,a,b); 运行情况:运行情况:3.6,-3.23.6,-3.2-3.20-3.20,空,空3.603.60例例5.2 5.2 输入输入3 3个数个数a,b,c,a,b,c,要求按由小到大的顺序输出要求按由小
22、到大的顺序输出. .#include #include void main()void main()float a,b,c,t;float a,b,c,t;scanf(%f,%f,%f,&a,&b,&c);scanf(%f,%f,%f,&a,&b,&c);if(ab)if(ab) t=a;a=b;b=t; t=a;a=b;b=t;if(ac)if(ac) t=a;a=c;c=t; t=a;a=c;c=t;if(bc)if(bc) t=b;b=c;c=t; t=b;b=c;c=t; printf(%5.2f,%5.2f,%5.2fn,a,b,c); printf(%5.2f,%5.2f,%5.2
23、fn,a,b,c); 运行情况:运行情况:3 3,7 7,11空空1.001.00,空,空3.003.00,空,空7.007.005.3.2 if 5.3.2 if 语句的嵌套语句的嵌套应当注意应当注意ifif与与elseelse的配对关系。的配对关系。elseelse总是与它上面的最近的总是与它上面的最近的ifif配对。配对。在在ifif语句中又包含一个或多个语句中又包含一个或多个ifif语句称为语句称为ifif语句的嵌套语句的嵌套. .一般形式如下一般形式如下: :if( )if( ) if( ) if( ) 语句语句1 1 else else 语句语句2 2elseelse if( )
24、if( ) 语句语句3 3 else else 语句语句4 4内嵌内嵌ifif内嵌内嵌ififif( )if( ) if( ) if( ) 语句语句1 1elseelse if( ) if( ) 语句语句2 2 else else 语句语句3 3内嵌内嵌ifif例例5.35.3有一函数有一函数: :#include #include void main()void main()int x,y;int x,y;scanf(%d,&x);scanf(%d,&x);if(x0)y=-1;if(x0)y=-1;else if(x=0)y=0;else if(x=0)y=0; else y=1; els
25、e y=1;printf(x=%d,y=%dn,x,y);printf(x=%d,y=%dn,x,y); -1(x0)编一程序编一程序, ,输入一个输入一个x x 值值, ,输出输出y y值值. . 程序清单如下:程序清单如下:方法方法1 1:上例中的程序段有四个,请判断哪个是正确的?上例中的程序段有四个,请判断哪个是正确的?程序程序1:程序程序2:if(x=0)y=-1;if(x0)y=1;elseelsey=0;if(x=0)y=0;elsey=-1;elsey=1;程序程序3:程序程序4:y=-1;y=0;if(x!=0)if(x=0)if(x0)y=1;if(x0)y=1;elsey=
26、0;elsey=-1;例例5.35.3有一函数有一函数: :-1(x0)正正确确正正确确 若若ifif语句中语句中, ,在表达式为在表达式为“真和真和“假时假时, ,且都只执行且都只执行一个赋值语句给同一个变量赋值时一个赋值语句给同一个变量赋值时, ,可以用简单的条件运算符可以用简单的条件运算符来处理来处理. . 条件运算符要求有条件运算符要求有3 3个操作对象个操作对象, ,称三目运算符称三目运算符,C,C中唯一的中唯一的一个三目运算符一个三目运算符. .条件表达式的一般形式为条件表达式的一般形式为: : 表达式表达式1?1?表达式表达式2:2:表达式表达式3 3它的执行过程如下图它的执行过
27、程如下图 : : 5.3.3 5.3.3 条件运算符条件运算符表达式表达式1条件表达式条件表达式取表达式取表达式2的值的值条件表达式条件表达式取表达式取表达式3的值的值真真假假说明说明: :(1)(1)条件运算符的执行顺序:先求解表达式条件运算符的执行顺序:先求解表达式1,1,若为非若为非0 0,则求解表,则求解表达式达式2 2,此时表达式,此时表达式2 2的值就作为整个条件表达式的值。若表达式的值就作为整个条件表达式的值。若表达式1 1的值为的值为0 0,则求解表达式,则求解表达式3 3,表达式,表达式3 3的值就是整个条件表达式的值。的值就是整个条件表达式的值。 例如:例如:max=(ab
28、)?a:bmax=(ab)?a:b(2)(2)条件运算符优先于赋值运算符,但比关系运算符和算术运算符条件运算符优先于赋值运算符,但比关系运算符和算术运算符都低。例如都低。例如: max=ab?a:b ab?a:b+1: max=ab?a:b ab?a:b+1(3)(3)条件运算符的结合方向为条件运算符的结合方向为“自右至左自右至左” ” 例如:例如:a=1,b=2,c=3,d=4 ab?a:(cd?c:d) a=1,b=2,c=3,d=4 ab?a:(cd?c:d) 值为值为4 4(4)(4)条件表达式中条件表达式中“表达式表达式2 2和和“表达式表达式3 3不仅可以是数值表不仅可以是数值表达
29、式,还可以是赋值表达式或函数表达式!达式,还可以是赋值表达式或函数表达式!例如:例如:ab?printf(“%d”,a):printf(“%d”,b);ab?printf(“%d”,a):printf(“%d”,b);(5)(5)条件表达式中条件表达式中, ,表达式表达式1 1的类型可以与表达式的类型可以与表达式2 2和表达式和表达式3 3的类的类型不同型不同, ,例如:例如:xy?1:1.5xy?1:1.5条件表达式的值为表达式条件表达式的值为表达式2 2和表达式和表达式3 3中较高的类型。中较高的类型。例例5.4 5.4 输入一个字符输入一个字符, ,判别它是否大写字母判别它是否大写字母,
30、 ,如果是如果是, ,将它转将它转换成小写字母换成小写字母; ;如果不是,不转换如果不是,不转换. .然后输出最后得到的字母然后输出最后得到的字母. .#include #include void main()void main()char ch;char ch;scanf(%c,&ch);scanf(%c,&ch);ch=(ch=A & ch=A & ch60n”);break; case C: printf(“60n”);break; 例例5.55.5写程序写程序, ,判断某一年是否闰年判断某一年是否闰年分析分析: :以变量以变量leapleap代表是否闰年的信息代表是否闰年的信息. .若
31、闰年若闰年, ,令令leap=1;leap=1;非闰非闰年年,leap=0.,leap=0.最后判断最后判断leapleap是否为是否为1,1,若是若是, ,则输出则输出“闰年信息。闰年信息。N-SN-S结构流程图结构流程图5-135-13如下:如下:例例5.55.5写程序写程序, ,判断某一年是否闰年判断某一年是否闰年#include void main()int year,leap;scanf(%d,&year); if(year%4=0) if(year%100=0) if(year%400=0) leap=1; else leap=0; else leap=1; else leap=0
32、; if(leap) printf(%d is,year); else printf(%d is not,year); printf(a leap year.n); 运行情况:运行情况:1989 1989isnotleapyear.2000 2000isleapyear.if(year%4!=0)leap=0;else if(year%100!=0) leap=1; else if(year%400!=0) leap=0;else leap=1;if(year%4=0&year%100!=0)if(year%4=0&year%100!=0)|(year%400=0)|(year%400=0)
33、leap=1; leap=1;else leap=0;else leap=0;例例5 56 6 求求ax2 +bxax2 +bxc c方程的解。基本的算法:方程的解。基本的算法: ,不是二次方程。,不是二次方程。 b2 b24ac4ac,有两个相等实根。,有两个相等实根。 b2 b24ac 4ac ,有两个不等实根。,有两个不等实根。 b2 b24ac 4ac ,有两个共轭复根。,有两个共轭复根。 #include #include #include #include void main ( ) void main ( ) float a,b,c,disc,x1,x2,realpart,ima
34、gpart; float a,b,c,disc,x1,x2,realpart,imagpart; scanf(“%f,%f,%f”,&a,&b,&c); scanf(“%f,%f,%f”,&a,&b,&c); printf(“the equation ”); printf(“the equation ”); if(fabs(a)=1e-6) if(fabs(a)=1e-6) printf(“is not a quadraticn”); printf(“is not a quadraticn”); else disc=b*b-4*a*c; else disc=b*b-4*a*c; if(fabs
35、(disc)=1e-6) if(fabs(disc)1e-6)else if(disc1e-6)x1=(-b+sqrt(disc)/(2*a);x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a);printf(has distinct real roots:%8.4fand8.4fn,x1,x2); printf(has distinct real roots:%8.4fand8.4fn,x1,x2); else elserealpart=-b/(2*a);realpart=-b/(2*a); im
36、agpart=sqrt(-disc)/(2*a); imagpart=sqrt(-disc)/(2*a); printf(has complex rootsn); printf(has complex rootsn); printf(%8.4f+%8.4fin,realpart,imagpart); printf(%8.4f+%8.4fin,realpart,imagpart); printf(%8.4f-%8.4fin,realpart,imagpart); printf(%8.4f-%8.4fin,realpart,imagpart); 例例5.7 5.7 运输公司对用户计算运费。路程运输
37、公司对用户计算运费。路程(s)(s)越远,每公里运费越越远,每公里运费越低。标准如下:低。标准如下: s250km s250km 没有折扣没有折扣 250s500 2% 250s500 2%折扣折扣 500s1000 5% 500s1000 5%折扣折扣 1000s2000 8% 1000s2000 8%折扣折扣 2000s3000 10% 2000s3000 10%折扣折扣 3000s 15% 3000s 15%折扣折扣设每公里每吨货物的基本运费为设每公里每吨货物的基本运费为p p,货物重为,货物重为w w,距离为,距离为s s,折扣为折扣为d d,则总运费的计算公式为,则总运费的计算公式为
38、: f=p*w*s*(1-d): f=p*w*s*(1-d)分析:折扣的变化是有规律的,即变化点都是分析:折扣的变化是有规律的,即变化点都是250250的倍数。此的倍数。此时我们可以设一个变量时我们可以设一个变量c= ( s/250)c= ( s/250),其代表,其代表250250的倍数。可以的倍数。可以用用switchswitch语句来实现。程序清单如下:语句来实现。程序清单如下:#include #include void main( )void main( ) int c,s; int c,s;float p,w,d,f;float p,w,d,f;scanf(%f,%f,%d,&p,
39、&w,&s);scanf(%f,%f,%d,&p,&w,&s);if(s=3000) c=12;if(s=3000) c=12;else c=s/250;else c=s/250;switch(c)switch(c) case 0:d=0;break; case 0:d=0;break; case 1:d=2;break; case 1:d=2;break; case 2:case 3:d=5;break case 2:case 3:d=5;break; case 4:case 5:case 6:case 7:d=8;break; case 4:case 5:case 6:case 7:d=8;break; case 8:case 9:case 10: case 8:case 9:case 10: case 11:d=10;break; case 11:d=10;break; case 12:d=15;break; case 12:d=15;break; f=p*w*s*(1-d/100.0);f=p*w*s*(1-d/100.0);printf(freight=%15.4fn,f);printf(freight=%15.4fn,f);5.35.45.55.85.10作业:作业: