Download presentation
Presentation is loading. Please wait.
1
第4章 选择结构程序设计
2
主要内容 一、选择结构概述 二、关系、逻辑表达式 三、单分支选择结构 四、双分支选择结构 五、多分支选择结构 六、选择结构的嵌套
3
一、选择结构概述 1、为什么要用选择结构? 来源于现实 如:汽车行驶中,如果交通灯是红色或黄色,则停止,否则通行
4
一、选择结构概述 2、选择结构的类型 单分支 双分支 多分支 N N 表达式? 表达式? Y Y 语句 语句1 语句2
5
二、关系、逻辑表达式 1、关系表达式 关系运算符: <、 <=、>、 >= ==、!= 优先级高 关系表达式:
a>b , a+b>b+c, ’a’<‘b’, (a>b)>(b<c) 关系表达式的值是一个逻辑值,即“真”或“假”。
6
二、关系、逻辑表达式 2、逻辑表达式 逻辑运算符: &&、 ||、! 逻辑表达式: a&&b , a||b , ! a
值是一个逻辑值,即“真”或“假”。 优先次序: !(非)->&&(与)->||(或)
7
二、关系、逻辑表达式 设a=4,b=5: !a a&&b a||b !a||b 4&&0||2 2、逻辑表达式 值为0 值为1 值为1
8
三、单分支选择结构 1、实现单分支选择结构的语句—if 语句 单分支 N 表达式? If (表达式) 语句 Y 语句
9
三、单分支选择结构 2、单分支选择结构示例 例1、求a、b两数中较大的数。 #include <stdio.h>
int main() { int a,b,max; printf(“input a b: ”); scanf(“%d%d”,&a,&b); max=a; if (a<b) max=b; printf(“the max is %d\n”,max); return 0; }
10
三、单分支选择结构 例2、从键盘上读入一个大写字符,转换为小写字符输出(要求判断是否是大写字母)。
#include <stdio.h> int main() { char c1,c2; printf(“input a character: ”); scanf(“%c”,&c1); if (c1>64 && c1<91) c2= c1+32; printf(“the Lowercase letter is %c\n”,c2); } return 0;
11
四、双分支选择结构 1、if 语句 If (表达式) 语句1; else 语句2;
12
四、双分支选择结构 例3、求a、b两数中较大的数(双分支)。 #include <stdio.h> int main() {
int a,b,max; printf(“input a b: ”); scanf(“%d%d”,&a,&b); if (a<b) max=b; else max=a; printf(“the max is %d\n”,max); return 0; }
13
四、双分支选择结构 2、条件表达式 格式: 条件?表达式2:表达式3 如果 条件为真,则返回表达式2的值,否则返回表达式3的值
14
四、双分支选择结构 例4、求a、b两数中较大的数(条件表达式)。 #include <stdio.h> int main() {
int a,b,max; printf(“input a b: ”); scanf(“%d%d”,&a,&b); max= (a<b)?b:a; printf(“the max is %d\n”,max); return 0; }
15
c1=( c1>64 && c1<91)?(c1+32):ch; 或者
四、双分支选择结构 例5、将大写字母转化为小写字母。 char c1; c1=( c1>64 && c1<91)?(c1+32):ch; 或者 c1=( c1>=’A’ && c1<=’Z’)?(c1+32):ch;
16
五、多分支选择结构 N N N 表达式1? 表达式2? … 表达式n? Y Y Y 语句1 语句2 语句n 语句n+1
17
a>0 a<0 a=0 五、多分支选择结构 1、If 语句实现 if 条件1 语句1 ; if 条件2 语句2 ; if 条件3
语句3 ; 1、If 语句实现 a>0 或: if 条件1 语句1 ; else if 条件2 语句2 ; 语句3 ; a<0 a=0
18
例7:输入一百分制分数,请转换为等级A,B,C,D。
五、多分支选择结构 2、Switch语句 例6:10086语音提示。 例7:输入一百分制分数,请转换为等级A,B,C,D。
19
五、多分支选择结构 2、Switch语句 表达式 否则 值1 值2 值n 语句1 语句2 语句n 语句n+1
20
五、多分支选择结构 2、Switch语句 (1) 设计要领:①先对要做的几个操作编号。 操作1 操作2 操作3 操作4 值集合 操作集合
21
五、多分支选择结构 2、Switch语句 1 2 3 5 4 (1) 设计要领: ②选取合适的某个表达式,让其取值能分别指向某个操作。
(1) 设计要领: ②选取合适的某个表达式,让其取值能分别指向某个操作。 操作1 操作2 操作3 操作4 1 2 值 表达式 3 5 4
22
五、多分支选择结构 (2) switch语句格式 switch(表达式 ) { 终止此分支语句 case 常量1:语句1;
… case 常量n:语句n; default: 语句n+1; } 终止此分支语句 break;
23
五、多分支选择结构 (3) break语句 格式:break; 终止本次选择结构。
24
五、多分支选择结构 例8 将等级成绩转换为百分制成绩, A等为85分以上, B等为70-84之间, C等为 60-69分,
例8 将等级成绩转换为百分制成绩, A等为85分以上, B等为70-84之间, C等为 分, D等为60分以下。 成绩的等级由键盘输入。
25
五、多分支选择结构 grade #include <stdio.h> void main() { 开始 char grade;
printf(“请输入等级成绩: ”); 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; } 开始 输入等级grade grade D A B C “85~100” “70~84” “60~69” “<60” 结束
26
五、多分支选择结构 例9 运输公司对用户计算运费。 路程(s)越远,每公里运费越低。标准如下: s<250km 没有折扣
例9 运输公司对用户计算运费。 路程(s)越远,每公里运费越低。标准如下: s<250km 没有折扣 250≤s<500 2%折扣 500≤s<1000 5%折扣 1000≤s<2000 8%折扣 2000≤s<3000 10%折扣 3000≤s 15%折扣 设每公里每吨货物的基本运费为p,货物重为w,距离为s,折扣为d,则总运费f的计算公式为: f=p*w*s*(1-d)
27
五、多分支选择结构 分析折扣变化的规律性: 折扣的“变化点”都是250的倍数 取表达式为s/250 ,其值装入c。c代表250的倍数。
c< 1,无折扣; 1≤c<2,折扣d=2%; 2≤c<4,d=5%; 4≤c<8,d=8%; 8≤c<12,d=10%; c≥12,d=15%。
28
五、多分支选择结构 #include <stdio.h> void 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; } f=p*w*s*(1-d/100.0); printf("freight=%15.4f\n",f); }
29
五、多分支选择结构 例10 [简单计算器] 下面程序是实现一个简单的运算器(保留两位小数点):
例10 [简单计算器] 下面程序是实现一个简单的运算器(保留两位小数点): 如果由键盘输入 10+50,计算机可以输出结果 60.00; 如果输入 8*6,计算机输出 48.00; 如果输入 20/4,计算机输出 5.00; 如果输入 8-6,计算机输出 2.00, 请在空处填上适当的代码。
30
五、多分支选择结构 #include "stdio.h" void main() { float a,b,c; char op;
scanf("%f%c%f", &a,&op,&b); switch (op) { case '+': ; case '-': ; case '*': ; case '/': ; default: printf("error"); return ; } printf("result= %f ", c); c=a+b;break c=a-b;break c=a*b;break c=a/b;break
31
六、选择结构的嵌套 在选择结构中又包含一个或多个选择结构。 如: if () 语句1; else 语句2; 语句3;
注意:if与else配对情况,else与最近的if 配对。
32
六、选择结构的嵌套 例11 有一函数 编一程序,输入一个x的值,要求输出相应的y值。 方法1:用三个独立的if语句来完成。
例11 有一函数 编一程序,输入一个x的值,要求输出相应的y值。 方法1:用三个独立的if语句来完成。 方法2:用if语句的嵌套。
33
六、选择结构的嵌套 例12 你的身材标准吗? 从键盘输入某人的身高和体重后,按照下面的方 法确定此人的体重是否标准。
例12 你的身材标准吗? 从键盘输入某人的身高和体重后,按照下面的方 法确定此人的体重是否标准。 标准体重=(身高-110)kg 超过标准体重5kg为过胖, 低于标准体重5kg为过瘦
34
六、选择结构的嵌套 #include <stdio.h> int main() { float height,weight;
printf(“请输入您的身高和体重: ”); scanf(“%f,%f”,& height,& weight); if (weight> height-105) printf(“您的体重超重,请注意减肥.\n”); else if (weight< height-115) printf(“您的体重偏轻,请注意营养.\n”); printf(“您的体重刚好,请保持.\n”); return 0; }
Similar presentations