选择结构程序设计1.ppt
《选择结构程序设计1.ppt》由会员分享,可在线阅读,更多相关《选择结构程序设计1.ppt(41页珍藏版)》请在三一办公上搜索。
1、第5章:选择结构程序设计,学习的意义,在编制程序时,有时并不能保证程序一定执行某些指令,而是要根据一定的外部条件来判断哪些指令要执行。如菜谱中要加工西红柿,可能有这样的步骤:如果是用鲜西红柿,则去皮、切碎,开始放入,如果是用西红柿酱,就在最后放入。这里,我们并不知道具体操作时执行哪段指令,但菜谱给出了不同条件下的处理方式,计算机程序也是如此,可以根据不同的条件执行不同的代码,这就是选择结构。程序总是为解决某个实际问题而设计的,而问题往往包含多个方面,不同的情况需要有不同的处理,所以选择结构在我们的实际应用程序中可以说是无处不在,离开了选择结构很多情况将无法处理,因此,正确掌握选择结构程序设计方
2、法对于我们编写实际应用程序尤为重要。,C程序中语句的分类 关系运算符、逻辑运算符、条件运算符 选择结构的程序设计(if语句、switch语句)选择结构程序设计举例 本章小结,学习目标,理解选择结构的含义;掌握C语言语句的分类;掌握关系运算符、逻辑运算符和条件运算符的用法;记住关系运算符、逻辑运算符和条件运算符与其它运算符的优先级关系和结合性;掌握if、switch语句的使用方法。,学习内容,5.1 C程序中语句的分类,语言程序的执行部分是由语句组成的。程序的功能也是由执行语句实现的。C语言中的语句可以分为以下5类:,表达式语句 由表达式加上分号“;”组成。其一般形式为:表达式;,函数调用语句
3、由函数名、实际参数加上分号“;”组成。其一般形式为:函数名(实际参数表);,a=10 赋值表达式a=10;赋值语句k+表达式k+;表达式语句,while(getchar()!=n);本语句的功能是,只要从键盘输入的字符不是回车则重新输入。这里的循环体为空语句。,空语句 只有分号“;”组成的语句称为空语句。空语句是什么也不执行的语句。在程序中空语句可用来作空循环体。,printf(C Program)函数调用;printf(“C Program”);函数调用语句 其功能是输出字符串C Program。,说明:(1)“”后不加分号(2)语法上和单一语句相同(3)复合语句可嵌套(4)复合语句内定义的
4、变量只能在复合语句内使用。,复合语句 用 括起来的一组语句。,int a=2,b=3,c;c=a+b;printf(c=%dn,c);,一般形式为:数据说明部分;执行语句部分;,#include void main()int x=10,y=20,z;z=x+y;int z;z=x*y;printf(z=%dn,z);/输出复合语句中z的值 printf(z=%dn,z);/输出复合语句外z的值,输出结果:z=200z=30,控制语句 用来实现一定的控制功能的语句称为控制语句。C语言用控制语句来实现选择结构和循环结构。语言有九种控制语句。可分成以下三类:,5.2 关系运算符、逻辑运算符、条件运算
5、符,1.关系运算符和关系表达式,关系运算符,关系表达式,用关系运算符连接起来的式子称为关系表达式。关系表达式的一般形式为:表达式 关系运算符 表达式,例:a+b c d x 3/2 a+1 c i 5*j=k+1,注意:C语言用0表示假,非0表示真。一个关系表达式的值不是0就是1,0表示假,1表示真。,关系运算符的优先级,例如:c a+b 等价于:a b!=c 等价于:a=b c 等价于:a 2 b|c 等价于:,c(a+b),(a b)!=c,a=(b c),a=(b c),(a 2)(c+d),(a&(4 b)|c,已知:a=1;b=2;c=3;问:d=a!=c=a b c;的值?,答:d
6、 的值为1。等价于:d=(a!=c)=(a b)c);,例:int a=3,b=2,c=1,d,f;a b(a b)=c b+c b f=a b c,/表达式值1,/表达式值1,/表达式值0,/d=1,/f=0,关系运算注意:,例 若a=0;b=0.5;x=0.3;则 a=x=b的值为,0,例 5 2 7 8在C中是允许的,值为,0,例 int i=1,j=7,a;a=i+(j%4!=0);则a=,2,例 a0 结果为 A100 结果为,1,0,例 应避免对实数作相等或不等的判断如 1.0/3.0*3.0=1.0 结果为可改写为:fabs(1.0/3.0*3.0-1.0)1e-6,0,2.逻辑
7、运算符和逻辑表达式,逻辑运算符,逻辑运算真值表,例如:a b&x y 等价于:a=b|x=y 等价于:!a|a b 等价于:!a b 等价于:c=a|b 等价于:a|7&b&8 等价于:a 2&b 1 等价于:,2.逻辑运算符和逻辑表达式,逻辑表达式,用逻辑运算符连接起来的式子称为逻辑表达式。逻辑表达式的一般形式为:表达式 逻辑运算符 表达式,例:a 10|x-10、!x&!y,逻辑运算符的优先级,(a=x)&(x=b),(a b)&(x y),(a=b)|(x=y),(!a)|(a b),(!a)b,c=(a|b),(a|7)&(b&8),(a 2)&(b 1),已知:a=4;b=5;问:c
8、=b 3 的值?,答:c 的值为1。等价于:c=(b 3),例:a=4;b=5;!a a&b a|b!a|b 4&0|2 5 3&2|8 4-!0 c&d,/值为0,/值为1,/值为1,/值为1,/值为1,/值为1,/值为1,逻辑运算注意:,逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。,例 a(m=a b)&(n=c d),/结果:m=0,n=1,条件运算符可嵌套 如 x 0?1:(x 0?-1:0)优先级:13,3.条件运算符与表达式一般形式:expr1?expr2:expr3执行过程功能:相当于条件语句,但不能取代一般
9、if语句,例 求 a+|b|printf(“a+|b|=%dn”,b0?a+b:a-b);,例(a=b)?Y:N(x%2=1)?1:0(x=0)?x:-x(c=a&c=z)?c-a+A:c,结合方向:自右向左 如 a b?a:c d?c:d a b?a:(c d?c:d)expr1、expr2、expr3类型可不同,表达式值取较高的类型,例 x?a:b/x=0,表达式值为b;x0,表达式值为a xy?1:1.5/xy,值为1.0;xy,值为1.5,例:小写字母转盘。#include#include void main()char ch,ch1,ch2;/变量定义 ch=getche();/读取
10、一字符 putchar(n);/换行 ch1=ch=a?z:ch-1;/求前驱字符 ch2=ch=z?a:ch+1;/求后继字符 printf(ch1=%c,ch2=%cn,ch1,ch2);/显示结果,输出结果(假设输入为w):ch1=v,ch2=x,运算符总结:,总体上讲,单目运算符都是同等优先级的,具有右结合性,并且优先级比双目运算符和三目运算符都高。三目运算符的优先级比双目运算符要低,但高于赋值运算符和逗号运算符。逗号运算符的优先级最低,其次是赋值运算符。只有单目运算符、赋值运算符和条件运算符具有右结合性,其它运算符都是左结合性。双目运算符中,算术运算符的优先级最高,逻辑运算符的优先级
11、最低。,到现在为止,我们已经学习了30多个运算符。掌握它们的优先级关系特别重要。优先级的记忆规则:,5.3 选择结构的程序设计,1.if语句,简单if语句形式,if(表达式)语句;,格式:,执行流程:,例如:下面的程序段是输入两个整数,输出其中的大数。int a,b,max;printf(input two numbers:);scanf(%d%d,if_else形式,if(表达式)语句1;else 语句2;,格式:,执行流程:,例如:下面的程序段同样是输出两个整数中的最大数。int a,b;printf(input two numbers:);scanf(%d%d,1.if语句,if_els
12、e_if形式,if(表达式1)语句1;else if(表达式2)语句2;else if(表达式3)语句3;else 语句n;,格式:,执行流程:,例如:下面的程序段是判断输入字符的种类。char c;printf(Enter a character:);c=getchar();if(c=0,if语句注意事项,(1)if语句后面的表达式必须用括号括起来。(2)表达式通常是逻辑表达式或关系表达式,但也可以是其它任何表达式,如赋值表达式等,甚至也可以是一个变量。只要表达式非零时,表达式的值就为真,否则就是假。(3)在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语
13、句,则必须把这一组语句用 括起来组成一个复合语句。但要注意的是在之后不能再加分号。(4)在if语句中,如果表达式是一个判断两个数是否相等的关系表达式,要当心不要将=写成了赋值运算符=。,if(a=5)语句;/表达式的值永远为非0,所以其后的语句总是要执行的 if(b)语句;/等价于if(b!=0)语句;,运行结果:x=0,运行结果:x!=0,if语句嵌套:一般形式:,例 输入两数并判断其大小关系,#include void main()int x,y;printf(Enter integer x,y:);scanf(%d,%d,运行结果:Enter integer x,y:12,23 XY E
14、nter integer x,y:12,12 X=Y,语言规定,在缺省 时,else总是和它上面离它最近的未配对的if配对,运行结果:a=0,运行结果:a=1,if_else 配对原则,例:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);,修改:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);,实现if else 正确配对方法:加,例:考虑下面程序输出结果:void main()int x=100,a=10,b=20;int v1=5,v2=0;if(a b)if(b!=15)if(!v1)
15、x=1;else if(v2)x=10;x=-1;printf(“%d”,x);,结果:-1,2.switch语句(开关分支语句)一般形式:,switch(表达式)case E1:语句组 1;break;case E2:语句组 2;break;.case En:语句组 n;break;default:语句组;break;,执行过程:,使用switch语句注意事项,(1)switch后面的“表达式”,可以是int、char和枚举型中的一种,但不可为浮点型。,float a,b=4.0;scanf(%f,int a,b=4;scanf(%d,使用switch语句注意事项,(2)case后面语句(组
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 选择 结构 程序设计
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-2842687.html