《c语言课件选择结构程序设计.pptx》由会员分享,可在线阅读,更多相关《c语言课件选择结构程序设计.pptx(97页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、4.1 选择结构和条件判断选择结构和条件判断在现实生活中,需要进行判断和选择的情况是很多的如果你在家,我去拜访你如果考试不及格,要补考如果遇到红灯,要停车等待周末我们去郊游70岁以上的老年人,入公园免票第1页/共97页4.1 选择结构和条件判断选择结构和条件判断在现实生活中,需要进行判断和选择的情况是很多的处理这些问题,关键在于进行条件判断由于程序处理问题的需要,在大多数程序中都会包含选择结构,需要在进行下一个操作之前先进行条件判断第2页/共97页4.1 选择结构和条件判断选择结构和条件判断C语言有两种选择语句:(1)if语句,实现两个分支的选择结构(2)switch语句,实现多分支的选择结构
2、第3页/共97页4.1 选择结构和条件判断选择结构和条件判断例4.1在例3.5的基础上对程序进行改进。题目要求是求方程的根。由键盘输入a,b,c。假设a,b,c的值任意,并不保证。需要在程序中进行判别,如果,就计算并输出方程的两个实根,否则就输出“方程无实根”的信息。第4页/共97页解题思路:输入a,b,c计算discdisc0计算x1,x2输出无实根输出x1,x2真真假假第5页/共97页#include#includeintmain()doublea,b,c,disc,x1,x2,p,q;scanf(%lf%lf%lf,&a,&b,&c);disc=b*b-4*a*c;计算计算b2-4ac,
3、disc的值变为的值变为-15第6页/共97页if(disc0)printf(“hasnotrealrootsn”);elsep=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf(“realroots:nx1=%7.2fnx2=%7.2fn”,x1,x2);return0;-150为真为真第7页/共97页#include#includeintmain()doublea,b,c,disc,x1,x2,p,q;scanf(%lf%lf%lf,&a,&b,&c);disc=b*b-4*a*c;计算计算b2-4ac,disc的值变为的值变为8第8
4、页/共97页if(disc0)printf(“hasnotrealrootsn”);elsep=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf(“realroots:nx1=%7.2fnx2=%7.2fn”,x1,x2);return0;80为假为假p的值变为的值变为-1q的值变为的值变为0.71x1的值变为的值变为-0.29x2的值变为的值变为-1.71第9页/共97页if(disc0)printf(“hasnotrealrootsn”);elsep=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=
5、p-q;printf(“realroots:nx1=%7.2fnx2=%7.2fn”,x1,x2);return0;选择结构选择结构,用用if语句实现语句实现的的第10页/共97页if(disc0)printf(“hasnotrealrootsn”);elsep=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf(“realroots:nx1=%7.2fnx2=%7.2fn”,x1,x2);return0;复合语句复合语句第11页/共97页4.2 用用if语句实现选择结构语句实现选择结构4.2.1用if语句处理选择结构举例4.2.2if语句
6、的一般形式第12页/共97页4.2.1 用用if语句处理选择结构举语句处理选择结构举例例例4.2输入两个实数,按代数值由小到大的顺序输出这两个数。第13页/共97页解题思路:只需要做一次比较,然后进行一次交换即可用if语句实现条件判断关键是怎样实现两个变量值的互换AB互换前互换前AB互换后互换后4.2.1 用用if语句处理选择结构举语句处理选择结构举例例第14页/共97页ABC4.2.1 用用if语句处理选择结构举语句处理选择结构举例例第15页/共97页ABC4.2.1 用用if语句处理选择结构举语句处理选择结构举例例第16页/共97页ABC4.2.1 用用if语句处理选择结构举语句处理选择结
7、构举例例第17页/共97页#includeintmain()floata,b,t;scanf(%f,%f,&a,&b);if(ab)t=a;a=b;b=t;printf(%5.2f,%5.2fn,a,b);return0;将将a和和b的值互换的值互换如果如果ab第18页/共97页#includeintmain()floata,b,t;scanf(%f,%f,&a,&b);if(ab)t=a;a=b;b=t;printf(%5.2f,%5.2fn,a,b);return0;选择结构,用选择结构,用if语句实现的语句实现的第19页/共97页例4.3输入3个数a,b,c,要求按由小到大的顺序输出。第
8、20页/共97页解题思路:可以先用伪代码写出算法:ifab,a和b对换(a是a、b中的小者)ifac,a和c对换(a是三者中最小者)ifbc,b和c对换(b是三者中次小者)顺序输出a,b,c第21页/共97页#includeintmain()floata,b,c,t;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.2fn,a,b,c);return0;如果如果 ab,将,将a和和b对换对换a是是a、b中的小者中的小者第22页/共97页#inc
9、ludeintmain()floata,b,c,t;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.2fn,a,b,c);return0;如果如果 ac,将,将a和和c对换对换a是是三者三者中的小者中的小者第23页/共97页#includeintmain()floata,b,c,t;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;pr
10、intf(%5.2f,%5.2f,%5.2fn,a,b,c);return0;如果如果 bc,将,将b和和c对换对换b是是三者三者中的中的次次小者小者第24页/共97页4.2.2 if语句的一般形式语句的一般形式if(表达式)语句1else语句2关系表达式逻辑表达式数值表达式方括号内的部分为可选的方括号内的部分为可选的第25页/共97页4.2.2 if语句的一般形式语句的一般形式if(表达式)语句1else语句2简单的语句简单的语句复合语句复合语句另一个另一个if语句语句等等第26页/共97页最常用的3种if语句形式:1.if(表达式)语句1(没有else子句)2.if(表达式)语句1else
11、语句2(有else子句)3.if(表达式)语句elseif(表达式)语句elseif(表达式)语句elseif(表达式)语句else语句m+1(在else部分又嵌套了多层的if语句)第27页/共97页if(number500)cost=0.15;elseif(number300)cost=0.10;elseif(number100)cost=0.075;elseif(number50)cost=0.05;elsecost=0;if(number 500)cost=0.15;else if(number 300)cost=0.10;else if(number 100)cost=0.075;el
12、se if(number 50)cost=0.05;else cost=0;等价于等价于分号不能丢第28页/共97页说明:(1)整个if语句可写在多行上,也可写在一行上但都是一个整体,属于同一个语句(2)“语句1”“语句m”是if中的内嵌语句内嵌语句也可以是一个if语句(3)“语句1”“语句m”可以是简单的语句,也可以是复合语句第29页/共97页4.3关系运算符和关系表达关系运算符和关系表达式式4.3.1关系运算符及其优先次序4.3.2关系表达式第30页/共97页4.3.1关系运算符及其优先次关系运算符及其优先次序序关系运算符:用来对两个数值进行比较的比较运算符语言提供种关系运算符:(小于)=
13、(小于或等于)(大于)=(大于或等于)=(等于)!=(不等于)优先级相同优先级相同(高高)优先级相同优先级相同(低低)第31页/共97页4.3.1关系运算符及其优先次关系运算符及其优先次序序关系、算术、赋值运算符的优先级算术运算符算术运算符 (高高)赋值运算符赋值运算符 (低低)关系运算符关系运算符 第32页/共97页4.3.1关系运算符及其优先次关系运算符及其优先次序序ca+b等效于c(a+b)ab=c等效于(ab)=ca=bc等效于a=(bc等效于a=(bc)第33页/共97页4.3.2 关系表达式关系表达式关系表达式用关系运算符将两个数值或数值表达式连接起来的式子关系表达式的值是一个逻辑
14、值,即“真”或“假”在C的逻辑运算中,以“”代表“真”,以“”代表“假”第34页/共97页4.4 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式4.4.1逻辑运算符及其优先次序4.4.2逻辑表达式4.4.3逻辑型变量第35页/共97页4.4.1 逻辑运算符及其优先次逻辑运算符及其优先次序序3种逻辑运算符:&(逻辑与)|(逻辑或)!(逻辑非)&和|是双目(元)运算符!是一目(元)运算符逻辑表达式用逻辑运算符将关系表达式或其他逻辑量连接起来的式子第36页/共97页4.4.1 逻辑运算符及其优先次逻辑运算符及其优先次序序判断年龄在13至17岁之内?age=13&age=17判断年龄小于12或大于65?
15、age65第37页/共97页4.4.1 逻辑运算符及其优先次逻辑运算符及其优先次序序ab!a!ba&ba|b 真真真真假假假假真真真真真真假假假假真真假假真真假假真真真真假假假假真真假假假假真真真真假假假假逻辑运算的真值表第38页/共97页4.4.1 逻辑运算符及其优先次逻辑运算符及其优先次序序逻辑运算符的优先次序逻辑运算符的优先次序!&|(!为三者中最高为三者中最高)与其他运算符的优先次序与其他运算符的优先次序 !(高)(高)算术运算符算术运算符关系运算符关系运算符&和和|赋值运算符赋值运算符 (低)(低)第39页/共97页4.4.2 逻辑表达式逻辑表达式逻辑表达式的值应该是逻辑量“真”或“
16、假”编译系统在表示逻辑运算结果时以数值1代表“真”,以0代表“假”但在判断一个量是否为“真”时以0代表“假”,以非0代表“真”注意:将一个非零的数值认作为“真”第40页/共97页4.4.2 逻辑表达式逻辑表达式(1)若a=4,则!a的值为0(2)若a=4,b=5,则a&b的值为1(3)a和b值分别为4和5,则a|b的值为1(4)a和b值分别为4和5,则!a|b的值为1(5)4&0|2的值为1第41页/共97页4.4.2 逻辑表达式逻辑表达式修改后的逻辑运算真值表ab!a!ba&ba|b 非非0非非00011非非000101假假非非01001假假01100第42页/共97页4.4.2 逻辑表达式
17、逻辑表达式判别某一年是否闰年,用逻辑表达式表示闰年的条件是符合下面二者之一:能被4整除,但不能被100整除,如2008能被400整除,如2000(year%4=0&year100!=0)|year%400=0如果表达式值为1,则闰年;否则为非闰年第43页/共97页4.4.3 逻辑型变量逻辑型变量这是C99所增加的一种数据类型可以将关系运算和逻辑运算的结果存到一个逻辑型变量中,以便于分析和运算第44页/共97页4.5 条件运算符和条件表达式条件运算符和条件表达式有一种if语句,当被判别的表达式的值为“真”或“假”时,都执行一个赋值语句且向同一个变量赋值如:if(ab)max=a;elsemax=
18、b;max=(a b)?a:b;条件运算符条件运算符第45页/共97页4.5 条件运算符和条件表达式条件运算符和条件表达式有一种if语句,当被判别的表达式的值为“真”或“假”时,都执行一个赋值语句且向同一个变量赋值如:if(ab)max=a;elsemax=b;max=(a b)?a:b;条件条件表达式表达式第46页/共97页4.5 条件运算符和条件表达式条件运算符和条件表达式条件表达式的一般形式为表达式?表达式:表达式第47页/共97页4.5 条件运算符和条件表达式条件运算符和条件表达式条件运算符的执行顺序:求解表达式1若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值若
19、表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值第48页/共97页4.5 条件运算符和条件表达式条件运算符和条件表达式条件运算符优先于赋值运算符条件运算符的结合方向为“自右至左”以下为合法的使用方法:ab?(max=a):(max=b);ab?printf(“%d”,a):printf(“%d”,b);第49页/共97页4.5 条件运算符和条件表达式条件运算符和条件表达式例4.4输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。第50页/共97页4.5 条件运算符和条件表达式条件运算符和条件表达式解题思路:用条件表
20、达式来处理,当字母是大写时,转换成小写字母,否则不转换第51页/共97页4.5 条件运算符和条件表达式条件运算符和条件表达式#includeintmain()charch;scanf(%c,&ch);ch=(ch=A&ch=Z)?(ch+32):ch;printf(%cn,ch);return0;第52页/共97页4.6 选择结构的嵌套选择结构的嵌套在if语句中又包含一个或多个if语句称为if语句的嵌套一般形式:if()if()语句1else语句2elseif()语句3else语句4内嵌内嵌ifelse总是与它上面最总是与它上面最近的未配对的近的未配对的if配对配对第53页/共97页4.6 选
21、择结构的嵌套选择结构的嵌套在if语句中又包含一个或多个if语句称为if语句的嵌套if()if()语句1else语句2内嵌内嵌if 限定了内嵌限定了内嵌if范围范围第54页/共97页4.6 选择结构的嵌套选择结构的嵌套例4.5有一函数:编一程序,输入一个x值,要求输出相应的y值。第55页/共97页4.6 选择结构的嵌套选择结构的嵌套解题思路:用if语句检查x的值,根据x的值决定赋予y的值由于y的可能值不是两个而是三个,因此不可能只用一个简单的(无内嵌if)的if语句来实现第56页/共97页4.6 选择结构的嵌套选择结构的嵌套解题思路:方法1(1)先后用3个独立的if语句处理:输入x若x0,则y=
22、1输出x和yscanf(%d,&x);if(x0)y=1;printf(x=%d,y=%dn,x,y);第57页/共97页4.6 选择结构的嵌套选择结构的嵌套解题思路:方法2(2)用一个嵌套的if语句处理:输入x若x0,则y=-1否则若x=0,则y=0否则y=1输出x和yscanf(%d,&x);if(x0)y=-1;else if(x=0)y=0;else y=1;printf(x=%d,y=%dn,x,y);第58页/共97页4.6 选择结构的嵌套选择结构的嵌套解题思路:方法2(2)用一个嵌套的if语句处理:输入x若x0,则y=-1否则若x=0,则y=0否则y=1输出x和yscanf(%d
23、,&x);if(x=0)if(x0)y=1;else y=0;else y=-1;printf(x=%d,y=%dn,x,y);提倡提倡内嵌内嵌if放在放在else中中第59页/共97页4.7 用用switch语句实现多分支选择结语句实现多分支选择结构构switch语句用来实现多分支选择结构学生成绩分类85分以上为A等7084分为B等6069分为C等人口统计分类按年龄分为老、中、青、少、儿童第60页/共97页4.7 用用switch语句实现多分支选择结语句实现多分支选择结构构例4.6要求按照考试成绩的等级输出百分制分数段,A等为85分以上,B等为7084分,C等为6069分,D等为60分以下。
24、成绩的等级由键盘输入。第61页/共97页4.7 用用switch语句实现多分支选择结语句实现多分支选择结构构解题思路:判断出这是一个多分支选择问题根据百分制分数将学生成绩分为4个等级如果用if语句,至少要用3层嵌套的if,进行3次检查判断用switch语句进行一次检查即可得到结果第62页/共97页#includeintmain()chargrade;scanf(%c,&grade);printf(Yourscore:);switch(grade)caseA:printf(85100n);break;caseB:printf(7084n);break;caseC:printf(6069n);br
25、eak;caseD:printf(60n);break;default:printf(enterdataerror!n);return0;值为值为A第63页/共97页#includeintmain()chargrade;scanf(%c,&grade);printf(Yourscore:);switch(grade)caseA:printf(85100n);break;caseB:printf(7084n);break;caseC:printf(6069n);break;caseD:printf(60n);break;default:printf(enterdataerror!n);retur
26、n0;不能少不能少第64页/共97页#includeintmain()chargrade;scanf(%c,&grade);printf(Yourscore:);switch(grade)caseA:printf(85100n);break;caseB:printf(7084n);break;caseC:printf(6069n);break;caseD:printf(60n);break;default:printf(enterdataerror!n);return0;值为值为C第65页/共97页#includeintmain()chargrade;scanf(%c,&grade);prin
27、tf(Yourscore:);switch(grade)caseA:printf(85100n);break;caseB:printf(7084n);break;caseC:printf(6069n);break;caseD:printf(60n);break;default:printf(enterdataerror!n);return0;值为值为F第66页/共97页#includeintmain()chargrade;scanf(%c,&grade);printf(Yourscore:);switch(grade)caseA:printf(85100n);break;caseB:print
28、f(7084n);break;caseC:printf(6069n);break;caseD:printf(60n);break;default:printf(enterdataerror!n);return0;此行位置有问题,此行位置有问题,应如何修改?应如何修改?第67页/共97页switch语句的作用是根据表达式的值,使流程跳转到不同的语句switch语句的一般形式:switch(表达式)case常量1:语句1case常量2:语句2case常量n:语句ndefault:语句n+1整数类型整数类型(包括字符型包括字符型)第68页/共97页switch语句的作用是根据表达式的值,使流程跳转到
29、不同的语句switch语句的一般形式:switch(表达式)case常量1:语句1case常量2:语句2case常量n:语句ndefault:语句n+1不能相同不能相同第69页/共97页scanf(%c,&grade);printf(Yourscore:);switch(grade)caseA:printf(85100n);break;caseB:printf(7084n);break;caseC:printf(6069n);break;caseD:printf(60n);break;default:printf(enterdataerror!n);第70页/共97页scanf(%c,&gra
30、de);printf(Yourscore:);switch(grade)caseA:printf(85100n);break;caseB:printf(7084n);break;caseC:printf(6069n);break;caseD:printf(60n);break;default:printf(enterdataerror!n);第71页/共97页scanf(%c,&grade);printf(Yourscore:);switch(grade)caseA:caseB:caseC:printf(6069n);break;caseD:printf(60n);break;default:
31、printf(enterdataerror!n);第72页/共97页例4.7编写程序,用switch语句处理菜单命令。解题思路:在许多应用程序中,用菜单对流程进行控制,例如从键盘输入一个A或a字符,就会执行A操作,输入一个B或b字符,就会执行B操作,等等。第73页/共97页#includeintmain()voidaction1(int,int),action2(int,int);charch;inta=15,b=23;ch=getchar();switch(ch)casea:caseA:action1(a,b);break;caseb:caseB:action2(a,b);break;def
32、ault:putchar(a);return0;输入输入a或或A调用调用action1函数,执行函数,执行A操作操作void action1(int x,int y)printf(x+y=%dn,x+y);第74页/共97页#includeintmain()voidaction1(int,int),action2(int,int);charch;inta=15,b=23;ch=getchar();switch(ch)casea:caseA:action1(a,b);break;caseb:caseB:action2(a,b);break;default:putchar(a);return0;输
33、入输入b或或B调用调用action2函数,执行函数,执行B操作操作void action2(int x,int y)printf(x*y=%dn,x*y);第75页/共97页#includeintmain()voidaction1(int,int),action2(int,int);charch;inta=15,b=23;ch=getchar();switch(ch)casea:caseA:action1(a,b);break;caseb:caseB:action2(a,b);break;default:putchar(a);return0;输入其他字符输入其他字符发出警告发出警告第76页/共
34、97页这是一个非常简单的示意程序实际应用中,所指定的操作可能比较复杂:A:输入全班学生各门课的成绩B:计算并输出每个学生各门课的平均成绩C:计算并输出各门课的全班平均成绩D:对全班学生的平均成绩由高到低排序并输出可以按以上思路编写程序,把各action函数设计成不同的功能以实现各要求第77页/共97页4.84.8选择结构程序综合举例选择结构程序综合举例选择结构程序综合举例选择结构程序综合举例例4.8写一程序,判断某一年是否闰年。解题思路:在前面已介绍过判别闰年的方法本例用不同的方法编写程序第78页/共97页4.84.8选择结构程序综合举例选择结构程序综合举例选择结构程序综合举例选择结构程序综合
35、举例用变量leap代表是否闰年的信息。若闰年,令leap=1;非闰年,leap=0。最后判断leap是否为(真),若是,则输出“闰年”信息参见教材图4.13第79页/共97页#includeintmain()intyear,leap;printf(enteryear:);scanf(%d,&year);if(year%4=0)if(year%100=0)if(year%400=0)leap=1;elseleap=0;elseleap=1;elseleap=0;if(leap)printf(%dis,year);elseprintf(%disnot,year);printf(aleapyear.
36、n);return0;标志变量标志变量与与if(leap!=0)含义相同含义相同第80页/共97页#includeintmain()intyear,leap;printf(enteryear:);scanf(%d,&year);if(year%4=0)if(year%100=0)if(year%400=0)leap=1;elseleap=0;elseleap=1;elseleap=0;if(leap)printf(%dis,year);elseprintf(%disnot,year);printf(aleapyear.n);return0;采取锯齿形式采取锯齿形式第81页/共97页#inclu
37、deintmain()intyear,leap;printf(enteryear:);scanf(%d,&year);if(year%4=0)if(year%100=0)if(year%400=0)leap=1;elseleap=0;elseleap=1;elseleap=0;if(leap)printf(%dis,year);elseprintf(%disnot,year);printf(aleapyear.n);return0;if(year%4!=0)leap=0;else if(year%100!=0)leap=1;else if(year%400!=0)leap=0;else lea
38、p=1;第82页/共97页#includeintmain()intyear,leap;printf(enteryear:);scanf(%d,&year);if(year%4=0)if(year%100=0)if(year%400=0)leap=1;elseleap=0;elseleap=1;elseleap=0;if(leap)printf(%dis,year);elseprintf(%disnot,year);printf(aleapyear.n);return0;if(year%4=0&year%100!=0)|(year%400=0)leap=1;else leap=0;第83页/共9
39、7页例4.9求方程的解。解题思路:解题思路:处理以下各情况处理以下各情况,不是二次方程,不是二次方程 ,有两个相等实根,有两个相等实根 ,有两个不等实根。,有两个不等实根。,有两个共轭复根。,有两个共轭复根。应当以应当以p+qi和和p-qi的形式输出复根的形式输出复根 其中,其中,p=-b/2a,q=()/2a参见教材参见教材图图4.14第84页/共97页#include#includeintmain()doublea,b,c,disc,x1,x2,realpart,imagpart;scanf(%lf,%lf,%lf,&a,&b,&c);printf(Theequation);if(fabs
40、(a)=1e-6)printf(isnotaquadraticn);实型不能用实型不能用if(a=0)第85页/共97页elsedisc=b*b-4*a*c;if(fabs(disc)1e-6)x1=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);printf(hasdistinctrealroots:%8.4fand%8.4fn,x1,x2);else第87页/共97页realpart=-b/(2*a);imagpart=sqrt(-disc)/(2*a);printf(hascomplexroots:n);printf(%8.4f+%8.4fin“
41、,realpart,imagpart);printf(%8.4f-%8.4fin,realpart,imagpart);return0;第88页/共97页realpart=-b/(2*a);imagpart=sqrt(-disc)/(2*a);printf(hascomplexroots:n);printf(%8.4f+%8.4fin“,realpart,imagpart);printf(%8.4f-%8.4fin,realpart,imagpart);return0;第89页/共97页realpart=-b/(2*a);imagpart=sqrt(-disc)/(2*a);printf(ha
42、scomplexroots:n);printf(%8.4f+%8.4fin“,realpart,imagpart);printf(%8.4f-%8.4fin,realpart,imagpart);return0;第90页/共97页例4.10运输公司对用户计算运输费用。路程(skm)越远,每吨千米运费越低。标准如下:s250没有折扣250s5002折扣500s10005折扣1000s20008折扣2000s300010折扣3000s15折扣第91页/共97页解题思路:设每吨每千米货物的基本运费为p,货物重为w,距离为s,折扣为d总运费f的计算公式为f=pws(1-d)第92页/共97页折扣的变化
43、规律(参见教材图4.15):折扣的“变化点”都是250的倍数在横轴上加一种坐标c,c的值为s/250c代表250的倍数当c1时,表示s250,无折扣1c2时,表示250s500,折扣d=22c4时,d=5;4c8时,d=8;8c12时,d=10;c12时,d=15第93页/共97页#includeintmain()intc,s;floatp,w,d,f;printf(pleaseenterprice,weight,discount:);scanf(%f,%f,%d,&p,&w,&s);if(s=3000)c=12;elsec=s/250;输入单价、重量、距离输入单价、重量、距离第94页/共97页switch(c)case0:d=0;break;case1:d=2;break;case2:case3:d=5;break;case4:case5:case6:case7:d=8;break;case8:case9:case10:case11:d=10;break;case12:d=15;break;第95页/共97页f=p*w*s*(1-d/100);printf(“freight=%10.2fn”,f);return0;第96页/共97页感谢您的欣赏!第97页/共97页