《C语言程序设计 第3章 选择结构程序设计.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计 第3章 选择结构程序设计.ppt(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3 3章章选择结构程序设计选择结构程序设计 关系运算、逻辑运算、关系运算、逻辑运算、if语句、语句、条件运算符、条件运算符、switch语句语句l 本章要点本章要点 首先要了解关系运算及逻辑运算的相关知首先要了解关系运算及逻辑运算的相关知识,理解什么是选择结构,然后再学习实现选识,理解什么是选择结构,然后再学习实现选择结构的各语句,各语句的语法结构,实现过择结构的各语句,各语句的语法结构,实现过程均需要记忆,只有这样才能学会选择结构程程均需要记忆,只有这样才能学会选择结构程序的编写方法。序的编写方法。l学习方法建议学习方法建议l 本章内容本章内容3.5 3.5 程序举例程序举例3.1 关系
2、运算符和关系表达式关系运算符和关系表达式3.2 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式3.3 if语句语句3.4 switch语句语句3.1 关系运算符及其表达式关系运算符及其表达式1.关系运算符关系运算符关系运算实质就是两个算术量比较大小,其结果是一个逻辑值。逻辑值只有两个,关系运算实质就是两个算术量比较大小,其结果是一个逻辑值。逻辑值只有两个,分别用分别用“真真”和和“假假”来表示。在来表示。在C语言中,没有专门的语言中,没有专门的“逻辑值逻辑值”,而是用非,而是用非0表示表示“真真”,用,用0表示表示“假假”。因此,对于任意一个表达式,如果值为非零,就。因此,对于任意一个表达式,如
3、果值为非零,就代表一个代表一个“真真”值;如果值为值;如果值为0,就代表一个,就代表一个“假假”值。值。上一页上一页下一页下一页返返 回回关系运算符共有以下关系运算符共有以下6种:种:大于大于 =大于等于大于等于 =小于等于小于等于 =等于等于 !=不等于不等于具有自左至右的结合性。具有自左至右的结合性。以上运算符中,前四种关系运算符(以上运算符中,前四种关系运算符(、=)的优先级别相同,后两种()的优先级别相同,后两种(=、!=)优先级)优先级相同,且前四种高于后两种。关系运算符的优先级相同,且前四种高于后两种。关系运算符的优先级低于算术运算符。低于算术运算符。2.关系表达式关系表达式小测验
4、:小测验:假设变量假设变量a=3、b=2、c=1,执行赋值语句,执行赋值语句f=abc;后,变量后,变量f的值是多少?的值是多少?关系表达式的形式为:关系表达式的形式为:表达式表达式1 关系运算符关系运算符 表达式表达式2例如:例如:ab、a+bc、x!=y等都是合法的等都是合法的关系表达式。关系表达式。关系表达式的值有两种情况:关系表达式的值有两种情况:(1)当关系成立时,表达式的值为逻辑真,程序中用当关系成立时,表达式的值为逻辑真,程序中用1表示。表示。(2)当关系不成立时,表达式的值为逻辑假,用当关系不成立时,表达式的值为逻辑假,用0来表示。来表示。例如,有关系表达式例如,有关系表达式b
5、c,当,当b的值是的值是5,c的值是的值是8时,时,bc关系成立,那么表达关系成立,那么表达式的值为式的值为1;而当;而当b的值为的值为9,c的值是的值是6时,时,bc&b=c的值为的值为0a|b+c&b-c的值为的值为1!(ab)&!c|1的值为的值为1(ab)&b+的值为的值为0(bc)|a+的值为的值为1上一页上一页下一页下一页返返 回回3.3 if语句和条件运算符语句和条件运算符1单选择型单选择型if语句语句3.3.1 if语句语句语法格式为:语法格式为:if(表达式)语句(表达式)语句if子句在语法上只能是一子句在语法上只能是一条语句,若想执行多条语条语句,若想执行多条语句,则必须用
6、一对大括号句,则必须用一对大括号“”括起来,以复合括起来,以复合语句的形式出现。语句的形式出现。输入两个整数,输入两个整数,分别存入分别存入a和和b中,若两数中,若两数不等,则输出其中的小数,不等,则输出其中的小数,若相等,则输出字符若相等,则输出字符串串a=b和和a的值。的值。【程序代码程序代码】#include stdio.hmain()int a,b;printf(Input a&b:);scanf(%d%d,&a,&b);printf(a=%d,b=%dn,a,b);if(ab)printf(min=%dn,b);if(ba)printf(min=%dn,a);if(a=b)print
7、f(a=b%d:n,a);【例例3.1】上一页上一页下一页下一页返返 回回上一页上一页下一页下一页2双选择型双选择型if语句语句语法格式为:语法格式为:if(表达式)语句(表达式)语句1 else 语句语句2 输入任意三输入任意三个整数给变量个整数给变量a、b、c,求三个数中的最大值。求三个数中的最大值。【程序代码程序代码】#include stdio.hmain()int a,b,c,max;printf(Please input three number:);scanf(%d%d%d,&a,&b,&c);if(ab)max=a;else max=b;if(cmax)max=c;printf
8、(The three number are:%d,%d,%dn,a,b,c);printf(max=%dn,max);【例例3.2】返返 回回 3多选择型多选择型if语句语句上一页上一页下一页下一页语法格式为:语法格式为:if(表达式(表达式1)语句)语句1 else if(表达式(表达式2)语句)语句2 else if(表达式(表达式3)语句)语句3 else if(表达式(表达式n)语句)语句n else语句语句n+1 对学生的考试成绩进对学生的考试成绩进行等级评价,行等级评价,90分以上为优秀分以上为优秀,8090分为良好,分为良好,7080分为分为中,中,6070分为及格,分为及格,6
9、0分以下分以下为不及格。任意输入一个学生的为不及格。任意输入一个学生的成绩,判断属于哪个等级。成绩,判断属于哪个等级。【程序代码程序代码】#include stdio.hmain()int cj;printf(Please input cj:);scanf(%d,&cj);if(cj=90)printf(优秀优秀n);else if(cj=80)printf(良好良好n);else if(cj=70)printf(中中n);else if(cj=60)printf(及格及格n);else printf(不及格不及格n);执行程序,输入执行程序,输入85,运行结果如下:,运行结果如下:【例例3.
10、3】返返 回回上一页上一页下一页下一页3.3.2 条件运算符条件运算符语法格式为:语法格式为:表达式表达式1?表达式表达式2:表达式表达式3执行过程:计算执行过程:计算“表达式表达式1”的值,如果该值为非值,的值,如果该值为非值,则计算则计算“表达式表达式2”的值,并的值,并将该值作为条件表达式的值。将该值作为条件表达式的值。若若“表达式表达式1”的值为,则的值为,则计算计算“表达式表达式3”的值,并将的值,并将该值作为条件表达式的值。该值作为条件表达式的值。说明:说明:(1)条件运算符优先级别高于赋值运)条件运算符优先级别高于赋值运算符,低于关系运算符和算术运算符。算符,低于关系运算符和算术
11、运算符。(2)条件运算符结合方向是)条件运算符结合方向是“自右至自右至左左”。(3)“表达式表达式1”与与“表达式表达式2”、“表表达式达式3”的类型可以不同。的类型可以不同。求两个数中的最小值。求两个数中的最小值。【程序代码程序代码】#include stdio.hmain()int x,y,min;printf(Enter two integers:);scanf(%d,%d,&x,&y);min=xy?x:y;printf(Min=%dn,min);【例例3.4】返返 回回上一页上一页下一页下一页3.3.3 if语句的嵌套语句的嵌套在在if语句中又包含一个或多个语句中又包含一个或多个if
12、语句,称为语句,称为if 语句的嵌套。内嵌的语句的嵌套。内嵌的if语句语句既可以嵌套在既可以嵌套在if子句中,也可以嵌套在子句中,也可以嵌套在else子句中。子句中。(1)在)在if子句中嵌套子句中嵌套if语句语句语法格式为:语法格式为:if(表达式(表达式1)if(表达式(表达式2)语句语句1 else 语句语句2else 语句语句3说明:如果内嵌的说明:如果内嵌的if语句不含语句不含else子句,则内嵌的子句,则内嵌的if语句要语句要用一对括号括起来。因为用一对括号括起来。因为C语语言的语法规定:言的语法规定:else子句总是子句总是与前面最近的不带与前面最近的不带else的的if相相结合
13、,与书写格式无关。结合,与书写格式无关。返返 回回 有一函数:有一函数:-1 (x0)编一程序,输入一个编一程序,输入一个x值,输出值,输出y值。值。上一页上一页下一页下一页【程序代码程序代码】#include stdio.hmain()int x,y;printf(Input x:);scanf(%d,&x);if(x=0)if(x0)y=1;else y=0;else y=-1;printf(x=%d,y=%dn,x,y);(2)在)在else子句中嵌套子句中嵌套if语句语句语法格式为:if(表达式(表达式1)语句语句1else if(表达式(表达式2)语句语句2 else 语句语句3【例
14、例3.5】中例题中的中例题中的if 语句用该语句用该嵌套格式可以写成如下形式:嵌套格式可以写成如下形式:if(x0)y=1;else if(x0)y=-1;else y=0;【例例3.5】返返 回回语法格式为:语法格式为:switch(表达式)(表达式)case 常量表达式常量表达式1:语句语句1 case 常量表达式常量表达式2:语句语句2 case 常量表达式常量表达式n:语句语句n default:语句语句n+1 上一页上一页下一页下一页3.4 switch语句语句switch语句又称为多分支选择语句或开关语句。语句又称为多分支选择语句或开关语句。说明:说明:(1)case后面的常量表达
15、式的值,后面的常量表达式的值,都必须是整型的、字符型的,不允许都必须是整型的、字符型的,不允许是浮点型的。是浮点型的。(2)同一个)同一个 switch语句中的所有语句中的所有case后面的常量表达式的值都必须后面的常量表达式的值都必须互不相同。互不相同。(3)default的出现次序是任意的的出现次序是任意的(4)每个)每个case的后面有多条语句的的后面有多条语句的时候,也不需要用花括号括起来。时候,也不需要用花括号括起来。(5)多个)多个case的后面可以共用一组的后面可以共用一组执行语句,执行语句,返返 回回【程序代码程序代码】#include stdio.hmain()int sco
16、re;printf(Please input score:);scanf(%d,&score);switch(score/10)case 10:case 9:printf(优秀优秀n);case 8:printf(良好良好n);case 7:printf(中中n);case 6:printf(及格及格n);default:printf(不及格不及格n);上一页上一页下一页下一页 用用switch语句处理例语句处理例3.3中的问题中的问题在在switch语句中语句中使用使用break语句。语句。用来中止用来中止switch语句中从入口处语句中从入口处继续往下执行。继续往下执行。用用switch语
17、句和语句和break语句处理例语句处理例3.6中的问题中的问题include stdio.hmain()int score;printf(Please input score:);scanf(%d,&score);switch(score/10)case 10:case 9:printf(优秀优秀n);break;case 8:printf(良好良好n);break;case 7:printf(中中n);break;case 6:printf(及格及格n);break;default:printf(不及格不及格n);【例例3.6】【例例3.7】返返 回回3.5 选择结构应用举例选择结构应用举例
18、【程序代码程序代码】#include stdio.hmain()int x;printf(Input x:);scanf(%d,&x);if(x%2=0)printf(%d是一个偶数是一个偶数n,x);else printf(%d是一个奇数是一个奇数n,x);if(x%5=0)printf(%d是是5的倍数的倍数n,x);else printf(%d不是不是5的倍数的倍数n,x);上一页上一页下一页下一页 输入一个数,判断它是奇输入一个数,判断它是奇数还是偶数,如果是奇数则进一步数还是偶数,如果是奇数则进一步判断它是否为判断它是否为5的倍数。的倍数。从键盘上输入从键盘上输入m或或M,显示显示“
19、GOOD Morning!”;输入;输入h或或H,显示,显示“Hello!”;输入;输入n或或N,显示,显示“GOOD Night!”,输入其,输入其它字母时不显示任何信息。它字母时不显示任何信息。【程序代码程序代码】#include stdio.hmain()char ch;scanf(%c,&ch);switch(ch)case m:case M:printf(%s n,GOOD Morning!);break;case h:case H:printf(%s n,Hello!);break;case n:case N:printf(%s n,GOOD Night!);break;【例例3.8】【例例3.9】返返 回回上一页上一页下一页下一页3.6 本章小结本章小结(1)选择结构概念。)选择结构概念。(2)if语句。语句。(3)switch语句。语句。(4)选择语句的嵌套。)选择语句的嵌套。(5)程序书写格式。)程序书写格式。返返 回回作业及上机内容作业及上机内容课后作业课后作业第第50页,习题页,习题3.5、3.7上机内容上机内容练习实验指导书上的相关内容及作业题练习实验指导书上的相关内容及作业题上一页上一页返返 回回
限制150内