当前位置:首页 >> 工学 >> 课件

课件


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

4.6 选择结构的嵌套
4.7 用switch语句实现多分支选择结构

4.8选择结构程序综合举例

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

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

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

(2)switch语句,实现多分支的选择结构

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

?解题思路:
输入a,b,c 计算disc 真 计算x1,x2

disc<0


输出无实根

输出x1,x2

#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

if (disc<0) -15<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; }

#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

if (disc<0) 8<0为假 printf(“has not real roots\n”); else { p=-b/(2.0*a); p的值变为-1 q=sqrt(disc)/(2.0*a); q的值变为0.71 x1=p+q; x1的值变为-0.29 x2=p-q; x2的值变为-1.71 printf(“real roots:\nx1=%7.2f\n x2=%7.2f\n”,x1,x2); } return 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; 选择结构,用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; 复合语句 }

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

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

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

互换前 互换后

A A




●B
★B

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



A



●B

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



A

● ★

●B

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



A



●B ★

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

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

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

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

#include <stdio.h> int main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a>b) 如果 a>b,将a和b对换 { t=a; a=b; b=t; } a是a、b中的小者 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; }

#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) 如果 a>c,将a和c对换 { t=a; a=c; c=t; } a是三者中的小者 if(b>c) { t=b; b=c; c=t; } printf("%5.2f,%5.2f,%5.2f\n",a,b,c); return 0; }

#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) 如果 b>c,将b和c对换 { t=b; b=c; c=t; } b是三者中的次小者 printf("%5.2f,%5.2f,%5.2f\n",a,b,c); return 0; }

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

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

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

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; 分号不能丢 else if (number > 100) cost = 0.075; else if (number > 50) cost = 0.05; else cost = 0;

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

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

4.3.1关系运算符及其优先次序
?关系运算符:
用来对两个数值进行比较的比较运算符

?C语言提供6种关系运算符:
① < (小于) ③ > (大于) ② <= ④ >= (小于或等于) (大于或等于)

优先级相同 (高)

⑤ ==

(等于)

⑥ !=

(不等于)

优先级相同 (低)

4.3.1关系运算符及其优先次序
?关系、算术、赋值运算符的优先级
算术运算符
关系运算符

(高)

赋值运算符

(低)

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

a>b==c
a==b<c

等效于 (a>b)==c
等效于 a==(b<c)

a=b>c

等效于

a=(b>c)

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

4.4 逻辑运算符和逻辑表达式
4.4.1 逻辑运算符及其优先次序

4.4.2 逻辑表达式
4.4.3 逻辑型变量

4.4.1 逻辑运算符及其优先次序
?3种逻辑运算符:
&&(逻辑与) ||(逻辑或) !(逻辑非)

?&&和||是双目(元)运算符

?!是一目(元)运算符
?逻辑表达式
?用逻辑运算符将关系表达式或其他逻辑量连 接起来的式子

4.4.1 逻辑运算符及其优先次序
?判断年龄在13至17岁之内?
age>=13 && age<=17

?判断年龄小于12或大于65?
age<12 || age>65

4.4.1 逻辑运算符及其优先次序
?逻辑运算的真值表

a 真 真 假 假

b 真 假 真 假

!a 假 假 真 真

!b 假 真 假 真

a && b 真 假 假 假

a || b 真 真 真 假

4.4.1 逻辑运算符及其优先次序
?逻辑运算符的优先次序
! → && → ||
! 算术运算符 关系运算符 && 和 || 赋值运算符

(!为三者中最高)
(高)

?与其他运算符的优先次序

(低)

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

?以0代表“假”,以非0代表“真”
? 注意:将一个非零的数值认作为“真”

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

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

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

|| year % 400 == 0
?如果表达式值为1,则闰年;否则为非闰年

4.4.3 逻辑型变量
?这是C99所增加的一种数据类型

?可以将关系运算和逻辑运算的结果存到 一个逻辑型变量中,以便于分析和运算

4.5 条件运算符和条件表达式
?有一种if语句,当被判别的表达式的值 为“真”或“假” 时,都执行一个赋值 语句且向同一个变量赋值

?如:if (a>b)
max=a; else max=b;

条件运算符

max = (a > b) ? a : b;

4.5 条件运算符和条件表达式
?有一种if语句,当被判别的表达式的值 为“真”或“假” 时,都执行一个赋值 语句且向同一个变量赋值

?如:if (a>b)
max=a; else max=b;

max = (a > b) ? a : b;
条件表达式

4.5 条件运算符和条件表达式
?条件表达式的一般形式为

表达式1?表达式2: 表达式3

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

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

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

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

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

4.6 选择结构的嵌套
?在if语句中又包含一个或多个if语句称为 if语句的嵌套
?一般形式:
if( ) if( ) 语句1 else 语句2 else if( ) 语句3 else 语句4

else总是与它上面最 近的未配对的if配对

内嵌if

4.6 选择结构的嵌套
?在if语句中又包含一个或多个if语句称为 if语句的嵌套
if () { if () 语句1

内嵌if
{ }限定了内嵌if范围

}
else语句2

4.6 选择结构的嵌套
例4.5有一函数:
? ? 1 ( x ? 0) ? y ? ? 0 ( x ? 0) ? 1 ( x ? 0) ?

编一程序,输入一个x值,要求输出相应 的y值。

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

scanf("%d",&x); if(x<0) y = -1; if(x==0) y = 0; if(x>0) y = 1; ?解题思路:方法1 printf("x=%d,y=%d\n",x,y); (1) 先后用3个独立的if语句处理:

4.6 选择结构的嵌套

输入x 若 x < 0, 则y =-1 若 x = 0, 则y = 0

若 x > 0, 则y = 1
输出x和y

scanf("%d",&x); if(x<0) y=-1; else if(x==0) y=0; ?解题思路:方法2 else y=1; (2) 用一个嵌套的if语句处理: printf("x=%d,y=%d\n",x,y); 输入x

4.6 选择结构的嵌套

若x < 0, 则y = -1 否则

若 x = 0, 则y = 0
否则 y=1

输出x和y

scanf("%d",&x); if(x<0) y=-1; 提倡内嵌if放在else中 else if(x==0) y=0; ?解题思路:方法2 else y=1; (2) 用一个嵌套的if语句处理: printf("x=%d,y=%d\n",x,y); 输入x

4.6 选择结构的嵌套

若x < 0, 则y = -1 scanf("%d",&x); 否则 if (x>=0) 若 y=1; if (x>0) x = 0, 则y = 0 else 否则 y = 1 y=0; else y=-1; 输出x和y printf("x=%d,y=%d\n",x,y);

4.7 用switch语句实现多分支选择结构
?switch语句用来实现多分支选择结构
?学生成绩分类 85分以上为?A?等 70~84分为?B?等

60~69分为?C?等
……

?人口统计分类
按年龄分为老、中、青、少、儿童

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

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

?用switch语句进行一次检查即可得到结果

#include <stdio.h> int main() { char grade; scanf("%c",&grade); printf("Your score:"); switch(grade) 值为A { 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; }

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

#include <stdio.h> int main() { char grade; scanf("%c",&grade); printf("Your score:"); switch(grade) 值为C { 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; }

#include <stdio.h> int main() { char grade; scanf("%c",&grade); printf("Your score:"); switch(grade) 值为F { 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; }

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

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

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

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"); }

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"); }

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"); }

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

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

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

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

?这是一个非常简单的示意程序 ?实际应用中,所指定的操作可能比较复杂:
?A:输入全班学生各门课的成绩 ?B:计算并输出每个学生各门课的平均成绩

?C:计算并输出各门课的全班平均成绩
?D:对全班学生的平均成绩由高到低排序并输出

?可以按以上思路编写程序,把各action函数 设计成不同的功能以实现各要求

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

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

#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!=0)含义相同 else leap=0; if (leap) printf("%d is ",year); else printf("%d is not ",year); printf("a leap year.\n"); return 0; }

#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; else leap=0; if (leap) printf("%d is ",year); else printf("%d is not ",year); printf("a leap year.\n"); return 0; }

#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; else leap=0; if (leap) printf("%d is ",year); if(year%4!=0) not ",year); else printf("%d is leap=0; else if (year%100!=0) printf("a leap year.\n"); leap=1; else if(year%400!=0) leap=0; return 0; else leap=1; }

#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; else leap=0; ifif((year%4==0 && year%100!=0) (leap) printf("%d is ",year); else printf("%d || (year%400==0)) is not ",year); printf("a leap year.\n"); leap=1; return 0; else leap=0; }

例4.9 求 ax ? bx ? c ? 0 方程的解。
2

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

?参见教材图4.14

#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) 实型不能用if (a==0) printf("is not a quadratic\n");

else {disc=b*b-4*a*c; 先算disc,以减少重复计算 if(fabs(disc)<=1e-6) 不能用if (disc==0)

printf("has two equal roots:%8.4f\n",
-b/(2*a));

else

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

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

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

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

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

1000≤s < 2000
2000≤s < 3000

8%折扣
10%折扣

3000≤s

15%折扣

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

?折扣的变化规律(参见教材图4.15):
?折扣的“变化点”都是250的倍数 ?在横轴上加一种坐标c,c的值为s/250 ?c代表250的倍数 ?当c<1时,表示s<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%

#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;

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

f = p * w * s * (1 - d / 100);

printf(“freight=%10.2f\n”,f);
return 0; }


更多相关文档:

如何制作ppt课件

如何制作ppt课件_人文社科_专业资料。很有用,很全面 如何制作 ppt 课件 ppt 基础知识及使用技巧 PowerPoint 软件是教师制作课件的主要工具之一。下面介绍了 ppt 的...

如何制作PPT幻灯片 十分钟包会

如何制作 PPT:综合版 进入方法: 单击任务栏中的“开始” ,选择“程序” ,再点“Powerpoint” ,点“空演示文稿” ,选择所需版式,单击确定。 (也可通过创建快捷...

课件要求

6.适度动用原则 适度运用原则就是利用认知学习和教学设计理论,根据教学设计,适当 运用多媒体教学课件,创设情境,使学生通过多个感觉器官来获取相关信息,提高教学信息 ...

利用多媒体课件上课的优点

利用多媒体课件上课的优点 采用多媒体教学可以节省板书时间提高课堂效率增加教学信息量帮助学生理解重点、 突破难 点让学生有更多的机会理解教学内容进行思考引导学生...

课件设计理念

【设计理念】 城环学院地理科学 09 级 李俐 整个课件制作的设计理念主要包括以下三点: 一、主题的选取理念 俗话说“好题半文” ,主题的选取是非常重要的。我所...

PPT课件的字体

PPT课件的字体_PPT模板_PPT专区。PPT课件的字体我们在制作 PPT 课件的时候要采用合适的字体、 字号与字型。 文字内容要简洁、 突出重点,以提纲式为主。因此字号的...

课件在数学教学中的作用

课件在数学教学中的作用_教学案例/设计_教学研究_教育专区。课件在数学教学中的作用 浅谈课件在数学教学中的作用 1.利用课件教学,使得教学形式多样化,有助于激发...

怎样下载课件更方便

怎样下载课件更方便_四年级其它课程_其它课程_小学教育_教育专区。怎样下载课件更方便 在教学中我们常常要用到课件,自制课件有些麻烦,这时我们都 会想到在网上下载...

如何正确的使用教学课件

如何正确的使用教学课件_教学案例/设计_教学研究_教育专区。如何正确的使用教学课件随着计算机技术的不断发展和素质教育的全面推进,课件教学在常规教学 中发挥着巨大作...

课件设计思路及流程图

课件设计思路及流程图设计思路: 《雨点儿》 是人教版小学语文一年级上册第五单元第 12 课的课文, 课文用拟人化的手法, 通过大雨点和小雨点的对话,告诉学生从...
更多相关标签:
网站地图

文档资料共享网 nexoncn.com copyright ©right 2010-2020。
文档资料共享网内容来自网络,如有侵犯请联系客服。email:zhit325@126.com