资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,.,*,单击此处编辑母版标题样式,C程序设计,讲师:徐红波,Email:x_h_b,.,第5章 选择结构程序设计,选择结构是三种基本结构之一。在大多数程序中都会包含选择结构。它的作用是,根据所指定的条件是否满足,决定从给定的两组操作选择其一。在本章中介绍如何用C语言实现选择结构。,在C语言中选择结构用if语句实现。if语句最常用的形式如下:,if(关系表达式)语句1 else 语句2,例如:,if(x0)y=1;else y=-1;,其中x0是一个关系表达式。“”是一个关系运算符。,.,5.1 关系运算符和关系表达式,关系运算是逻辑运算中比较简单的一种。“关系运算”就是“比较运算”。将两个值进行比较,判断其比较的结果是否符合给定的条件。例如a3是一个关系表达式。,.,5.1.1 关系运算符及其优先次序,C语言提供6种关系运算符:,=!=,关于优先次序:,(1)前4种关系运算符的优先级别相同,后两种也相同。前4种高于后2种。,(2)关系运算符的优先级低于算术运算符。,(3)关系运算符的优先级高于赋值运算符。,.,5.1.2 关系表达式,用关系运算符将两个表达式(可以是算术表达式或关系表达式、逻辑表达式、赋值表达式、字符表达式)连接起来的式子,称,关系表达式,。,关系表达式的值是一个逻辑值,即“真”或“假”。C语言没有逻辑型数据,以1代表“真”,以0代表“假”,.,5.2 逻辑运算符和逻辑表达式,用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。,.,5.2.1 逻辑运算符及其优先次序,C语言提供三种逻辑运算符:,(1),&,逻辑与,(2),|,逻辑或,(3),!,逻辑非,.,逻辑运算的“真值表”,a,b,!a,a&b,a|b,真,真,假,真,真,真,假,假,假,真,假,真,真,假,真,假,假,真,假,假,.,在一个逻辑表达式中如果包含多个逻辑运算符,如,!a&b|xy&c,按以下的优先次序:,(1)!(非)-&(与)-|(或),即“!”为三者中最高的。,(2)逻辑运算符中的“&”和“|”低于关系运算符,“!”高于算术运算符。,.,5.2.2 逻辑表达式,逻辑表达式的值应该是一个逻辑量“真”或“假”。C语言编译系统在给出逻辑运算结果时,以数值1代表“真”,以0代表“假”,但在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”。即将一个非零的数值认作为“真”。,.,在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。,(1)a&b&c,(2)a|b|c,.,5.3 if语句,if语句是用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。,.,5.3.1 if语句的3种形式,C语言提供了3种形式的if语句。,1、if(表达式)语句,例如:if(xy)printf(“%d”,x);,.,2、if(表达式)语句1 else 语句2,例如:,if(xy),printf(“%d”,x);,else,printf(“%d”,y);,.,3、,if(表达式1)语句1,else if(表达式2)语句2,else if(表达式3)语句3,else if(表达式m)语句m,else 语句n,.,.,说明:,(1)三种形式的if语句中在if后面都有“表达式”,一般为逻辑表达式或关系表达式。,(2)第二、第三种形式的if语句中,在每个else前面有一个分号,整个语句结束处有一个分号。,(3)在if和else后面可以只含一个内嵌的操作语句,也可以有多个操作语句,此时用花括号将几个语句括起来成为一个复合语句。,.,5.1输入两个实数,按代数值由小到大的顺序输出这两个数,#include,void main(),float a,b,t;,scanf(“%f,%f”,if(ab),t=a;a=b;b=t;,printf(“%5.2f,%5.2fn”,a,b);,.,例5.2输入3个数a、b、c,要求按由小到大的顺序输出,#include,void main(),float a,b,c,t;,scanf(“%f,%f,%f”,if(ab)t=a;a=b;b=t;,if(ac)t=a;a=c;c=t;,if(bc)t=b;b=c;c=t;,.,5.3.2 if语句的嵌套,在if语句中又包含一个或多个if语句称为if语句的嵌套。一般形式如下:,if(),if()语句1,else 语句2,else,if()语句3,else 语句4,.,例5.3编程,输入x值,输出y值,函数:-1(x0),#include,void main(),int x,y;,scanf(“%d”,if(x=A,printf(“%cn”,ch);,.,5.4 switch语句,switch语句是多分支选择语句。一般形式:,switch(表达式),case 常量表达式1:语句1,case 常量表达式2:语句2,case 常量表达式n:语句n,default:语句n+1;,.,说明:,(1)switch后面括号内的表达式,ANSI标准允许它为任何类型。,(2)当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。,(3)每一个case的常量表达式的值必须互不相同;否则就会出现相互矛盾的现象。,(4)各个case和default的出现次序不影响执行结果。,(5)执行完一个case后面的语句后,流程控制转移到下一个case继续执行。,(6)多个case可以共用一组执行语句。,.,5.5 程序举例,例5.5写程序,判断某一年是否闰年,.,例5.6求ax,2,+bx+c=0方程的解,(1)a=0,(2)b,2,-4ac=0,(3)b,2,-4ac0,(4)b,2,-4ac0,.,例5.7运输公司对用户计算运费,路程越远,每吨每千米运费越低。,标准如下:s250没有折扣250s500 2%折扣500s1000 5%折扣,1000s2000 8%折扣20003c&b=c,(2)a|b+c&b-c,(3)!(ab)&!c|1,(4)!(x=a)&(y=b)&0,(5)!(a+b)+c-1&b+c/2,5.4 有3个整数a、b、c,由键盘输入,输出其中最大的数。,.,5.5 有一个函数:,x x1,y=2x-1 1x10,3x-11 10 x,5.6 给出一百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,8089分为B,7079分为C,6069分为D,60分以下为E。,5.9 输入4个整数,要求按由小到大的顺序输出。,.,5.10 有4个圆塔,圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆半径为1。这4个塔的高度为10m,塔以外无建筑物。今输入任意点的坐标,求该点的建筑高度(塔外的高度为零)。,.,
展开阅读全文