C及C++程序设计 修订本 教学课件 ppt 作者 张富 C语言基础 第4章

上传人:E**** 文档编号:89350042 上传时间:2019-05-23 格式:PPT 页数:103 大小:289.50KB
返回 下载 相关 举报
C及C++程序设计 修订本  教学课件 ppt 作者  张富 C语言基础 第4章_第1页
第1页 / 共103页
C及C++程序设计 修订本  教学课件 ppt 作者  张富 C语言基础 第4章_第2页
第2页 / 共103页
C及C++程序设计 修订本  教学课件 ppt 作者  张富 C语言基础 第4章_第3页
第3页 / 共103页
C及C++程序设计 修订本  教学课件 ppt 作者  张富 C语言基础 第4章_第4页
第4页 / 共103页
C及C++程序设计 修订本  教学课件 ppt 作者  张富 C语言基础 第4章_第5页
第5页 / 共103页
点击查看更多>>
资源描述

《C及C++程序设计 修订本 教学课件 ppt 作者 张富 C语言基础 第4章》由会员分享,可在线阅读,更多相关《C及C++程序设计 修订本 教学课件 ppt 作者 张富 C语言基础 第4章(103页珍藏版)》请在金锄头文库上搜索。

1、第4章 选择结构程序设计,4.1 关系运算符及关系运算表达式 4.2 逻辑运算符及逻辑表达式 4.3 选择语句 4.4 选择结构程序设计 4.5 条件运算符,这种结构的特点是,根据某种条件程序有选择地执行程序中的某一部分语句(不执行某另一部分语句)。在这种选择结构下,程序中形成了若干个分支,因此,选择结构也称为分支结构。构成选择结构中的条件,在C语言中主要是用关系运算表达式或逻辑运算表达式实现的,而选择程序结构是用分支语句实现的。,为此,本章首先介绍关系运算符及其关系表达式,逻辑运算符及其逻辑表达式。然后,介绍实现选择结构的分支语句及选择结构程序的设计。,关系运算符是用来确定一个量与另一个量之

2、间的关系, C语言提供六种关系运算符。,4.1 关系运算符及关系运算表达式,关系运算的结果是一个逻辑值。逻辑值是一种只有两个值的量:真和假。关系运算的结果成立,或者说为真(true),则运算结果为1,也就是用1表示真。比较的结果不成立,或者说为假(false),则运算结果为0,也就是用0表示假。例如,关系运算: 10100 显然是不成立的,表达式的值为假, 实际存储的数字为0。,例4.1.1 设有变量定义: int a=90,b=80; 计算下面关系运算表达式的值: ab=1=0= =1!=0,按照关系运算符的优先级和结合性,上面表达式的运算顺序相当于 (ab)=1)=0)= =1)!=0 表

3、达式的值为0。上式的运算过程可以用图4.1来说明。,例4.1.2 下面的程序应用关系运算符判断用户输入的两个整型变量数是否相等,并将比较的结果输出。 程序如下: /* This program illustrates the relational operators. */ #include “stdio.h“ main() ,int num1,num2; /* 定义变量 */ printf(“Enter two numbers: “); /* 提示用户输入数据 */ scanf(“%d%d“, /* 输出比较结果 */ ,程序输出举例: Enter two numbers: 2 2 (用户从

4、键盘输入2 2) num1=2 num2=2 result=1,逻辑运算符用于支持基本逻辑运算。三种逻辑运算符及其意义,如表4.2.1所示。,4.2 逻辑运算符及逻辑表达式,表4.2.1,逻辑运算是对逻辑量或表达式进行运算的。逻辑运算的对象可以是数值型的、字符型的,也可以是逻辑量。C语言规定,逻辑运算的运算对象为0时,代表逻辑量假;运算对象为非0时,代表逻辑量真。逻辑运算的结果仍是逻辑量:真或假。,例4.2.1 分析下面表达式的值是什么? 255 & !(87) | 2=10 根据上述的关系运算和逻辑运算的意义以及运算符的优先级,不难知道该表达式的值为真。这可以从图4.3清楚地看出。,例4.2

5、.2 设有如下变量定义: char ch=A; /* ch的值是65 */ int k1=65,k2=97; 计算下面表达式的值: k1+32= =k1&k2= =ch 上式的计算过程相当于: (k1+32)= =k2)&(k1= =ch),第一步运算 k1+32=97; 第二步运算 97=k2 结果为真; 第三步运算 k1=ch 结果为真; 第四步运算 1&1 结果为真; 所以,整个表达式的值为1(真)。 例4.2.3 编写程序,求25&10,25|10的逻辑值。 程序如下:,#include main() int x=25,y=10; printf(“x=%d y=%d x ,程序的输出有

6、如下的形式: x=25 y=10 x&y=1 25|10=1,关于逻辑运算,有一点要特别说注意:当对两个表达式进行逻辑与运算时,若前一个表达式的值为假,则不再进行后一个表达式的计算,整个表达式的值肯定为假。同样,当对两个表达式进行逻辑或运算时,若前一个表达式的值为真,整个表达式的值肯定为真,也不再进行后一个表达式的计算。,例如,表达式 1012&(a=a+1) 中前一个表达式的值为0(假),整个表达式的值为0,不进行后面表达式“a=a+1”的计算,a的值保持不变。 又如,表达 10121|(a=a+1),中前一个表达式的值为1(真),整个表达式的值为0,不进行后面表达式“a=a+1”的计算,a

7、的值保持不变。,4.3 选 择 语 句,选择语句是用于构造选择程序结构的语句。 4.3.1 单分支if选择语句 单分支if选择语句是形式最简单的if条件转移语句,它的格式如下: if(表达式) 语句;,本语句的功能是,首先计算“表达式”的值,如果表达式的值为真,则执行“语句”,否则不执行,而是转去执行本语句后面的语句。单分支if语句的流程图如图4.4所示。,图4.4 单分支if语句的流程,if语句中表达式可以任何类型的C表达式。其中语句也可以是任何语句,包括另一个if语句(称嵌套if语句);也可以是由若干语句组成的一个组语句。在这种情况下,这组语句需要用花括号“ ”括起来。,例4.3.1 编写

8、程序,求输入的整数的绝对值并将其输出。 整个程序的思路可归结为以下三步: (1)输入整数a; (2)求a的绝对值并存入a; (3)输出a。 求a的绝对值的简单方法就是:如果a是负数,再对它取一次负就变为正数了。按照这个思路,不难写出如下的程序:,#include “stdio.h“ main() int a,a1; scanf(“%d“, 如果输入整数5,则程序输出|5|=5。,4.3.2 双分支if_else选择语句 if_else语句的格式为: if(表达式) 语句1; else 语句2; 语句的功能是,首先计算表达式的值,如果为真,则执行语句(块)1,否则执行else后面的语句(块)2。

9、上述功能如图4.5所示。,图4.5 双分支if_else选择语句流程,例4.3.2 比较用户输入的两个整数的大小。若输入的第一个数大于第二个数,则显示: firstsecond 否则,显示: first= second 最后,显示: All done! 显然,这是一个有两个分支的程序。用图4.6的流程图说明编程的思想。,图4.6 例4.3.2程序的流程图,根据流程图可写出程序如下: #include main() int first, second; printf(“Enter two numbers: “); scanf(“%d%d“, ,if(firstsecond) printf(“fi

10、rstsecond“); else printf(“first= second“); printf(“All done!“); ,例4.3.3 用双分支if语句重新编写例4.3.1的程序。 可以利用一个分支处理变量a为正数的情况,如令x=a。用另一个分支初处理变量a为负数的情况,如令x=a。最后输出结果。下面给出程序: #include “stdio.h“ main() ,int a,x; scanf(“%d“, ,4.3.3 多分支结构 如果在if选择语句的一个或两个分支语句中,还包含有if语句,则称这种结构为“if语句的嵌套”。利用if语句的嵌套,可以构成多个分支的选择结构程序。 例4.3

11、.4 编写一程序,进行十进制数、八进制数和十六进制数之间的转换。 程序首先给出一个菜单,供用户选择所要求的数制转换。,菜单的形式如下: Convert: 1: decimal to hexadecimal(十进制数转换为十六进制数) 2: hexadecimal to decimal(十六进制数转换为十进制数) 3: decimal to octal(十进制数转换为八进制数) 4: octal to decimal(八进制数转换为十进制数),5: octal to hexadecimal(八进制数转换为十六进制数) 6: hexadecimal to octal(十六进制数转换为八进制数) 并

12、提示用户输入数制转换类型: Enter your choice: 用户通过输入数字(16)选定所要转换类型,然后程序提示用户输入待转换的数,例如:,Enter a decimal value: 输入数据后,程序输出换算的结果。 根据题意可知,本程序应该有六个分支语句块分别处理六种不同情况数制的转换。在每个分支中数制之间的转换,可通过函数printf()的格式控制字符实现。十进制数用格式字符“%d”输出。八进制数用格式字符“%o”输出,十六进制数用格式字符“%x”输出。,下面给出程序清单: #include main() int value,choice; printf(“Convert : n

13、“); /*输出菜单*/ printf(“ 1: decimal to hexadecimaln“); printf(“ 2: hexadecimal to decimaln“); printf(“ 3: decimal to octaln“);,printf(“ 4: octal to decimaln“); printf(“ 5: octal to hexadecimaln“); printf(“ 6: hexadecimal to octaln“); printf(“Enter your choice: “); /*输入菜单选择*/ scanf(“%d“, if(choice=1) ,p

14、rintf(“Enter a decimal value: “); scanf(“%d“, printf(“%x in decimal is %dn“,value,value); else if(choice=3) printf(“Enter a decimal value: “); scanf(“%d“, else if(choice=4) ,printf(“Enter a octal value: “); scanf(“%o“, , else if(choice=6) printf(“Enter a hexadecimal value: “); scanf(“%x“, ,我们看到,本程序通

15、过六个if_else_if结构的语句,构成了七个分支的多分支程序。根据if语句的执行流程,当第一个if语句的条件(choice=1)为真时,执行它后面的语句块:进行十十六的转换,输出结果后,程序运行结束。否则,表达式为假时,通过else分支进入第二个if语句。若表达式(choice=2)为真,执行它后面的语句块:进行十六十的转换,输出结果后,程序运行结束。否则,表达式为假时,跳过它后面的语句块,执行下一个if语句,等等。以此类推,一直执行到第六个if语句。如果用户输入的数字不是在16中,,则执行程序最后一行的else语句。 下面是程序的一次运行输出实例(十进制数转换为十六进制数)。程序开始运行

16、后显示采单: Convert : 1: decimal to hexadecimal; 2: hexadecimal to decimal; 3: decimal to octal; 4: octal to decimal;,5: octal to hexadecimal; 6: hexadecimal to octal; Enter your choice: 1 (输入1) Enter a decimal value: 255 (输入255) 输出如下的计算结果: 255 in hexadecimal is ff,一般情况下,只要在一个if语句中包含有另一个if语句就是if语句的嵌套,组成的就是多分支的选择结构程序。 例如,下面也是一种多分支的选择结构: if(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号