Presentation is loading. Please wait.

Presentation is loading. Please wait.

第4章 选择结构程序设计 4.1 选择结构和条件判断 4.2 用if语句实现选择结构 4.3关系运算符和关系表达式

Similar presentations


Presentation on theme: "第4章 选择结构程序设计 4.1 选择结构和条件判断 4.2 用if语句实现选择结构 4.3关系运算符和关系表达式"— Presentation transcript:

1 第4章 选择结构程序设计 4.1 选择结构和条件判断 4.2 用if语句实现选择结构 4.3关系运算符和关系表达式
4.4 逻辑运算符和逻辑表达式 4.5 条件运算符和条件表达式 4.6 选择结构的嵌套 4.7 用switch语句实现多分支选择结构 4.8选择结构程序综合举例

2 4.1 选择结构和条件判断 在现实生活中,需要进行判断和选择的情况是很多的 如果你在家,我去拜访你 如果考试不及格,要补考
如果遇到红灯,要停车等待 周末我们去郊游 70岁以上的老年人,入公园免票

3 4.1 选择结构和条件判断 在现实生活中,需要进行判断和选择的情况是很多的 处理这些问题,关键在于进行条件判断
由于程序处理问题的需要,在大多数程序中都会包含选择结构,需要在进行下一个操作之前先进行条件判断

4 4.1 选择结构和条件判断 C语言有两种选择语句: (1)if语句,实现两个分支的选择结构 (2)switch语句,实现多分支的选择结构

5 4.1 选择结构和条件判断 例4.1 在例3.5的基础上对程序进行改进。题目要求是求  方程的根。
例4.1 在例3.5的基础上对程序进行改进。题目要求是求  方程的根。 由键盘输入a,b,c。假设a,b,c的值任意,并不保证 。需要在程序中进行判别,如果 ,就计算并输出方程的两个实根,否则就输出“方程无实根”的信息。

6 解题思路: 输入a,b,c 计算disc disc<0 计算x1,x2 输出无实根 输出x1,x2

7 计算b2-4ac,disc的值变为-15 #include <stdio.h> #include <math.h>
int main ( ) { double a,b,c,disc,x1,x2,p,q; scanf("%lf%lf%lf",&a,&b,&c); disc=b*b-4*a*c; 计算b2-4ac,disc的值变为-15

8 -15<0为真 if (disc<0) printf(“has not real roots\n”); else
{ p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(“real roots:\nx1=%7.2f\n x2=%7.2f\n”,x1,x2); } return 0;

9 计算b2-4ac,disc的值变为8 #include <stdio.h> #include <math.h>
int main ( ) { double a,b,c,disc,x1,x2,p,q; scanf("%lf%lf%lf",&a,&b,&c); disc=b*b-4*a*c; 计算b2-4ac,disc的值变为8

10 8<0为假 if (disc<0) printf(“has not real roots\n”); else
{ p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(“real roots:\nx1=%7.2f\n x2=%7.2f\n”,x1,x2); } return 0; p的值变为-1 q的值变为0.71 x1的值变为-0.29 x2的值变为-1.71

11 选择结构,用if语句实现的 if (disc<0) printf(“has not real roots\n”); else
{ p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(“real roots:\nx1=%7.2f\n x2=%7.2f\n”,x1,x2); } return 0; 选择结构,用if语句实现的

12 复合语句 if (disc<0) printf(“has not real roots\n”); else
{ p=-b/(2.0*a); q=sqrt(disc)/(2.0*a); x1=p+q; x2=p-q; printf(“real roots:\nx1=%7.2f\n x2=%7.2f\n”,x1,x2); } return 0; 复合语句

13 4.2 用if语句实现选择结构 4.2.1 用if语句处理选择结构举例 if语句的一般形式

14 4.2.1 用if语句处理选择结构举例 例4.2 输入两个实数,按代数值由小到大的顺序输出这两个数。

15 4.2.1 用if语句处理选择结构举例 ★ ● ● ★ 解题思路: 互换前 A B 互换后 A B 只需要做一次比较,然后进行一次交换即可
关键是怎样实现两个变量值的互换 互换前 A B 互换后 A B

16 4.2.1 用if语句处理选择结构举例 C A B

17 4.2.1 用if语句处理选择结构举例 C A B

18 4.2.1 用if语句处理选择结构举例 C A B

19 如果a>b 将a和b的值互换 #include <stdio.h> int main() { float a,b,t;
scanf("%f,%f",&a,&b); if(a>b) { t=a; a=b; b=t; } printf("%5.2f,%5.2f\n",a,b); return 0; 如果a>b 将a和b的值互换

20 选择结构,用if语句实现的 #include <stdio.h> int main() { float a,b,t;
scanf("%f,%f",&a,&b); if(a>b) { t=a; a=b; b=t; } printf("%5.2f,%5.2f\n",a,b); return 0; 选择结构,用if语句实现的

21 例4.3 输入3个数a,b,c,要求按由小到大的顺序输出。

22 解题思路:可以先用伪代码写出算法: if a>b,a和b对换 (a是a、b中的小者)
if a>c,a和c对换 (a是三者中最小者) if b>c,b和c对换 (b是三者中次小者) 顺序输出a,b,c

23 #include <stdio.h>
int main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a>b) { t=a; a=b; b=t; } if(a>c) { t=a; a=c; c=t; } if(b>c) { t=b; b=c; c=t; } printf("%5.2f,%5.2f,%5.2f\n",a,b,c); return 0; } 如果 a>b,将a和b对换 a是a、b中的小者

24 #include <stdio.h>
int main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a>b) { t=a; a=b; b=t; } if(a>c) { t=a; a=c; c=t; } if(b>c) { t=b; b=c; c=t; } printf("%5.2f,%5.2f,%5.2f\n",a,b,c); return 0; } 如果 a>c,将a和c对换 a是三者中的小者

25 #include <stdio.h>
int main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a>b) { t=a; a=b; b=t; } if(a>c) { t=a; a=c; c=t; } if(b>c) { t=b; b=c; c=t; } printf("%5.2f,%5.2f,%5.2f\n",a,b,c); return 0; } 如果 b>c,将b和c对换 b是三者中的次小者

26 4.2.2 if语句的一般形式 关系表达式 逻辑表达式 数值表达式 if (表达式) 语句1 [ else 语句2 ]
方括号内的部分为可选的

27 if语句的一般形式 if (表达式) 语句1 [ else 语句2 ] 简单的语句 复合语句 另一个if语句等

28 最常用的3种if语句形式: 1. if (表达式) 语句1 (没有else子句) 2. if (表达式) 语句1 else 语句 (有else子句) 3. if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 else if(表达式m) 语句m else 语句m+1 (在else部分又嵌套了多层的if语句)

29 分号不能丢 if(number > 500) cost = 0.15;
else if (number > 300) cost = 0.10; else if (number > 100) cost = 0.075; else if (number > 50) cost = 0.05; else cost=0; 等价于 if (number > 500) cost = 0.15; else if (number > 300) cost = 0.10; if (number > 100) cost = 0.075; if (number > 50) cost = 0.05; else cost = 0; 分号不能丢

30 说明: (1)整个if语句可写在多行上,也可写在一行上 但都是一个整体,属于同一个语句 (2)“语句1”…“语句m”是if中的内嵌语句

31 4.3关系运算符和关系表达式 4.3.1关系运算符及其优先次序 4.3.2 关系表达式

32 4.3.1关系运算符及其优先次序 关系运算符: C语言提供6种关系运算符: 用来对两个数值进行比较的比较运算符
① < (小于) ② <= (小于或等于) ③ > (大于) ④ >= (大于或等于) ⑤ == (等于) ⑥ != (不等于) 优先级相同 (高) 优先级相同 (低)

33 4.3.1关系运算符及其优先次序 关系、算术、赋值运算符的优先级 算术运算符 (高) 赋值运算符 (低) 关系运算符

34 4.3.1关系运算符及其优先次序 c>a+b 等效于 c>(a+b) a>b==c 等效于 (a>b)==c

35 4.3.2 关系表达式 关系表达式 用关系运算符将两个数值或数值表达式连接起来的式子 关系表达式的值是一个逻辑值,即“真”或“假”
在C的逻辑运算中,以“1”代表“真”,以“0”代表“假”

36 4.4 逻辑运算符和逻辑表达式 4.4.1 逻辑运算符及其优先次序 4.4.2 逻辑表达式 4.4.3 逻辑型变量

37 4.4.1 逻辑运算符及其优先次序 3种逻辑运算符: &&和||是双目(元)运算符 !是一目(元)运算符 逻辑表达式
&&(逻辑与) ||(逻辑或) !(逻辑非) &&和||是双目(元)运算符 !是一目(元)运算符 逻辑表达式 用逻辑运算符将关系表达式或其他逻辑量连接起来的式子

38 4.4.1 逻辑运算符及其优先次序 判断年龄在13至17岁之内? 判断年龄小于12或大于65?
age>=13 && age<=17 判断年龄小于12或大于65? age<12 || age>65

39 4.4.1 逻辑运算符及其优先次序 逻辑运算的真值表 a b ! a ! b a && b a || b

40 4.4.1 逻辑运算符及其优先次序 逻辑运算符的优先次序 ! → && → || (!为三者中最高) 与其他运算符的优先次序 ! (高)
! → && → || (!为三者中最高) 与其他运算符的优先次序 ! (高) 算术运算符 关系运算符 && 和 || 赋值运算符 (低)

41 4.4.2 逻辑表达式 逻辑表达式的值应该是逻辑量“真”或“假” 编译系统在表示逻辑运算结果时 以数值1代表“真”,以0代表“假”
但在判断一个量是否为“真”时 以0代表“假”,以非0代表“真” 注意:将一个非零的数值认作为“真”

42 4.4.2 逻辑表达式 (1) 若a=4,则!a的值为0 (2) 若a=4,b=5,则a && b的值为1
(5) 4 && 0 || 2的值为1

43 4.4.2 逻辑表达式 修改后的逻辑运算真值表 a b ! a ! b a && b a || b 非0 1

44 4.4.2 逻辑表达式 判别某一年是否闰年,用逻辑表达式表示 闰年的条件是符合下面二者之一: || year % 400 == 0
①能被4整除,但不能被100整除,如2008 ②能被400整除,如2000 (year % 4 == 0 && year 100 !=0) || year % 400 == 0 如果表达式值为1,则闰年;否则为非闰年

45 4.4.3 逻辑型变量 这是C99所增加的一种数据类型 可以将关系运算和逻辑运算的结果存到一个逻辑型变量中,以便于分析和运算

46 4.5 条件运算符和条件表达式 有一种if语句,当被判别的表达式的值为“真”或“假” 时,都执行一个赋值语句且向同一个变量赋值
如:if (a>b) max=a; else max=b; 条件运算符 max = (a > b) ? a : b;

47 4.5 条件运算符和条件表达式 有一种if语句,当被判别的表达式的值为“真”或“假” 时,都执行一个赋值语句且向同一个变量赋值
如:if (a>b) max=a; else max=b; max = (a > b) ? a : b; 条件表达式

48 4.5 条件运算符和条件表达式 条件表达式的一般形式为 表达式1?表达式2: 表达式3

49 4.5 条件运算符和条件表达式 条件运算符的执行顺序: 求解表达式1 若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值
若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值

50 4.5 条件运算符和条件表达式 条件运算符优先于赋值运算符 条件运算符的结合方向为“自右至左” 以下为合法的使用方法:
a>b ? (max=a):(max=b); a>b ? printf(“%d”,a): printf(“%d”,b);

51 4.5 条件运算符和条件表达式 例4.4 输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。

52 4.5 条件运算符和条件表达式 解题思路:用条件表达式来处理,当字母是大写时,转换成小写字母,否则不转换

53 4.5 条件运算符和条件表达式 #include <stdio.h> int main() { char ch;
scanf("%c",&ch); ch=(ch>='A' && ch<='Z‘)?(ch+32):ch; printf("%c\n",ch); return 0; }

54 4.6 选择结构的嵌套 在if语句中又包含一个或多个if语句称为if语句的嵌套 一般形式: else总是与它上面最近的未配对的if配对

55 4.6 选择结构的嵌套 在if语句中又包含一个或多个if语句称为if语句的嵌套 内嵌if { }限定了内嵌if范围 if () {
else语句2 内嵌if { }限定了内嵌if范围

56 4.6 选择结构的嵌套 例4.5有一函数: 编一程序,输入一个x值,要求输出相应的y值。

57 4.6 选择结构的嵌套 解题思路: 用if语句检查x的值,根据x的值决定赋予y的值
由于y的可能值不是两个而是三个,因此不可能只用一个简单的(无内嵌if)的if语句来实现

58 4.6 选择结构的嵌套 解题思路:方法1 scanf("%d",&x); if(x<0) y = -1;
printf("x=%d,y=%d\n",x,y); 4.6 选择结构的嵌套 解题思路:方法1 (1) 先后用3个独立的if语句处理: 输入x 若 x < 0, 则y =-1 若 x = 0, 则y = 0 若 x > 0, 则y = 1 输出x和y

59 4.6 选择结构的嵌套 解题思路:方法2 scanf("%d",&x); if(x<0) y=-1; else
else y=1; printf("x=%d,y=%d\n",x,y); 4.6 选择结构的嵌套 解题思路:方法2 (2) 用一个嵌套的if语句处理: 输入x 若x < 0, 则y = -1 否则 若 x = 0, 则y = 0 否则 y = 1 输出x和y

60 4.6 选择结构的嵌套 提倡内嵌if放在else中 解题思路:方法2 scanf("%d",&x); if(x<0) y=-1;
else y=1; printf("x=%d,y=%d\n",x,y); 4.6 选择结构的嵌套 提倡内嵌if放在else中 解题思路:方法2 (2) 用一个嵌套的if语句处理: 输入x 若x < 0, 则y = -1 否则 若 x = 0, 则y = 0 否则 y = 1 输出x和y scanf("%d",&x); if (x>=0) if (x>0) y=1; else y=0; else y=-1; printf("x=%d,y=%d\n",x,y);

61 4.7 用switch语句实现多分支选择结构 switch语句用来实现多分支选择结构 学生成绩分类 85分以上为’A’等
70~84分为’B’等 60~69分为’C’等 …… 人口统计分类 按年龄分为老、中、青、少、儿童

62 4.7 用switch语句实现多分支选择结构 例4.6 要求按照考试成绩的等级输出百分制分数段,A等为85分以上,B等为70~84分,C等为60~69分 ,D等为 60分以下 。成绩的等级由键盘输入。

63 4.7 用switch语句实现多分支选择结构 解题思路: 判断出这是一个多分支选择问题 根据百分制分数将学生成绩分为4个等级
如果用if语句,至少要用3层嵌套的if,进行3次检查判断 用switch语句进行一次检查即可得到结果

64 #include <stdio.h>
int main() { char grade; scanf("%c",&grade); printf("Your score:"); switch(grade) { case 'A': printf("85~100\n");break; case 'B': printf("70~84\n");break; case 'C': printf("60~69\n");break; case 'D': printf("<60\n");break; default: printf("enter data error!\n"); } return 0; 值为A

65 #include <stdio.h>
int main() { char grade; scanf("%c",&grade); printf("Your score:"); switch(grade) { case 'A': printf("85~100\n");break; case 'B': printf("70~84\n");break; case 'C': printf("60~69\n");break; case 'D': printf("<60\n");break; default: printf("enter data error!\n"); } return 0; 不能少

66 #include <stdio.h>
int main() { char grade; scanf("%c",&grade); printf("Your score:"); switch(grade) { case 'A': printf("85~100\n");break; case 'B': printf("70~84\n");break; case 'C': printf("60~69\n");break; case 'D': printf("<60\n");break; default: printf("enter data error!\n"); } return 0; 值为C

67 #include <stdio.h>
int main() { char grade; scanf("%c",&grade); printf("Your score:"); switch(grade) { case 'A': printf("85~100\n");break; case 'B': printf("70~84\n");break; case 'C': printf("60~69\n");break; case 'D': printf("<60\n");break; default: printf("enter data error!\n"); } return 0; 值为F

68 #include <stdio.h>
int main() { char grade; scanf("%c",&grade); printf("Your score:"); switch(grade) { case 'A': printf("85~100\n");break; case 'B': printf("70~84\n");break; case 'C': printf("60~69\n");break; case 'D': printf("<60\n");break; default: printf("enter data error!\n"); } return 0; 此行位置有问题,应如何修改?

69 switch语句的作用是根据表达式的值,使流程跳转到不同的语句 switch语句的一般形式:
{ case 常量1 :语句1 case 常量2 :语句2 ┇ ┇ ┇ case 常量n :语句n default : 语句n+1 } 整数类型(包括字符型)

70 switch语句的作用是根据表达式的值,使流程跳转到不同的语句 switch语句的一般形式:
{ case 常量1 :语句1 case 常量2 :语句2 ┇ ┇ ┇ case 常量n :语句n default : 语句n+1 } 不能相同

71 scanf("%c",&grade); printf("Your score:"); switch(grade) { case 'A': printf("85~100\n");break; case 'B': printf("70~84\n");break; case 'C': printf("60~69\n");break; case 'D': printf("<60\n");break; default: printf("enter data error!\n"); }

72 scanf("%c",&grade); printf("Your score:"); switch(grade) { case 'A': printf("85~100\n");break; case 'B': printf("70~84\n");break; case 'C': printf("60~69\n");break; case 'D': printf("<60\n");break; default: printf("enter data error!\n"); }

73 scanf("%c",&grade); printf("Your score:"); switch(grade) { case 'A‘: case 'B‘: case 'C': printf("60~69\n");break; case 'D': printf("<60\n");break; default: printf("enter data error!\n"); }

74 例4.7 编写程序,用switch语句处理菜单命令。
解题思路:在许多应用程序中,用菜单对流程进行控制,例如从键盘输入一个’A’或’a’字符,就会执行A操作,输入一个’B’或’b’字符,就会执行B操作,等等。

75 #include <stdio.h>
int main() { void action1(int,int),action2(int,int); char ch; int a=15,b=23; ch=getchar(); switch(ch) { case 'a': case ‘A’: action1(a,b);break;   case 'b': case ‘B’: action2(a,b);break;   default: putchar(‘\a’); } return 0; void action1(int x,int y) { printf("x+y=%d\n",x+y); } 输入a或A 调用action1函数,执行A操作

76 #include <stdio.h>
int main() { void action1(int,int),action2(int,int); char ch; int a=15,b=23; ch=getchar(); switch(ch) { case 'a': case ‘A’: action1(a,b);break;   case 'b': case ‘B’: action2(a,b);break;   default: putchar(‘\a’); } return 0; void action2(int x,int y) { printf("x*y=%d\n",x*y); } 输入b或B 调用action2函数,执行B操作

77 #include <stdio.h>
int main() { void action1(int,int),action2(int,int); char ch; int a=15,b=23; ch=getchar(); switch(ch) { case 'a': case ‘A’: action1(a,b);break;   case 'b': case ‘B’: action2(a,b);break;   default: putchar(‘\a’); } return 0; 输入其他字符 发出警告

78 可以按以上思路编写程序,把各action函数设计成不同的功能以实现各要求
这是一个非常简单的示意程序 实际应用中,所指定的操作可能比较复杂: A:输入全班学生各门课的成绩 B:计算并输出每个学生各门课的平均成绩 C:计算并输出各门课的全班平均成绩 D:对全班学生的平均成绩由高到低排序并输出 可以按以上思路编写程序,把各action函数设计成不同的功能以实现各要求

79 4.8选择结构程序综合举例 例4.8 写一程序,判断某一年是否闰年。 解题思路:在前面已介绍过判别闰年的方法 本例用不同的方法编写程序

80 4.8选择结构程序综合举例 用变量leap代表是否闰年的信息。若闰年,令leap=1;非闰年,leap=0。最后判断leap是否为1(真),若是,则输出“闰年”信息 参见教材图4.13

81 #include <stdio.h>
int main() {int year,leap; printf("enter year:"); scanf("%d",&year); if (year%4==0) if(year%100==0) if(year%400==0) leap=1; else leap=0; else leap=1; if (leap) printf("%d is ",year); else printf("%d is not ",year); printf("a leap year.\n"); return 0; } 标志变量 与if (leap!=0)含义相同

82 #include <stdio.h>
int main() {int year,leap; printf("enter year:"); scanf("%d",&year); if (year%4==0) if(year%100==0) if(year%400==0) leap=1; else leap=0; else leap=1; if (leap) printf("%d is ",year); else printf("%d is not ",year); printf("a leap year.\n"); return 0; } 采取锯齿形式

83 #include <stdio.h>
int main() {int year,leap; printf("enter year:"); scanf("%d",&year); if (year%4==0) if(year%100==0) if(year%400==0) leap=1; else leap=0; else leap=1; if (leap) printf("%d is ",year); else printf("%d is not ",year); printf("a leap year.\n"); return 0; } if(year%4!=0) leap=0; else if (year%100!=0) leap=1; else if(year%400!=0) leap=0; else  leap=1;

84 #include <stdio.h>
int main() {int year,leap; printf("enter year:"); scanf("%d",&year); if (year%4==0) if(year%100==0) if(year%400==0) leap=1; else leap=0; else leap=1; if (leap) printf("%d is ",year); else printf("%d is not ",year); printf("a leap year.\n"); return 0; } if((year%4==0 && year%100!=0) || (year%400==0)) leap=1; else leap=0;

85 例4.9 求 方程的解。 解题思路:处理以下各情况 ① a=0,不是二次方程 ② ,有两个相等实根 ③ ,有两个不等实根。
例4.9 求 方程的解。 解题思路:处理以下各情况 ① a=0,不是二次方程 ② ,有两个相等实根 ③ ,有两个不等实根。 ④ ,有两个共轭复根。 应当以p+qi和p-qi的形式输出复根 其中,p=-b/2a,q=( )/2a 参见教材图4.14

86 #include <stdio.h>
#include <math.h> int main() { double a,b,c,disc,x1,x2,realpart, imagpart; scanf("%lf,%lf,%lf",&a,&b,&c); printf("The equation "); if(fabs(a)<=1e-6) printf("is not a quadratic\n"); 实型不能用if (a==0)

87 else {disc=b*b-4*a*c; if(fabs(disc)<=1e-6) printf("has two equal roots:%8.4f\n", -b/(2*a)); 先算disc,以减少重复计算 不能用if (disc==0)

88 if(disc>1e-6) {x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); printf("has distinct real roots:%8.4f and %8.4f\n",x1,x2); } else

89 { realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf(" has complex roots:\n"); printf("%8.4f+%8.4fi\n“ ,realpart,imagpart); printf("%8.4f-%8.4fi\n", realpart,imagpart); } return 0;

90 { realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf(" has complex roots:\n"); printf("%8.4f+%8.4fi\n“ ,realpart,imagpart); printf("%8.4f-%8.4fi\n", realpart,imagpart); } return 0;

91 { realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf(" has complex roots:\n"); printf("%8.4f+%8.4fi\n“ ,realpart,imagpart); printf("%8.4f-%8.4fi\n", realpart,imagpart); } return 0;

92 标准如下: 例4.10 运输公司对用户计算运输费用。路程(s km)越远,每吨·千米运费越低。 s < 250 没有折扣

93 解题思路: 设每吨每千米货物的基本运费为p,货物重为w,距离为s,折扣为d 总运费f的计算公式为f=p×w×s×(1-d)

94 折扣的变化规律(参见教材图4.15): 折扣的“变化点”都是250的倍数 在横轴上加一种坐标c,c的值为s/250 c代表250的倍数
1≤c<2时,表示250≤s<500,折扣d=2% 2≤c<4时,d=5%;4≤c<8时,d=8%; 8≤c<12时,d=10%;c≥12时,d=15%

95 #include <stdio.h>
int main() { int c,s; float p,w,d,f; printf("please enter price,weight,discount:"); scanf("%f,%f,%d",&p,&w,&s); if(s>=3000) c=12; else c=s/250; 输入单价、重量、距离

96 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; }

97 f = p * w * s * (1 - d / 100); printf(“freight=%10.2f\n”,f); return 0; }


Download ppt "第4章 选择结构程序设计 4.1 选择结构和条件判断 4.2 用if语句实现选择结构 4.3关系运算符和关系表达式"

Similar presentations


Ads by Google