C语言程序设计基础5.ppt

上传人:本田雅阁 文档编号:3479540 上传时间:2019-09-01 格式:PPT 页数:38 大小:407.52KB
返回 下载 相关 举报
C语言程序设计基础5.ppt_第1页
第1页 / 共38页
C语言程序设计基础5.ppt_第2页
第2页 / 共38页
C语言程序设计基础5.ppt_第3页
第3页 / 共38页
C语言程序设计基础5.ppt_第4页
第4页 / 共38页
C语言程序设计基础5.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《C语言程序设计基础5.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计基础5.ppt(38页珍藏版)》请在三一文库上搜索。

1、共 38 页 第 1 页,第五章,选择结构,C语言程序设计,共 38 页 第 2 页,本章要点: 正确使用关系表达式和逻辑表达式 掌握用if语句和switch语句实现选择结构 掌握条件运算符的使用,共 38 页 第 3 页,选择语句是控制程序执行选择结构的语句 是程序实现逻辑判断的唯一形式,根据学生分数判断是否及格 根据学生分数如何进行分级 一元二次方程求解,自然语言:如果 那么 否则 C语言: 分支语句,如何解决?,为什么要用选择结构?,问题,共 38 页 第 4 页,5. 关系运算符和关系表达式,5.1.1 关系运算符 1.关系运算符 关系运算是进行比较大小的运算,并产生运算结果1(真)或

2、 0(假)。 语言中的关系运算符有种: 、! 优先次序:前种同级,高于后种(后种同级) 关系运算符的结合性为从左到右;,算术运算符 (高) 关系运算符 赋值运算符 (低),如:32 ab,注意!,共 38 页 第 5 页,5.1.2 关系表达式 定义:用关系运算符将两个表达式连接起来的式子。 形式:表达式1 关系运算符 表达式2 如:(ab)(by 、s+fd 关系表达式的值为逻辑值“真”或“假”. 注意: 语言没有逻辑型数据,关系表达式的真、假 是以数值“”代表“真”,以“”代表“假”。 例:设 a=3, b=2, c=1 ,求下列表达式的值?,cb,值为0(假),(a-b)=1,值为1(真

3、),(b+c)a,值为0(假),a=534,a的值为0,共 38 页 第 6 页,练 习,判断奇、偶数 设有变量定义 int z; 分析z%2=0 的值? 如果z为偶数,则 z%2=0的值为1; 否则z为奇数,则 z%2=0的值为0; 因此,z%2=0是断言“z是偶数”的c语言判断式。 2. 判断x与y的某位数字是否相同 x%10=y%10 判断个位数上数字相同,x/10%10=y/10%10 判断十位数上数字相同,共 38 页 第 7 页,5.2.1 逻辑运算符 C语言提供三种逻辑运算符: & (逻辑与) 、 | (逻辑或) 、! (逻辑非) 说明: (1)“&”和“| ”是“双目(元)运算

4、符”,它要求有两个操作数。 (2)“! ”是“单目(元)运算符”,只要求有一个运算量。 (3)优先级次序:! & |,5.2 逻辑运算符和逻辑表达式,a&b a、b均为真, 则a&b为1(真)。 a|b a、b之一为真,则a|b为1(真)。 !a 若a为真,则!a为假。,共 38 页 第 8 页,运算符的优先级,!(非) (高) 算术运算符 关系运算符 & 和 | 赋值运算符 (低),共 38 页 第 9 页,5.2.2 逻辑表达式 用逻辑运算符将关系表达式或逻辑量连接起来的式子. 规定:判断一个逻辑量为“真、假”的方法: “非”代表“真”,“”代表“假” 例: 写出11&x3&2|8n+3

5、例:(m=ab)&(n=c-d) 若a=3,b=2,c=6,d=5,n=8 例:a|b|c 如果a为真,就不再判断b和c了,强调:在逻辑表达式的求解过程中,只要能确定表达式的值,就不继续向下求解其他的值了.,(a+b)c)&(c=d),(a-(!d)|(m(n+3),(53)&2|(8(4(!0),共 38 页 第 10 页,逻辑运算真值表,共 38 页 第 11 页,练习:控制条件的正确表示方法 判断变量ch是否为数字字符 ch=0& ch=a& ch=A& ch=a& ch=A& ch=Z) 判断变量ch是否为空格、回车 ch= ch=n 判断变量year是否为闰年(year能被4整除但不

6、能被100整除,或year能被400整除) (year % 4=0 & year % 100!0)|(year % 400=0) (year % 4!=0)|(year % 100 =0 & year % 400 !=0),共 38 页 第 12 页,根据给定的表达式决定要执行的操作。,执行过程: 计算表达式的值,判断表达式值为真时执行语句组,否则跳过语句继续执行后续语句。,单选择,语句格式: if (表达式) 语句组; 例: if (ab) x=a;,1. 单选择if语句,表达式可以是关系式或逻辑式,5.3 选择语句,5.3.1 if 语句,共 38 页 第 13 页,2. 双选择if语句,

7、语句格式: if (表达式) 语句组1; else 语句组2;,双选择,功能: 计算表达式的值,当表达式值为非零时执行语句组1,否则执行语句组2。,共 38 页 第 14 页,控制条件的几种形式: if(a=0) k=1; if(a=0) k=1; if(a!=0) k=1; if(a) k=1; if(1) k=1;,思考a取不同的值时,语句的执行情况?,提示:不要用“=“比较两个浮点数是否相等。 可使用如下方式:if(fabs(a-b)1.e-6) fabs(x)是库函数,表示求x的绝对值,共 38 页 第 15 页,#include “stdio.h“ main() int a,b,s;

8、 scanf(“%d%d“, ,例1,运行时输入:3 4,输出:16,共 38 页 第 16 页,#include “stdio.h“ main() int a,b,c=25; a=10c; b=a=a; printf(“a=%d,b=%d, “,a,b); if(c) printf(“c=%d“,c); ,运行结果:a=0,b=1,c=25,共 38 页 第 17 页,指出下列程序的输出结果: #include “stdio.h“ main() int a; scanf(“%d“, 程序运行: 输入58 输出?585858 输入30 输出?,例2,共 38 页 第 18 页,if(a=60)

9、 printf(“及格n”); else printf(“不及格n”);,main() int a; scanf(“%d”, ,输出不及格的成绩,例3,共 38 页 第 19 页,#include “stdio.h” main( ) int a,b,max; printf(“Input a and b:“); scanf(“%d%d“, ,求a和b两数中较大的一个。,例4,共 38 页 第 20 页,#include “stdio.h “ main( ) int a,b,t; printf(“Input a and b:“); scanf(“%d%d“, ,按由小到大的顺序输出两个数。,例5,

10、共 38 页 第 21 页,有关if语句的说明,表达式后面不加分号 语句之后有分号 else不是语句,不能单独使用 当if后有多个执行语句时,必须用 将多个语句括起来,构成一个复合语句, 之外不必有分号。,共 38 页 第 22 页,5.3.2 if语句的嵌套,格式:if(表达式) if( 表达式1) 语句11; else 语句12; else if (表达式2) 语句21; else 语句22;,在if语句的“语句1”或“语句2”中又包含着if语句,判断表达式的值,若为非0,再判断表达式1的值,非0执行语句11,否则执行语句12 若表达式的值为0,再判断表达式2的值,非0执行语句21,否则执

11、行语句22,功能:,共 38 页 第 23 页,下列程序段表示的数学式子? y=-1; if (x!=0) if (x0) y=2*sin(x); else y=0;,程序段表示的数学式1: 0 (x0),讨论:给第二个if行加 后表示的数学式?,程序段表示的数学式2: -1 (x0),数学式1程序可表示为: y=-1; if (x!=0) if (x0) y=2*sin(x); else y=0;,思考,强调:if和else可成对出现,也可不成对出现,每个else都与距其最近的if配对。,共 38 页 第 24 页,if 语句的常用格式: if(表达式1) 语句 1 else if(表达式2

12、) 语句 2 else if(表达式3) 语句 3 else if(表达式m) 语句 m else 语句 n,仅执行表达式为真的else if后的内嵌语句,若所有的表达式值都为0,则执行最后一个else后的内嵌语句.,共 38 页 第 25 页,已知 编写程序,输入一个x的值,输出y值。,程序为: #include “stdio.h“ main( ) int x, y; scanf(“%d“, ,例6,共 38 页 第 26 页,switch语句 该语句为开关语句,适合解决多分支的情况。 格式:switch(表达式) case 常量表达式:语句序列; case 常量表达式:语句序列; case

13、 常量表达式n: 语句序列n; default :语句序列n+1; 说明:执行顺序如下:,5.3.2 switch 语句 问题: 为什么引出switch语句?,可以是一条语句,也可以是多条语句。多条语句不必用括号括起来。,起语句标号的作用,不进行条件判断,在执行完某个 case后的语句序列后,将自动转移到下一个case继续执行。,可以是整型、字符型。,共 38 页 第 27 页,a. 计算表达式的值; b. 找到与表达式的值相同的case常量表达式,执行该case后边的语句序列,之后依次往下执行语句块。,表达式,语句序列1,语句序列2,语句序列n,语句序列n+1, ,共 38 页 第 28 页

14、,每个语句序列的最后一条语句后增加break语句,执行流程为:,共 38 页 第 29 页,根据考试成绩的等级打印出百分制分数段。 采用多分支情况程序段: switch( grade ) case A : printf(“85100n“) ; break; case B : printf(“7084n“); break; case C: printf(“6069n“); break; case D :printf(“60n“); break; default : printf(“error “); 若 grade= A时,输出结果为? 当 grade= B时,输出结果为?,例7,共 38 页

15、第 30 页,流程图为:,共 38 页 第 31 页,说明: case和default 的次序可以交换。 例:#include “stdio.h” main( ) int c=3; switch(c) case 1: c+; default: c+; case 2: c+; printf(“c=%dn“, c); ,case 3: c+;,共 38 页 第 32 页,多个case可以执行同一个语句序列。 switch(c=getchar( ) case y : case Y: printf(“You are right.n”); ,int a=10; switch(a) case 10 : c

16、ase 9 : a+; case 8: case 7: a+=2;break; ,共 38 页 第 33 页,条件运算符: 唯一的三目操作符,要求有三个操作对象。 格式:表达式 ?表达式:表达式 功能:判断表达式的值,该值为“非0”,则取表达式2的值,为“ 0 ”时,取表达式3的值。 如:max=ab ? a : b 若 a=3, b=2, 则 max=? 说明: (1) 条件运算符优于赋值运算符。 (2) 条件运算符的结合方向为“自右向左”。 如:当a=1,b=2,c=3, d=4 时, 表达式 ab ? a : cd ? c : d , 值为:? 如: 若 x=1,y=0,a=3,b=-3

17、 表达式 (yx?a:b)&a+b 值为:?,4,0,5.4 条件运算符,共 38 页 第 34 页,(3) 条件表达式中的表达式的类型可以与表达式和表达式的类型不同。条件表达式值的类型为二者中较高的类型。 如: xy ? 1.2 : 6 , 当xy成立时条件表达式的值为1.2 ,否则为实型数据6.0。 c=xy ? 1 : s , 当xy成立时c=1, 否则c= s。,共 38 页 第 35 页,if ( y0 ) x=-y; else x=y;,(y0)?x=-y:x=y;,等价,等价,x = (y0) ? -y:y;,说明:if else可以完成与条件 运算符( ? : )完全相同 的任

18、务,并且可以进行 相应的转换。,共 38 页 第 36 页,将输入的大写字母转换为小写字母. #include “stdio.h“ main( ) char ch; scanf(“%c“, printf(“%c“, ch) 输入 输出 a,例8,共 38 页 第 37 页,main() /* 输入今天的日期,显示明天的日期。*/ int year,month,day; scanf(“%d %d %d“, ,共 38 页 第 38 页,小 结,if语句实现单分支 if-else语句实现两个分支 switch-break语句实现多分支 嵌套if语句可以实现复杂的分支结构(注意else与最近的if结合),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1