第4章 选择结构程序设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

姓名:张倩倩 年龄:17 张倩倩, 17岁, 是中学生
if (age>=18) printf("%s, %d岁, 是大学生",name,age); else printf("%s, %d岁, 是中学生",name,age); }
7
#include <stdio.h> main(){ int age, student; char name[20]; printf("姓名:"); 姓名:WangMing scanf("%s", &name); 年龄:17 WangMing, 17岁, 是中学生 printf("年龄:"); scanf("%d", &age); student = age >=18 ? 1 : 0; if (student) printf("%s, %d岁, 是大学生",name,age); else printf("%s, %d岁, 是中学生",name,age); }
13
多分支问题:
写一个程序完成下列功能: 1) 输入一个分数score 2) score<60 输出 不及格E 3) 60<=score <70 输出 丁D 4) 75<=score <80 输出 丙C 5) 80<=score <90 输出 乙B 6) 90<=score 输出 甲A
14
• 一个常用的嵌套if语言构成多分支选择结构, 也称为if-else-if阶梯,其一般形式如下:
例4.2 从键盘读入年份,然后判断该年是否为闰年。
25
• 例4.3企业发放的奖金根据利润提成。 –利润(I)不超过10万元时,奖金可提10%; –利润不超过20万元时,其中的10万元按10%提成, 高于10万元的部分提成7.5%; –20万到40万元,其中的20万元按前述b方法提成, 高于20万元的部分提成5%; –40万到60万元,其中的40万元按前述c方法提成, 高于40万元的部分提成3%; –60万到100万元,其中的60万元按前述d方法提成, 高于60万元的部分提成1.5%; –高于100万元时,其中的100万元按前述e方法提成, 超过100万元的部分提成1%。 从键盘输入当月利润I,求应发放奖金总数?
第四章
选择结构程序设计
Selection structure if else/switch
1
操作数
双目运算符
操作数
operand operator operand
+, -, *, / 双目运算符
int a=1,b=2, c; c = a + b; // a,b 操作数 c = a - b; // a,b 操作数 c = a * b; // a,b 操作数 c = a / b; // a,b 操作数
27
if (i<=100000) bonus=i*0.1; else if(i<=200000) bonus=bonus1+(i-100000)*0.075; else if(i<=400000) bonus=bonus2+(i-200000)*0.05; else if(i<=600000) bonus=bonus4+(i-400000)*0.03; else if(i<=1000000) bonus=bonus6+(i-600000)*0.015; else bonus=bonus10+(i-1000000)*0.01;
3
操作数 6种关系运算符:
大于 小于 等于 a > b a < b a == b
关系运算符
操作数
大于等于 小于等于 不等于
a >= b a <= b a != b
关系表达式只能产生两个数值之一: 0 或 1。
一个判定为真的关系表达式的值为 一个判定为假的关系表达式的值为
1;
0。
C语言中,逻辑值真为任何非0值 ;逻辑值假为0。
19
注意:
switch(i){ case 1:printf(″A\n″); break; case 2:printf(″B\n″); break; case 3:printf(″C\n″); break; case 4: printf(″D\n″); break; default:printf(″E\n″); }
else if (score<80) printf("丙C \n");
else if (score<90) printf("乙B \n"); else printf ("甲A \n"); }
16
if语句中的表达式:
关系表达式
逻辑表达式
任意数值类型的表达式。
执行语句:
一条简单语句
空语句 复合语句 嵌套其它流程控制语句。
if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 ...... else 语句n
15
#include <stdio.h> main() {
int score;
scanf("%d", &score); if ( score<0||score>100) printf("Error!"); else if (score<60) printf("不及格E \n"); else if (score<70) printf("丁D\n");
语句A
语句B
表达式 ? 表达式A : 表达式B
11
• •
else 子句,是可选的。 当无 else 子句时的if语句形式为:
假(0) 表达式?
if(表达式) 语句
语句
真(非0)
12
例4.1从键盘读入两个整数,然后显示这两个数的商。P81
#include <stdio.h> void main() { int a, b; printf("Enter two numbers(separate by ,):"); scanf("%d,%d",&a,&b); if (b) printf("a/b=%d\n", a/b); else printf("Can not divide by zero.\n"); }
#include <stdio.h> main() { /*用 switch 语句评级 */ int score; scanf("%d" ,&score); if ( score<0||score>100) printf(“Error!”); else switch (score /10) { case 10: case 9: printf("%d: A\n",score); break; case 8: printf("%d: B\n",score); break; case 7: printf("%d: C\n",score); break; case 6: printf("%d: D\n",score); break; default: printf("%d: E\n", score); } 22 }
三种逻辑运算符: 逻辑非 逻辑与 逻辑或 ! a a && b a || b
高 低
• 逻辑运算符将其操作数视为逻辑值,即“真”或“假”。 而C语言对于操作数真假的判定采取了如下原则: C语言中, 任意非零值为逻辑值真;
零为逻辑值假。
6
#include <stdio.h> main(){ int age, ; char name[20]; printf("姓名:"); scanf("%s", &name); printf("年龄:"); scanf("%d", &age); 姓名:郭茜莉 年龄:19 郭茜莉, 19岁, 是大学生
2
4.1 关系运算符、逻辑运算符、条件运算符
本章将着重讨论利用选择控制实现选择结构程序设计。选择 控制是指根据指定的条件是否满足,选择下一步要执行的语 句。满足为真,不满足为假。
4.2.1 关系运算符和关系表达式
对于条件的描述,最为常见的就是关系表达式。其一般形式:
操作数
关系运算符
操作数
每个操作数可以是变量、常量或者是任意有效的C语言表 达式。
4.3 选择结构 if else/switch 程序设计举例
23
符合下列条件之一的年份都是闰年:
•能被400 整除的年份; •不能被100整除,但可以被4整除的年份。
if( year%400==0 || (year%4==0 && year%100!=0) )
24
符合下列条件之一的年份都是闰年: 能被400 整除的年份; #include <stdio.h> 不能被100整除,但可以被4整除的年份。 main() { int year,leap; printf("Enter year:"); scanf("%d",&year); if (year%400==0 || (year%4==0 && year%100!=0)) leap=1; /* 是闰年*/ else leap=0; if (leap) printf("%d 是闰年is a leap year.\n",year); else printf("%d 不是闰年is not a leap year.\n",year); }
姓名:ZhangLiang 年龄:19 ZhangLiang, 19岁, 是大学生
8
4.2.3 条件运算符和条件表达式
• 条件运算符(?)是C语言中惟一的一个三目运算符, 其表达式的一般形式:
操作数 1 ? 操作数2
: 操作数3
y = x >=60 ? 'P' : 'F'
三目操作符 Ternary operator
9
4.3 选择结构的程序设计
• C语言提供两种选择控制语句:
–if 语句 –switch 语句。
所有程序的正常执行次序通常都是顺序的。然而,在 许多问题的解决方案中,常会根据情况的不同,采取 不同的处理方式。
10
4.3.1 if语句
if语句的一般形式:
真(非0) 表达式? 假(0)
if(表达式) 语句A else 语句B
使用if语句
分析:score为整型数(如不是可强制转换),在score≥90 的范围内,score可能取100, 99,.....,90,利用两个整 数相除,结果自动取整的特性,score和 score /10 有 如下对应关系: score score/10 ≥90 10, 9 80~89 8 70~79 7 60~69 6 60以下 default 因此,可以用score /10的值来确定分支。 21
• 表达式:通常是数字型或字符型,表达式的值, 称为开关值。
• 各个 case 后常量表达式的值必须互不相同;
• case 后面的语句可以是多条语句,也可以是复 合语句,还可以是空语句。
20
编程:根据输入的学生的成绩判断等级。当成绩score ≥90时为 A等; 成绩80≤score <90 为B等; 成绩60≤score <70 为D等; 成绩score < 60 为E等 (score 为整数)。
! 表示 不、否、或 反, 英文为: negation
4
• 字符数据同样可以用关系运算符比较,比较的依据是 其所用代码的数值。
例如比较ASCII码的字符: 表达式 为0 ‘a‟ == „A‟ 的值
表达式 表达式
‘A‟ > „C‟ ‘C‟ < „a‟
的值为0 的值为1
5
4.2.2 逻辑运算符和逻辑表达式
17
4.3.1 switch 语句
switch(表达式) { case 常量1 : 语句序列1 break; case 常量2 : 语句序列2 break; case 常量3 : 语句序列3 break; ...... default : 语句序列n }
可选
可选
18Leabharlann Baidu
看下面的例子: switch(i){ 假设i=3时,则会从 case 1:printf(″A\n″); break; i=3时做起的语句。 case 2:printf(″B\n″); break; 如果给每条语句加 case 3:printf(″C\n″); break; 上break; break; case 4: printf(″D\n″); 这样就只执行一条 default:printf(″E\n″); 语句 } 运行结果为: break:跳出switch语句。 C i=3时, D 运行结果为: 语句后加或不加“break;” 可以使 E 多分支变得非常灵活。 C
26
#include <stdio.h> void main() { long int i; int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; printf("Enter profit earned:"); scanf("%ld",&i);
bonus1=100000*0.1; bonus2=bonus1+100000*0.075; bonus4=bonus2+200000*0.05; bonus6=bonus4+200000*0.03; bonus10=bonus6+400000*0.015;
相关文档
最新文档