第5章选择结构程序设计

上传人:平*** 文档编号:9370694 上传时间:2017-10-02 格式:DOC 页数:9 大小:96.26KB
返回 下载 相关 举报
第5章选择结构程序设计_第1页
第1页 / 共9页
第5章选择结构程序设计_第2页
第2页 / 共9页
第5章选择结构程序设计_第3页
第3页 / 共9页
第5章选择结构程序设计_第4页
第4页 / 共9页
第5章选择结构程序设计_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《第5章选择结构程序设计》由会员分享,可在线阅读,更多相关《第5章选择结构程序设计(9页珍藏版)》请在金锄头文库上搜索。

1、1第 5 章 选择结构程序设计一、考点 掌握关系运算符和逻辑运算符的功能及用法 掌握基本条件和复合条件语句的使用 掌握 switch 语句的使用 掌握选择结构程序的设计方法二、知识点1、关系运算符与关系表达式关系运算符比较两个表达式并决定两者的关系,关系运算的结果是假(0)或真(非 0) 。表 5-1 中给出了 C 语言中的关系运算符。表 5-1使用关系运算符时要注意以下几点: 由两个字符组成的运算符之间不可加空格,如=不能写成 =。 关系运算符中, 、= 、=b、(a=3)(d=4)、ab=c 。在 C 语言中,没有专门的“逻辑值 ”,而是用零来代表“假” ,用非零来代表“真” ,因此,关系

2、运算的结果是 1 或 0。例如:设 a=4,b=2,则关系表达式 a=b 的结果为“真” ,表达式值=1。关系表达式 2*51+6 的结果为“真” ,表达式值=1。关系表达式 2+3= =1+4*2 的结果为“假” ,表达式值=0。关系表达式 5+(81+6)的值=6。关系运算符“= = ”和赋值运算符“= ”很容易混淆,必须注意两者之间的区别。 赋值运算符“=”赋值运算的一般形式为:=赋值运算符的左面只能是一个变量名,用等号右面的表达式的值对其赋值。运算结果的数据类型取决于赋值号左面变量的数据类型,可以是整型、实型、字符型等。如表达式 str=a是一个赋值表达式,结果是字符型的。 关系运算符

3、“= = ”关系运算“= = ”的一般形式为:= =关系运算“= =”是在两个表达式之间进行的,左面的表达式可以是一个变量,也可以是一个常数或表达式。运算结果的数据类型只能为整型(0 或 1) 。如表达式 str= =a是一个关系表达式,结果是 0 或 1。关系运算往往作为条件出现在 if 语句的条件或循环判断条件之中,一般不单独使用。2、逻辑运算符与逻辑表达式操作符 用法 大于= 大于或等于=Number2)Number1= Number2;该代码对变量 Number1 和 Number2 的值进行比较,如果 Number1 较大,则把 Number2 的值赋给Number1。C 语言中,用

4、括号括起来的语句块与一个单语句等价,因此如果表达式的值为真时可以执行多个语句。由此可以得到 if 语句的第二种形式:if(表达式) 语句 1;语句 2;语句 3;该语句的执行过程如图 5-2 所示。下面是有关 if 用法的一个简单的例子。【例 5-3】if (Number1=60)printf(“Passedn”);elseprintf(“Failedn”);【例 5-5】某商品的零售价为每公斤 8.5 元,批发价为每公斤 6.5 元,购买量在 10 公斤以上,便可按批发价计算,设某顾客购买此商品 weight 公斤,请编程计算该顾客需付费(pay)多少?程序如下:main()float we

5、ight,pay;printf(“ Please input the weight:” ) ;scanf(“%f ”,&weight ) ;if ( weight=10)pay=weight*6.5;else pay=weight*8.5;printf(“ You should pay %f yuansn”,pay) ;2) if 语句的嵌套if 和 else 子句中,可以是任意合法的 C 语句或语句块,如果这子句是个 if 语句,则构成了 if 语句的嵌套。内嵌的 if 语句可以嵌套在 if 子句中,也可以嵌套在 else 子句中。嵌套的 if 语句有以下几种格式:if (条件 1)if(条

6、件 2)语句 1;else 语句 2;else语句 3;if (条件 1)语句 1;elseif(条件 2)语句 2;else语句 3;if (条件 1)if(条件 2)语句 1;else 语句 2;elseif(条件 3)语句 3;else 语句 4;【例 5-6】根据输入的百分制成绩( score) ,要求输出成绩等级(grade)A、B、C 、D、E。90 分以上为 A,8089 分为 B,7079 分为 C,6069 分为 D,60 分以分数大于等于 60打印 Failed 打印 Passed5下为 E。用 if 语句实现,程序如下:main()int score;char grade

7、;printf(“ n Please input a score(0100):” ) ;scanf(“%d”,&score ) ;if ( score=90)grade=A;else if ( score=80)grade=B;else if ( score=70)grade=C;else if (score=60 )grade= D;else grade=E;printf(“ The grade is %c.n”,grade ) ;程序的运行情况如下:Please input a score(0100):86The grade is B.3) 条件运算符假设要编制一个程序,求两数中的较大数。

8、执行的过程是比较 a 是否大于 b,如果是,则较大数(max)为 a,否则令 max 等于 b。程序如下:if(ab)max=a;elsemax=b;C 语言提供了一种特殊的条件运算符,可以简化上面的语句。条件表达式的一般形式:表达式 1 ?表达式 2 :表达式 3条件表达式的执行过程:先计算表达式 1 的值,如果表达式 1 的值不等于 0,则求解表达式 2,表达式 2 的值作为整个条件表达式的值,否则,求解表达式 3,表达式 3 的值作为整个条件表达式的值。若用条件运算符表示,则上面的语句可表示如下:max=ab?a:b 表达式 6条件运算符的优先级高于赋值运算,低于其他运算。其功能相当于一

9、个 if-else 语句。例如【例 5-4】就可用条件表达式来实现: printf(grade=60?“Passedn” :“Failedn ”) ;。4、switch 语句1) switch 语句的一般格式switch(表达式) case 值 1:语句 1;break;case 值 2:语句 2;break;case 值 N:语句 N;break;default: 语句 N+1;其中的表达式的数据类型只能为整型或字符型,语句可以是任何有效的语句或语句块。2) switch 语句的执行过程执行 switch 语句时,首先计算 switch 后表达式的值,然后在 switch 语句中寻找与该表达

10、式的值相匹配的 case 值,如果找到,则执行该 case 后的各语句,直至遇到一个 break 语句为止;如果找不到匹配的 case 值,则执行 switch 的默认语句( default) ,直到 switch 语句体结束。如果找不到匹配的 case 值且不存在默认语句( default) ,则跳过 switch 语句体,什么也不做。若【例 5-6】用 switch 语句来实现,则程序如下:main() int score,m;printf(“ nPlease input a score(0100 ):n” ) ; scanf(“%d” ,&score) ;m=score/10;switc

11、h(m)case 9:case10:printf (“nThe grade is A.” ) ;break;case 8:printf (“nThe grade is B.” ) ;break;case 7:printf (“nThe grade is C.” ) ;break;case 6:printf (“nThe grade is D.” ) ;break;default:printf (“ nThe grade is E.”) ; 7假设运行时输入 75,则 m=7,执行 case 7:后的语句 printf(“nThe grade is C.”) ;遇 break;结束 switch

12、 语句的执行。程序的运行情况如下:Please input a score(0100):75The grade is C.break 语句用于改变程序流程。当在 switch 语句中执行 break 语句时,break 语句使程序从该结构中退出,程序接着执行该结构后的第一条语句。如果去掉上例中的所有 break语句,运行程序并输入 75,则程序的运行情况如下:Please input a score(0100):75The grade is C.The grade is D.The grade is E.注意:该算法中。Switch 语句后的表达式是 m(=score/10)而不是 score

13、,这样处理可以大大减少分支数目,简化程序。5、程序设计举例【例 5-7】对分段函数:x (x=10)y=3*x-11;else y=2*x-1;printf(“ y=%f”,y) ;程序的运行情况如下: 运行时输入一个小于 1 的数Please input x:-28y=-2.000000 运行时输入一个介于 1 和 10 之间的数Please input x:8y=15.000000【例 5-8】编程求一元二次方程 ax2+bx+c=0 的实数根。#include “stdio.h”main() float a,b,c ,delta,x1,x2;printf(“ nPlease input

14、a,b,c :” ) ;scanf(“%f ,%f ,%f” ,&a,&b,&c) ;delta=b*b-4*a*c;if(delta0 的情况Please input a,b,c:8,9,1x1=-0.125000,x2=-1.000000 运行时输入使=0 的情况Please input a,b,c:4,8,4x1=-1.000000【例 5-9】输入 17 之间的任意数字,程序将按照用户的输入数据输出对应的星期值。如用户输入 3,则程序输出 Wednesday。如果输入 17 以外的数字,则提示输入错误。main() int week;printf(“ nPlease input a i

15、nteger(17):n” ) ; 9scanf(“%d” ,&score) ;switch(week)case 1:printf (“Mondayn ”) ;break;case 2:printf (“Tuesdayn ”) ;break;case 3:printf (“Wednesdayn ”) ;break;case 4:printf (“Thursdayn ”) ; break;case 5:printf (“Fridayn ”) ;break;case 6:printf (“Saterdayn” ) ;break ;case 7:printf (“Sundayn” ) ;break ;default:printf (“ The input is wrong!n” ) ; 程序的运行情况: Please input a integer(17):5Friday Please input a integer(17):9The input is wrong!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

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