版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第5章章 选择结构程序设计选择结构程序设计要设计选择结构程序,要考虑两个方面的问题:一要设计选择结构程序,要考虑两个方面的问题:一是在是在C语言中如何来表示条件,二是在语言中如何来表示条件,二是在C语言中实现语言中实现选择结构用什么语句。选择结构用什么语句。在在C语言中表示条件,一般用关系表达式或逻辑表语言中表示条件,一般用关系表达式或逻辑表达式,实现选择结构用达式,实现选择结构用if语句或语句或switch语句。语句。 5.1 关系运算及其表达式关系运算及其表达式 5.2 逻辑运算及其表达式逻辑运算及其表达式 5.3 if语句语句 5.4 switch语句语句 5.5 选择结构程序举例选择
2、结构程序举例 5.1 关系运算及其表达式关系运算及其表达式所谓所谓“关系运算关系运算”实际上就是实际上就是“比较运算比较运算”,即将,即将两个两个数据进行比较,判定两个数据是否符合给定的关数据进行比较,判定两个数据是否符合给定的关系。系。 例如,例如,“a b”中的中的“”表示一个大于关系运算。表示一个大于关系运算。如如果果a的值是的值是5,b的值是的值是3,则大于关系运算,则大于关系运算“”的结的结果为果为“真真”,即条件成立;如果,即条件成立;如果a的值是的值是2,b的值的值是是3,则大于关系运算,则大于关系运算“”的结果为的结果为“假假”,即条件,即条件不成不成立。立。5.1.1 关系运
3、算符及其优先次序关系运算符及其优先次序1关系运算符关系运算符 C语言提供语言提供6种关系运算符:种关系运算符:, ,=, =, !=注意:在语言中,注意:在语言中,“等于等于”关系运算符是双等号关系运算符是双等号“= =”,而不是单等号,而不是单等号“= ”(赋值运算符)。(赋值运算符)。5.1 关系运算及其表达式关系运算及其表达式2优先级优先级 (1)在关系运算符中,前)在关系运算符中,前4个优先级相同,后个优先级相同,后2个也相个也相同,且前同,且前4个高于后个高于后2个。个。 (2)与其它种类运算符的优先级关系)与其它种类运算符的优先级关系关系运算符的优先级,低于算术运算符,但高于赋值运
4、算符关系运算符的优先级,低于算术运算符,但高于赋值运算符5.1.2 关系表达式关系表达式 1关系表达式的概念关系表达式的概念所谓关系表达式是指,用关系运算符将两个表达式连接起所谓关系表达式是指,用关系运算符将两个表达式连接起来,进行关系运算的式子。来,进行关系运算的式子。 例如,下面的关系表达式都是合法的:例如,下面的关系表达式都是合法的: ab,a+bc-d,(a=3)=b,(ab)= =(bc) 2关系表达式的值关系表达式的值逻辑值(非逻辑值(非“真真”即即“假假”)。)。 由于语言没有逻辑型数据,所以用整数由于语言没有逻辑型数据,所以用整数“”表示表示“逻逻辑辑真真”,用整数,用整数“”
5、表示表示“逻辑假逻辑假”。5.1 关系运算及其表达式关系运算及其表达式例如,假设例如,假设num1=3,num2=4,num3=5,则:,则: (1)num1num2的值的值=0。 (2)(num1num2)!=num3的值的值=1。 (3)num1num2num3的值的值=1。 思考题:任意改变思考题:任意改变num1或或num2的值,会影响整的值,会影响整个表达式的值吗?为什么?个表达式的值吗?为什么? (4)(num1num2)+num3的值的值=6,因为,因为 num1=0”。如。如果果需要描述需要描述“x=0”、同时、同时“x=0) & (x10)的值为的值为“真真”,(x5
6、)的值为的值为“假假”。5.2 逻辑运算及其表达式逻辑运算及其表达式2逻辑运算符的运算优先级逻辑运算符的运算优先级 (1)逻辑非的优先级最高,逻辑与次之,逻辑或最低,即:)逻辑非的优先级最高,逻辑与次之,逻辑或最低,即:!(非)!(非) &(与)(与) |(或)(或) (2)与其它种类运算符的优先关系)与其它种类运算符的优先关系 ! 算术运算算术运算 关系运算关系运算 & | 赋值运算赋值运算 5.2.2 逻辑表达式逻辑表达式 1逻辑表达式的概念逻辑表达式的概念 所谓逻辑表达式是指,用逻辑运算符将所谓逻辑表达式是指,用逻辑运算符将1个或多个表达式个或多个表达式连接起来,进行逻辑
7、运算的式子。连接起来,进行逻辑运算的式子。在在C语言中,用逻辑表达语言中,用逻辑表达式表示多个条件的组合。式表示多个条件的组合。 例如,例如,(year%4=0)&(year%100!=0)|(year%400=0)就是一个判断一个年份是否是闰年的逻辑表达式。就是一个判断一个年份是否是闰年的逻辑表达式。5.2 逻辑运算及其表达式逻辑运算及其表达式逻辑表达式的值也是一个逻辑值(非逻辑表达式的值也是一个逻辑值(非“真真”即即“假假”)。)。 2逻辑量的真假判定逻辑量的真假判定和非和非 语言用整数语言用整数“”表示表示“逻辑真逻辑真”、用、用“”表示表示“逻逻辑假辑假”。但在判断一个数据的但
8、在判断一个数据的“真真”或或“假假”时,却以和非为根时,却以和非为根据:据:如果为,则判定为如果为,则判定为“逻辑假逻辑假”;如果为非,则判定为;如果为非,则判定为“逻逻辑真辑真”。即当一个量(可以是基本类型的常量或变量)用作。即当一个量(可以是基本类型的常量或变量)用作判断时,判断时,C编译系统认为:非编译系统认为:非0真,真,0假。假。 例如,假设例如,假设num=12,则:,则: !num的值的值= ,num=1 num31的值的值=1。3说明说明 (1)逻辑运算符两侧的操作数,除可以是和非的整数)逻辑运算符两侧的操作数,除可以是和非的整数外,也可以是其它任何类型的数据,如实型、字符型等
9、。外,也可以是其它任何类型的数据,如实型、字符型等。5.2 逻辑运算及其表达式逻辑运算及其表达式(2)在计算逻辑表达式时,只有在必须执行下一)在计算逻辑表达式时,只有在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运个逻辑运算符才能求出表达式的解时,才执行该运算符(即并不是所有的表达式都被求解)。换句话算符(即并不是所有的表达式都被求解)。换句话说:说: 1)对于逻辑与运算,如果第一个操作数被判定为)对于逻辑与运算,如果第一个操作数被判定为“假假”,系统不再判定或求解第二操作数。,系统不再判定或求解第二操作数。 2)对于逻辑或运算,如果第一个操作数被判定为)对于逻辑或运算,如果第一个操
10、作数被判定为“真真”,系统不再判定或求解第二操作数。,系统不再判定或求解第二操作数。例如,假设例如,假设n1、n2、n3、n4、x、y的值分别为的值分别为1、2、3、4、1、1,则求解表达式,则求解表达式“(x=n1n2)&(y=n3n4)”后,后,x的值变为,而的值变为,而y的值不变,仍等于的值不变,仍等于1!5.3 if语句语句 一、一、if语句的三种形式语句的三种形式1、条件执行、条件执行 if(表达式)表达式) 语句语句 例:例:If(a0) printf(“A is positive.n”) 例:例:if(xy) z=y; y=x; x=z; 2、分支选择、分支选择 if(表
11、达式表达式) 语句语句1 else 语句语句2当表达式为真值(非当表达式为真值(非0)时执行语句)时执行语句1,否则执行语句,否则执行语句2或后或后续语句。续语句。例如:例如:if(a0) printf(“A is positive.n”); else printf(“A is not positive.n”);5.3 if语句语句 注意注意(1)语句)语句1和语句和语句2都可以是单一语句,也可以是复都可以是单一语句,也可以是复合语句。合语句。 (2)else部分不能独立存在,即部分不能独立存在,即else前一定有一个前一定有一个“;”,它必定是,它必定是if语句的一部分。语句的一部分。 (3
12、)在)在C语言中,表达式的值为非语言中,表达式的值为非0时,系统均按真时,系统均按真值处理。(表达式为单个的逻辑量时)值处理。(表达式为单个的逻辑量时) 例如:例如:if(a) printf(“o.k.”); x=-5;if(x) printf(“o.k.”); y=0;if(y=0) printf(“o.k.”); if(y) printf(“o.k.”);由此可见,表达式的类型不限于逻辑表达式,可以是任意的由此可见,表达式的类型不限于逻辑表达式,可以是任意的数值类型(包括整型、实型、字符型、指针型数据)。数值类型(包括整型、实型、字符型、指针型数据)。5.3 if语句语句例例5-2 读程序
13、读程序 #include void main( ) float x,y; printf(“enter x:”); scanf(“%f”,&x); if(x=0.) y=1; else y=(x*5+1)/x; printf(“nx=%4.1fty=%4.1fn”,x,y); Y=1;if(x!=0.) y=(x*5+1)/x;思考:如果将思考:如果将y=1与与if语句调换位置,程序结果是否相同?语句调换位置,程序结果是否相同?5.3 if语句语句 例例5-3: 输入一个整数输入一个整数a,判断它是偶数还是奇数?,判断它是偶数还是奇数?分析:分析:a为输入量,为输入量, 判断方法:判断方
14、法:a%2=0 #include void main( ) int a; printf(“tinput a number: ”); scanf(“%d”,&a); if(a%2=0) printf(“nt%d is evenn”,a); else printf(“nt%d is oddn”,a); 5.3 if语句语句 例例5-4:任给:任给a,b,c三个数,按从大到小的顺序输出。三个数,按从大到小的顺序输出。分析:分析:(1)对于任意两个数对于任意两个数a,b; 若若ab,则输出,则输出a,b 否则输出否则输出b,a(2)对于三个数,有对于三个数,有6种可能:种可能: abc, ac
15、b, bac, bca, cab, cba(3)使用判断交换法使用判断交换法 若若ab, 则交换则交换a和和b 若若ac, 则交换则交换a和和c 结果结果a最大最大 若若bbc交换方法:设交换方法:设a=5,b=8 思考:思考: a=b;b=a;可以交换吗?可以交换吗? t=a; a=b; b=t;(要有一个中间变量)要有一个中间变量)5.3 if语句语句 N-S图图 输入输入a,b,cab?是是否否t=a; a=b; b=t;ac?是是否否t=a; a=c; c=t;bc?是是否否t=b; b=c; c=t;输出输出a,b,c5.3 if语句语句 # include void main( )
16、 int a,b,c,t; printf(“input a, b, c:”); scanf(“%d,%5d,%d”,&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(“%d %d %dn”,a,b,c); 5.3 if语句语句3、else if形式(阶梯式的形式(阶梯式的ifelse语句)语句)if(表达式(表达式1)语句)语句1else if(表达式(表达式2)语句)语句2else if(表达式(表达式3)语句)语句3 else if(表达式(表达式n
17、)语句)语句n else 语句语句n+1系统从上到下的逐个判断表达式是否成立,一旦发现某表达式系统从上到下的逐个判断表达式是否成立,一旦发现某表达式i成立,则成立,则执行与它有关的语句执行与它有关的语句i,并跳过其他剩余的阶梯。若所有条件均不满足,并跳过其他剩余的阶梯。若所有条件均不满足,执行最后一个执行最后一个else语句或后续语句。语句或后续语句。5.3 if语句语句 例例5-5:评价学生的成绩:评价学生的成绩 score90 优秀,优秀, score80 良好良好 ,score70 中中 score60 及格,及格,score60 不及格不及格 #include void main( )
18、 int score; printf(“input a score: ”); scanf(“%d”,&score); if(score=90 ) printf(“优秀优秀n”); else if(score=80) printf(“良好良好n”); else if(score=70) printf(“中中n”); else if(score=60) printf(“及格及格n”); else printf(“不及格不及格n”); 5.3 if语句语句 例例5-6:设平面上一点:设平面上一点M,其坐标为,其坐标为(x,y),若若M落在圆心在落在圆心在坐标原点的单位圆上,则置坐标原点的单位
19、圆上,则置key=1,落在圆外置,落在圆外置key=2,落在落在圆内置圆内置key=0.分析:分析: 求点求点M到原点的距离到原点的距离r 比较比较r和单位圆半径的大小,从而得到相应的和单位圆半径的大小,从而得到相应的key值。值。5.3 if语句语句 N-S图图输入输入x, yyxr22r1?是是否否Key=2r=1?是是否否Key=1Key=0输出输出key5.3 if语句语句 #include #include void main( ) float x, y, r; int key; printf(“input x, y:”); scanf(“%f,%f”,&x,&y);
20、 r=sqrt(x*x+y*y); if(r1) key=2; else if(r=1) key=1; else key=0; printf(“(%.1f,%.1f):%dn”,x,y,key); 5.3 if语句语句 二二 if语句的嵌套语句的嵌套 含义:在含义:在if语句中又包含一个或多个语句中又包含一个或多个if语句称为语句称为if语句的嵌语句的嵌套。套。 形式:形式:if( p1 ) if( p2 ) 语句语句1 else 语句语句2 else if( p3 ) 语句语句3 else 语句语句4p1真假p2真假语句1语句2p3真假语句3语句45.3 if语句语句 例5-7:计算函数3l
21、og33931102xxxxyxx5.3 if语句语句 #include #include void main( ) float x, y; printf(“t input x: ”); scanf(“%f”,&x); if(x=-3.0&x=3.0) y=sqrt(9.0-x*x); else y=log10(x); printf(“tx=%.1fty=%.1fn”,x,y); 5.3 if语句语句从上例可以看到,实际上,从上例可以看到,实际上, if语句的嵌套语句的嵌套实现了路分支。实现了路分支。在条件为真时在条件为真时可以分支,条件假时也可以分支,而我们前面讲的可以分支,
22、条件假时也可以分支,而我们前面讲的if.else语句只有两语句只有两个分支,个分支,else if形式只能在条件为假时才能分支。形式只能在条件为假时才能分支。注意:注意:我们前面讲的我们前面讲的if语句嵌套形式是一个比较理想的情况,即一个标语句嵌套形式是一个比较理想的情况,即一个标准的形式,准的形式,if块有分支,块有分支,else块也有分支。在实际应用当中,并不是完块也有分支。在实际应用当中,并不是完全使用这种形式,它还有一些改良的形式,如:全使用这种形式,它还有一些改良的形式,如:if(p1) A if(p1)else if(p2) A if(p3) C else B else D els
23、e C大家注意了,正是由于这些改良的形式,如果不当心就容易出现问题。大家注意了,正是由于这些改良的形式,如果不当心就容易出现问题。如:如:if(p1) if(p1) if(p2) A if(p2) A else else if(p3) C if(p3) C else D else Dif与与else的配对关的配对关系?系?5.3 if语句语句注意:注意:if与与else的配对关系的配对关系if语句嵌套时,语句嵌套时,else子句与子句与if的匹配原则:的匹配原则:与在它上面、距它与在它上面、距它最近、且尚未匹配的最近、且尚未匹配的if配对。配对。为明确匹配关系,避免匹配错误,为明确匹配关系,避
24、免匹配错误,强烈建议强烈建议:将内嵌的:将内嵌的if语语句,一律用花括号括起来。句,一律用花括号括起来。例例5-8 判断某年是闰年。判断某年是闰年。 分析:判别闰年的方法分析:判别闰年的方法 年份年份year能被能被4整除,但不能被整除,但不能被100整除;或能被整除;或能被400整除整除 用变量用变量leap代表是否闰年的信息。若闰年,令代表是否闰年的信息。若闰年,令leap1;非闰年,非闰年,leap=0。最后判断。最后判断leap是否为是否为1(真),若是,则(真),若是,则输出输出“闰年闰年”信息。信息。5.3 if语句语句 N-S图year能被4整除真假year被100整除假真lea
25、p=1year被400整除真假leap=1leap=0leap=0leap真假输出“闰年”输出“非闰年”5.3 if语句语句程序如下:程序如下: #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; if(leap) printf(“%d is ”,year); else printf(“%d is not”,year); printf(“
26、a leap year.n”); 5.3 if语句语句程序程序2: #include void main( ) int year,leap; printf(“”Which year?”); scanf(“%d”,&year); if(year%400=0) leap=1; else if(year%4=0) if(year%100=0) leap=0; else leap =1; else leap=0; if(leap=1) printf(“%d年是闰年年是闰年n”,year); else printf(“%d年不是闰年年不是闰年n”,year); 5.3 if语句语句上例我们用上例
27、我们用if嵌套形式设计的,当然我们也可以用其他的形式,如用嵌套形式设计的,当然我们也可以用其他的形式,如用else if形式设计:形式设计: if(year%4!=0) leap=0; else if(year%100!=0) leap=1; else if(year%400!=0) leap=0; else leap=1;当然,也可以用一个逻辑表达式包含所有的闰年条件,因此上述当然,也可以用一个逻辑表达式包含所有的闰年条件,因此上述if语句语句用下面的用下面的if语句代替语句代替If(year%4=0&year%100!=0)|(year%400=0) leap=1;else lea
28、p=0;5.3 if语句语句总之,我们设计一个程序的方法多种多样,比如,我们的例总之,我们设计一个程序的方法多种多样,比如,我们的例7是用是用if嵌套嵌套的形式,当然也可以用第一种的形式,当然也可以用第一种if语句形式:语句形式: if(x=-3.0&x3) y=log10(x);这样要比用这样要比用if嵌套来得简洁,但是要注意条件的上下限。嵌套来得简洁,但是要注意条件的上下限。三、条件运算符和条件表达式三、条件运算符和条件表达式 1.条件运算符条件运算符 ?和:?和: C语言中唯一的一个三目运算符语言中唯一的一个三目运算符 2.条件表达式条件表达式 表达式表达式1?表达式?表达式2:
29、表达式:表达式3 如:如:ab?a:b x=1.0?1:sin(x)/x 3.执行过程执行过程 计算表达式计算表达式1 表达式表达式1的值为非的值为非0(真),计算并返回表达式(真),计算并返回表达式2的值否则计算并返的值否则计算并返回表达式回表达式3的值的值5.3 if语句语句 4.运算顺序运算顺序 高于赋值运算,低于算术、关系、逻辑运算高于赋值运算,低于算术、关系、逻辑运算如:如:y=x= =0.?1.0:sin(x)/x等价于:等价于:if(x= =0.) y=1.0; else y=sin(x)/x;5.条件运算符的结合方向是条件运算符的结合方向是”右结合右结合”。如:如:ab?a:c
30、d?c:d 等价与等价与 ab?a:(cd?c:d)5.3 if语句语句例例5-9:读程序,写出程序完成的功能:读程序,写出程序完成的功能 #include void main( ) int a,b,imax; printf(“input data to a and b: ”); scanf(“%d,%d”,&a,&b); imax=ab?a:b; printf(“The max is %dn”,imax); /*/ printf(“max=%dn”,imax=ab?a:b); /*/ printf(“max=%dn”,ab?a:b)5.3 if语句语句此程序的功能是找出此程序
31、的功能是找出a与与b两个数中的大数。两个数中的大数。思考:思考:n个数中如何找出最大数或最小数?个数中如何找出最大数或最小数?例例5-10: 任意输入一个字符,若是大写字母将其转换成小写任意输入一个字符,若是大写字母将其转换成小写字母字母分析:判断一个字符是否为大写字母的方法:分析:判断一个字符是否为大写字母的方法: ch=A & ch=65 & ch=90大写字母转换为小写字母的方法:大写字母转换为小写字母的方法: ch+32 ch+(a-A)5.3 if语句语句程序如下:程序如下: #include void main( ) char ch; ch=getchar( );
32、ch=(ch=A & ch=65 & ch=A & chb ? (a=100) : (b=100) ab ? printf(“%d”,a) : printf(“%d”,b) (2)条件表达式中,表达式)条件表达式中,表达式1的类型可以与表达式的类型可以与表达式2和表达式和表达式3的类型不同。如:的类型不同。如:x ? a : b (x为整型为整型) (3)表达式)表达式2和表达式和表达式3的类型也可以不同,此时条件表达式的的类型也可以不同,此时条件表达式的值的类型为二者中较高的类型。如:值的类型为二者中较高的类型。如: xy ? 1 : 1.5请写出num输入值分别为5
33、、10、15时程序的运行结果:1、if (num6) if (num6) if (num12) printf (“youre close!n”); else printf (“sorry,you lose a turn!n”);5.4 switch语句语句亦称开关语句或多分支语句,它比用嵌套的亦称开关语句或多分支语句,它比用嵌套的if语句实现多路分支问题,语句实现多路分支问题,其程序结构清晰、易读。其程序结构清晰、易读。一、一、switch语句的一般形式语句的一般形式 switch(表达式表达式) case 常量表达式常量表达式1:语句组;:语句组;break; case 常量表达式常量表达式
34、2:语句组;:语句组;break; . case 常量表达式:语句组;常量表达式:语句组;break; default:语句组;:语句组;break; 二、执行过程二、执行过程 (1)当)当switch后面后面“表达式表达式”的值,与某个的值,与某个case后面的后面的“常常量表达式量表达式”的值相同时,就执行该的值相同时,就执行该case后面的语句(组);后面的语句(组);当执行到当执行到break语句时,跳出语句时,跳出switch语句,转向执行语句,转向执行switch语句的下一条。语句的下一条。5.4 switch语句语句(2)如果没有任何一个)如果没有任何一个case后面的后面的“常
35、量表达式常量表达式”的值,的值,与与“表达式表达式”的值匹配,则执行的值匹配,则执行default 后面的语句(组)。后面的语句(组)。然然后,再执行后,再执行switch语句的下一条。语句的下一条。说明:说明:(1)switch后面的后面的“表达式表达式”,可以是,可以是int、char和枚举型和枚举型中中的一种。的一种。(2)每个)每个case后面后面“常量表达式常量表达式”的值,必须各不相同,的值,必须各不相同,否否则会出现相互矛盾的现象(即对表达式的同一值,有两种或则会出现相互矛盾的现象(即对表达式的同一值,有两种或两种以上的执行方案)。两种以上的执行方案)。(3)case后面的常量表
36、达式仅起语句标号作用,并不进行后面的常量表达式仅起语句标号作用,并不进行条件判断。条件判断。系统一旦找到入口标号,就从此标号开始执行,系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,所以必须加上不再进行标号判断,所以必须加上break语句,以便结束语句,以便结束switch语句。语句。5.4 switch语句语句(4)各)各case及及default子句的先后次序,不影响程序执行结子句的先后次序,不影响程序执行结果。果。(5)多个)多个case子句,可共用同一语句(组)。子句,可共用同一语句(组)。(6)用)用switch语句实现的多分支结构程序,完全可以用语句实现的多分支结构程序
37、,完全可以用if语语句或句或if语句的嵌套来实现。语句的嵌套来实现。例:例: switch(x) case 1: printf(“statement 1”); break; case 2: printf(“statement 2”); break; default: printf(“default”); 请写出当ch分别为1、2、3、4、5时程序的运行结果: Switch (ch) case1; case2: printf (“How do you do!n”); break; case3: printf (“Quite right!n”); case4: printf (“Good show
38、!n”); break; default : printf (“Have a nice day!n”); 5.4 switch语句语句例例5-11:用用switch语句重做例语句重做例5-5(评价学生的成绩)(评价学生的成绩) #include void main( ) int score; printf(“input a score: ”); scanf(“%d”,&score); switch(score/10) case 10: case 9: printf(“优秀优秀n”); break; case 8: printf(“良好良好n”); break; case 7: prin
39、tf(“中中n”); break; case 6: printf(“及格及格n”); break; default: printf(“不及格不及格n”);); 关键:如何表示关键:如何表示表达式表达式和和常量常量,常量的取值与表达式有关,常量的取值与表达式有关5.4 switch语句语句例例5-12: 运输公司对用户计算运费。收费标准随距离运输公司对用户计算运费。收费标准随距离s变化如变化如下:下: s250 没有折扣没有折扣 250s500 2%折扣折扣 500s1000 5%折扣折扣 1000s2000 8%折扣折扣 2000s3000 10%折扣折扣 3000s 15%折扣折扣分析:计费
40、是按照运输距离分析:计费是按照运输距离s和货物重量和货物重量w进行的。设每公进行的。设每公里每吨货物的基本运费为里每吨货物的基本运费为p,考虑折扣,考虑折扣d时,总运费的计算公时,总运费的计算公式为:式为: f=p*w*s*(1-d)5.4 switch语句语句折扣变化图:折扣变化图:0246810121416250500100020003000124812折扣d()sc5.4 switch语句语句从上图可以看到,折扣的变化是有规律的:从上图可以看到,折扣的变化是有规律的:折扣的折扣的“变化点变化点”都是都是250的倍数(的倍数(250、500、1000、2000、3000)。利用这一特点,可
41、以在横轴上加一种坐标)。利用这一特点,可以在横轴上加一种坐标c,c的值为的值为s/250。即。即c代表代表250的倍数。的倍数。当当c1时,表示时,表示s250,无折扣;无折扣;1c2时,时,以以此类推,此类推,c12时,时,d=15%.据此程序如下:据此程序如下:5.4 switch语句语句#includevoid main( ) int c,s; float p,w,d,f; scanf(“%f,%f,%d”,&p,&w,&s); if(s=3000) c=12 else c=s/250; switch(c) case 0: d=0; break; case 1: d=2; break; case 2: case 3: d=5; break; case 4: case 5: case 6: case 7;d=8; break; case 8: case 9: case 10: case 11: d=10; break; case 12: d=15; break;5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 淮南师范学院《JAVA语言程序设计实验》2022-2023学年第一学期期末试卷
- 2025届陕西省宝鸡市金台区高三年级上册第一次检测(一模)地理试题(含答案解析)
- 2.1.1人类认识地球形状的过程课件
- 高三教育教学管理
- 手术室危重症护理
- 2025届河北省邯郸市部分校高三年级上册模拟预测生物试题
- 手术室手术患者皮肤管理
- 2024至2030年中国发光水晶冰块行业投资前景及策略咨询研究报告
- 中建施工总承包防水施工方案年
- 2024至2030年矿用便携式一氧化碳检测报警仪项目投资价值分析报告
- 产销协调报表和流程图
- 服务礼仪考核标准
- 五年级上学期开学家长会(课堂PPT)
- 呼吸功能锻炼 PPT课件
- 病理报告模版
- 浸出工艺说明
- 机械原理课程设计——压床机构设计
- 青稞粉青稞系列产品加工扩建项目可行性研究报告模板-立项备案
- 减速机CAD版图纸
- 工程观测、试验资料的整理与分析
- 【原创】小学体育与健康(水平二)三年级《原地侧向投掷沙包》教学设计
评论
0/150
提交评论