tceic.com
简单学习网 让学习变简单
当前位置:首页 >> 数学 >>

2第二章选择结构


C
程 序 设 计 |
第 二 章

第二章

1

选择结构

C
程 序 设 计 |
第 二 章

本讲主要内容
? 什么是选择结构? ? 关系表达式、逻辑表达式、 条件表达式 ? 选择语句 ? 练习及综合应用

r />2

C
程 序 设 计 |
第 二 章

选择结构
?选择结构是通过对条

3

件的判断来选择执行
不同的程序语句。

?C语言中是用if语句或switch语句来构成选 择结构的。if语句一般适用于两路选择,也 可以通过嵌套形式来实现多路选择。switch 语句能方便地实现多路选择。

C
程 序 设 计 |
第 二 章

引例
问题:从键盘输入三个不同的整数x、y、z ,然 后通过判断输出三个数中的最大数 选出三个数中最大数的算法描述如下:
第一步:算法开始; 第二步:输入原始数据x、y、z; 第三步:比较x与y的值,将大数放到max中; 第四步:再用x、y中的大数max与z比较,若z大于max, 则将max的值置为z,否则max的值不变; 第五步:输出max的值,即三个数中的最大数; 第六步:算法结束。

4

C
程 序 设 计 |
第 二 章

引例程序
#include "stdio.h" main() { int x,y,z,max; printf("\n从键盘上输入三个整数: "); scanf("%d %d %d",&x,&y,&z); if(x>y) max=x; else max=y; if(max<z) max=z; printf("\nThe max is %d.\n",max); }

5

C
程 序 设 计 |
第 二 章

程序测试及调试(自学)
?程序测试是为了证明程序有错误

6

?程序调试是为了找出错误的位置并改正
?调试过程通常包括三个步骤:发现错误、分离 错误和校正错误,这一过程将贯穿于从编程阶 段到运行阶段

?程序的错误从其表现形式上可分为:语法错误、 逻辑错误

?自学内容见教材《C语言程序设计习题与实验》 中的相关章节

C
程 序 设 计 |
第 二 章

关系运算符
?关系运算符: <、<=、 >、 >=、 ==、 !=
?结合性为:左结合 ?优先级为:
<

7

<=

>

>=

==

!=

优先级相同(高)

优先级相同(低)

?关系表达式的值有逻辑真和逻辑假。当表达式
成立时值为“真”,用整数“1”表示;当表达 式不成立时值为“假”,用整数“0”表示

?C中无逻辑型数据,常用整型变量存放逻辑值

C
程 序 设 计 |
第 二 章

关系表达式
?是用关系运算符和园括号将运算对象连接起来 的式子
例2.1 设a=1,b=2,c=3,判断下列关系表达式的值 例2.2 设a=?4?,b=?f?,判断下列关系表达式的值 a<=b 'A'<'B' 相当于:1<=2,值为真(1) 相当于:65<66,值为真

8

a>b+c 相当于:1>(2+3),值为假(0) a>b 相当于:'4'>'f'或52>102,值为假 a+b!=c 相当于: (1+2)!=3, 值为假(0) 'F'==b 相当于:70==102,值为假 a==b<c 相当于:1==(2<3),值为真(1) 注意:进行相等比较时一定要用双等号“==”,因 a>b>c 为C语言中的单个等号是赋值运算符。 相当于:(1>2)>3,值为假(0)

C
程 序 设 计 |
第 二 章

逻辑运算符
?逻辑运算符:! 非、 && 与、 || 或 ?优先次序: 高 ?结合性:
右结合 → 左结合 低 左结合

9

?运算规则:

C
程 序 设 计 |
第 二 章

逻辑表达式

10

例 2.3 设 a=1 , b='a' , c=3.0 , d=0 , e='3' , ?是用逻辑运算符和园括号将运算对象连接 起来的式子 ch='A',判断下列逻辑表达式的值:
!(c-b) 值为0 ?逻辑表达式的值是逻辑真或逻辑假,逻辑 运算符两侧的运算对象可以是0(假)或任何 a<=c || b<=c 值为1 非0(真)数值 !!!!d 值为0 ch>='a' && ch<='z' b>='A' && b<='Z' e>='0' && e<='9' a<b && c || b>3-!b 判断小写字母,值为0 判断大写字母,值为0 判断数字字符,值为1 值为1

C
程 序 设 计 |
第 二 章

逻辑表达式的应用
例2.4 读程序写结果 main() { int m1,m2,n=1; m1=(1>3) && n++; m2=3>1 || n++; printf("m1=%d m2=%d
程序运行结果为: m1=0 m2=1 n=1

11

n=%d\n",m1,m2,n); }

? C语言中,在逻辑表达式的求解过程中,并不 是所有的逻辑运算符都被执行,只是在必须执 行下一个逻辑运算符才能求出表达式的解时才 执行该逻辑运算

C
程 序 设 计 |
第 二 章

条件表达式

12

?由条件运算符?和:把多个表达式连接起来的式 子,如:e1 ?e2 :e3 其中:e1、e2、e3可以是变量或表达式

?运算规则:若e1的值为真(非0值),则表达 式的结果值取e2;否则e1的值为假(0值), 则表达式的结果值取e3。
实例:设: a=2,b=4,c=6,求x和y的值。 x=a<b?a:b ; y=c>a?c:(b!=4?4:8) ; x的值为2 y的值为6

C
程 序 设 计 |
第 二 章

简单选择结构(if语句)
读程序写结果: 语句形式:if(表达式) 语句;
#include "stdio.h" main() { float sx,yw,average; N scanf("%f,%f",&sx,&yw ); x>y ? 执行过程:若表达式 average=(sx+yw)/2.0; Y 的值为真,则执行输出 if(average >= 90) 语句;若表达式的值为 输出x的值 printf(“Excellence ! \n”); } 假,则跳过输出语句 后继 输入:85,91<CR> 输入:96,91<CR> 结果为:? 结果为:?

13

C
程 序 设 计 |
第 二 章

简单选择结构举例
例2.7 从 ?该算法假定程序处理 键盘上任 后,a中放三个数中的最 大值,b中放三个数中的 意输入三 次大值,c中放三个数中 个 整 数 的最小值 a,b,c,并 按从大到 小的顺序 显示出来

14

程序

C
程 序 设 计 |
第 二 章

简单选择结构举例
#include "stdio.h" main() { int a,b,c,t; scanf("%d%d%d",&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("%d,%d,%d \n",a,b,c);

15

}

C
程 序 设 计 |
第 二 章

两路选择结构(if语句)
语句形式:if(表达式) 语句1; 输入:9<CR> 读程序写结果: else 语句2;结果为:? main()

16

{ int exp; char ch; ch=getchar(); 执行过程 :若表达 N Y exp=ch>='a'&&ch<='z'||ch>='A'&& ch<='Z'; 式的值为真,则执行 x>y if(exp) 输出 x 语句;若表达 printf(”It is a letter. \n”); 输出x的值 输出y的值 式的值为假,则执行 else 输出 y 语句。 printf(”It is not a letter. \n”); 后继 }

C
程 序 设 计 |
第 二 章

两路选择结构举例

17

例2.9 从键盘上输入年号,判断这一年是否 程序:

为闰年,若是闰年则输出“Y”,否则输出“N” main() 。 { int year,p; scanf("%d",&year); ?闰年的判断依据是:若某年号能被4整除但不 if((year%4==0&&year%100!=0)||year%400==0) 能被100整除,则这一年是闰年;或者这一年能 p=1; 被400整除也是闰年。 else ?判断闰年的逻辑表达式为: p=0; year%4==0&& year%100!=0) || year%400==0 if(p) printf("Y \n"); else printf("N \n"); }

C
程 序 设 计 |
第 二 章

多路选择结构(if语句)
语句形式:
if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; ? else 语句 n+1; ?注意:整个if 语句中只有一

18

个分支被执行

?执行过程:依次计算各表达式的值,哪个表达
式的值为真,则执行相应的语句,然后执行if 的后继语句。当所有表达式的值均为假时,执 行else后的语句。

C
程 序 设 计 |
第 二 章

多路选择结构举例
读程序:
main() { char c; c=getchar(); if(c>='a'&& c<='z'|| c>='A'&& c<='Z') printf(" letter \n"); else if(c>='0'&& c<='9') printf(" digit \n"); else if(c==' ') printf(" space \n"); else printf(“ other \n”); }

19

C
程 序 设 计 |
第 二 章

if语句嵌套
?即if的内嵌语句还可以是一个if语句
int a=1,b=3,c=5,d=4; if(a<b) if(c<d) x=1; else if(a<c) if(b<d) x=2; else x=3; else x=6; else x=7;

20

?当if 语句嵌套 使用时,C语言 规定,else总 是与它上面最 近的if配对

C
程 序 设 计 |
第 二 章

switch语句
语句形式:
?执行过程:先计算

21

可以是整型、字符型、枚举型 switch语句中表达式的值, 再依次与1到n个常量表达式 的值比较,当表达式的值与 某个case后的常量表达式的 每个常量表达式的值(整 值相等时,则执行该case后 数或字符)不能相同,次 的语句,然后执行break语 序不影响执行结果 句跳出switch结构。如果所 有常量表达式的值都不等于 switch中表达式的值,则执 行default后的语句。

C
程 序 设 计 |
第 二 章

switch语句举例

22

例2.11 从键盘上输入学生的总平均成绩,按分 数段评定出等级‘A?~‘E?。如果输入的成 绩小于等于0或大于等于100,则输出出错信 息。 switch((int)(score/10.0)) { case 9: grade='A'; break; case 8: grade='B'; break; case 7: grade='C'; break; 程序 case 6: grade='D'; break; case 5: case 4: case 3: case 2: case 1: case 0: grade='E'; }

C
程 序 设 计 |
第 二 章

switch语句举例
读程序
没有break,将 main() 继续往下执行 { int x=1,y=0,a=0,b=0; switch( x ) { case 1: switch( y ) { case 1: a++; break; case 0: b++; case 2: b++; break; } case 2: a++; b++; break; case 3: a++; b++; } printf("\n a=%d, b=%d", a, b); }

23

C
程 序 设 计 |
第 二 章

语法练习

24

?函数y=f(x),当x>0时y=1,当x=0时y=0,当x<0 时y=-1。仔细阅读下面求解y值的程序,并改正其 中的逻辑错误。 main() { float x; int y=-1; printf("\nInput x:"); scanf("%f",&x); if(x!=0) if(x>0) y=1; else y=0; printf("x=%f, y=%d\n",x,y);}

C
程 序 设 计 |
第 二 章

语法练习

25

a=2;b=7;c=5; ?上机运行下面程序段, switch(a>0) 并写出程序的运行结果 {case 1:switch(b<10) {case 1:printf("@");break; case 0:printf("!");break;} case 0:switch(c==5) {case 0:printf("*");break; case 1:printf("#");break; default:printf("%");break;} default:printf("&"); } printf("\n");

C
程 序 设 计 |
第 二 章

综合设计

26
程序

?从键盘上输入应纳税所得额,计算并输出应纳 个人所得税额。 我国最新个人所得税计算公式如下: 应纳个人所得税税额=(应纳税所得额?扣除标准) ×适用税率?速算扣除数 其中,扣除标准为2000元/月。

C
程 序 设 计 |
第 二 章

习题(单选题)

27

?设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达 式中值为0的是 。 A)'x'&&'y' B)x<=y C)x||y+z&&y-z D)!((x<y)&&!z||1)

?下列表达式中,

不满足“当x的值为偶数时值 D)!(x%2)

为真,为奇数时值为假”的要求。 A)x%2==0 B)!x%2!=0 C)(x/2*2-x)==0

?执行以下程序段后,变量a,b,c的值分别是
int a,b,c,x=10,y=9; a=(--x==y++)?--x:++y; A)9,9,9 B)8,8,10 b=x++; c=y; C)9,10,9

D)1,11,10

C
程 序 设 计 |
第 二 章

习题(填空题)
?以下程序执行后的输出结果是______。 main() { int x=10,y=20 ,t=0; if(x==y) t=x; x=y; y=t; printf("%d,%d\n",x,y); }

28

?以下程序执行后的输出结果是 ______。
_

main() { int n=0,m=1,x=2; if(!n) x-=1;if(m) x-=2;if(x) x-=3; printf("%d\n",x); }

C
程 序 设 计 |
第 二 章

小结
?本章详细介绍了选择控制结 构,关系表达式、逻辑表达 式和条件表达式。
?用于实现选择结构的语句是 if—else 和 switch 。 常 用 if—else实现简单的选择结 构和两路选择结构,用 switch实现多路选择结构。 ?if语句的嵌套使用较复杂, 请课后多练习

29

C
程 序 设 计 |
第 二 章

本章课后作业
?复习教材第二章内容 ?预习教材第三章内容 ?上机实习内容: 实验 选择结构 ?完成第二章的全部习题

30


推荐相关:

第二章 选择结构程序设计

第二章 选择结构程序设计_计算机软件及应用_IT/计算机_专业资料。第二章 选择结构程序设计 2.1 if 语句基础『问题描述』如果明天天气不好,就留在家里看电视,...


第二章第三节选择结构

第二章第三节选择结构_理化生_高中教育_教育专区。一、案例背景;高中信息技术...2)合作探究,获得新知 师:VB 程序设计实例(求数的绝对值)──屏幕演示。 ...


2.3.2选择结构

2.3.2 选择结构 一、【教材分析】 算法与程序设计是普通高中信息技术课程中...“选择结构”是信息技术选修《算法与程序设计》第二章第三节的内容,共分 三...


顺序结构与选择结构(2)

15 级数学必修三第二章算法导学案(2)课题§2 算法框图的基本结构及设计 2.1 顺序结构与选择结构 主编人:侯建军 班级: 姓名: 小组: (3)执行步骤的方式:先...


(4)§2.2 顺序结构与选择结构

新马桥中学 2009---2010 学年度第二学期高一数学导学案 必修 3 第二章 算法初步 课题: §2.2 顺序结构与选择结构审核: 日期:2010.5.13 编号:04 编写: 闻...


2.3 程序的选择结构 教学设计

2.3 程序的选择结构 教学设计_其它课程_高中教育_教育专区。程序的选择结构 教学...(4) 所属的章节: 第二章第三节 (5) 课时数:1 学时,非上机时间 20 ...


《程序的选择结构》教案

2-1节 程序的选择结构一、 教学目标 1、知识与技能 理解程序选择结构中的条件...第二章第三节,原教材的 第一个程序例子有关矩形的计算,涉及到解二元一次方程...


实验二 选择结构程序设计

以 如果买 1 本不打折扣 ;买 2 本打折 10%; 买 3 本折扣为 15 %, 3...选做实验实验指导书 56 页第二章选择结构的任意实验 参考答案: 1. 实验 1 ...


第四章 选择结构

第二章 选择结构 第四章 选择结构 4.1 选择题 1. 已有定义:int x=3, y=4, z=5; 则表达式!(x+y)+z-1 && y+z/2 的值是()。 A.6 B.0 C.2...


案例三:选择结构

实验教科书《算法与程序设计》 第二章第三节的内容,共分三课时,本课为第二...【教学目标】 1.知识与技能:(1)掌握分支选择结构实现条件判断控制。 (2)能够...

网站首页 | 网站地图
All rights reserved Powered by 简单学习网 www.tceic.com
copyright ©right 2010-2021。
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@126.com