C语言课件第5章选择结构.ppt_第1页
C语言课件第5章选择结构.ppt_第2页
C语言课件第5章选择结构.ppt_第3页
C语言课件第5章选择结构.ppt_第4页
C语言课件第5章选择结构.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章 选择结构程序设计 主要内容:主要内容:关系运算符和关系表达式关系运算符和关系表达式 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式 if - elseif - else(重点、难点)重点、难点) switch switch 条件运算符和条件表达式条件运算符和条件表达式( (了解了解) ) 根据选择结构的组成特点,我们在分析问题时着重根据选择结构的组成特点,我们在分析问题时着重 明确以下两点:明确以下两点: 1 1)条件是什)条件是什 么。么。 2 2)条件成立和不成立时分别执行什么操作。)条件成立和不成立时分别执行什么操作。 n n 简单条件用关系表达式来表示简单条件用关系表达式来表示 n n 例例5.1 5.1 判断一个整数判断一个整数n n是奇数还是偶数(设是奇数还是偶数(设n n 由用户输入)由用户输入) 分析:第一步,输入整数分析:第一步,输入整数n n。第二步,判断:第二步,判断: 若条件若条件“ “n%2n%2等于等于0“0“成立,则输出成立,则输出“ “n n为偶数为偶数“ “ ;否则输出;否则输出“ “n n为奇数为奇数“ “。 5.1关系运算符和关系表达式 main() int n; printf(“n enter int n:”); scanf(“%d”, if( n%2=0) printf(“n %d is even number“, n); else printf(“n %d is odd number”, n); 开始 输入n n%2为0 是偶数是奇数 结束 输入n n例5.2输入任一考生的考号及成绩,判断其是否能上大学 。(设分数线为600,若能上,则输出“success“,否则输 出”failure”)。 分析:第二步是选择结构,条件是“score大于等于600”, main() int no; float score; printf(“n enter no,score:”); scanf(“%d%f”, if( score=600) printf(“n %d :success”,no); else printf(“n %d :failure.”,no); n关系表达式的值:若条件满足,则关系表达式的值为ture( 1) ;否则,关系表达式的值为false(0)。 1.关系运算符: = = != 例如下列关系表达式: ab 表示条件 “a 大于 b“, x!=0 表示条件 “x 等于 0“, a+b 关系运算符 赋值运算符 且 = 高于 = != 结合性: 自左向右(一般很少连用)。 如: abb)dc也是合法的关系表 达式,但在实际应用中很少使用;因为它不能 表示:a+b大于c且大于d。 n问题: 如何表示:a =15 n double x=0,y=2.3; n计算下列表达式的值: n h B. (a=c)|(b=c); C. (a=c) D. a=c=b; 5.3 if 语句 nif语句能实现所有的选择结构 n例5.5 将任意两个整数m、n中的较大数送给x,较小 数送给y ,然后按大小顺序输出(设m、n的值由键盘 输入) n分析:共分三步, S1: 输入两个整数给m和n。 S2: 判断m、n的大小并分别给x和y 赋值。 S3: 输出x和y。 其中第二步用选择结构. main() int m,n,x,y; printf(“n please enter two integers:”); scanf(“%d%d”, if(mn) x=m; y=n; /*复合语句*/ else x=n; y=m; printf(“n x=%d,y=%d”,x,y); 思考:若条件改为:m main() char ch; printf(“n enter a character:”); /*第一步,输入ch */ ch=getchar(); getchar(); if( ch=A printf(“n guess a num:“); scanf(“%d“, / if( m= =n) printf(“ RIGHT“); /*语句1*/ else printf(“n WRONG“); if( nm) printf(“ BIG“); /*语句2*/ else printf(“ SMALL“); n例5.8某幼儿园只接收26岁的小孩,其中23岁 编入小班,45岁编入中班,6岁编入大班。编 程实现,对输入的任意一个年龄,输出该编入 什麽班,或者告知“不收“。 n分析:首先根据条件“年龄在26岁之间”判断是“ 收”还是“不收“,若条件满足,则执行的操作为 :(1)判断该编入何班;否则,输出“不收”。 其次,分析(1)如何实现。 提示:本例可用不同的程序实现。 如将条件改为“年龄超出26岁”;或者从条件“年龄 小于2”开始判断。试编程实现。 nmain() int age; printf(“n enter age:”); scanf(“%d”, if(age=2 else printf(“negativen”); 画出该程序的流程图,程序结构更清楚。 n例5.10程序(2): main() int n; printf(“n enter a integer:”); scanf(“%d”, if(n0) if(n%2=0) printf(“positive and even.n”); else printf(“negativen”); 4条件运算符 n使用if语句时,有时是为了根据条件给同一个变量赋不同 的值,比如: main() int x,y; scanf(“%d”, if(x0) y=x+1; else y=x*x+1; printf(“n x=%d,y=%d”,x,y); n本例中,当条件满足或不满足时分别执行一个赋值语句 ,且都是给变量 y 赋值。用C语言提供的条件运算符描述 ,比用if语句更简练。上述if语句等价于: n y= x0? x+1 : x*x+1; 其中“x0? x+1 : x*x+1”是一个“条件表达式”, 条件运算符: ? : 条件表达式的一般格式: 表达式1 ?表达式2 : 表达式3 n计算过程: 首先计算表达式1;若其值为真(非0),则计算表达式2, 取表达式2的值作为整个条件表达式的值;否则,计算表 达式3,取表达式3的值作为整个条件表达式的值。 n优先级: 条件运算符的优先级比关系运算符和算术运算符 都低,比赋值运算符高。 例如: y=x0?x+1:x*x+1 等价于 y=((x0)?( x+1) : (x*x+1)) n说明:并不是所有的if语句都能用条件表达式实现。如 if(n0) a=6; else b=8; 5.4 switch语句 nswitch语句可用来处理一部分特殊的多分支选 择结构。即根据某个表达式的值进行选择,而 不能根据表达式的取值范围作出选择,所以使 用时有很大的局限性。 . n如学生成绩等级分类,幼儿园分班等。 若用if语句实现,程序冗长,嵌套层次多,结 构不够清晰。而用switch语句则更清楚。 n例5.12输入某个成绩等级,输出该等级对应的 分数段。( A:90100,B:8089,C:7079,D:6070,E:60以下 ) #include /*例5.12*/ main() char grade; printf(“n enter score grade(ae):“); /*输出提示信息*/ grade=getchar(); getchar(); /*接收输入的一个字符*/ switch(grade) case a: printf(“n 90100“); /*case后是一常量*/ break; /*多个语句组成的语句段 1*/ case b: printf(“n 8089“); break; case c : printf(“n 7079”); break; /*case后有空格*/ case d: printf(“n 6069.“); break; case e: printf(“n 30) r=-1; /*用-1标记不予邮寄*/ else if(weight20) r=0.70; /*r保存实际邮寄费率*/ else if(weight10) r=0.75; else r=0.8; if(r!=-1) money=r*weight+0.2; printf(“n weight:%f,money:%f“,weight,money); else printf(“n cant post.“); 分析该程序,共有4个分支,分别对应weight的取值为 :30, 20且10且=20,=10; 因此若要实的每 个分支都能执行一遍,weight应分别从上述每一范围 中至少取一个值。 考虑到边界容易出错,所以weight应分别取10,20,30作 为测试数据,或直接将30,20 10作为后3个范围中的 测试数据。 测试用例: 35,30 ,20, 10(至少4个测试数据) 或者使用:35,25,15,5,30,20,10(每个范围取 一个测试数据,在加上边界数据供7组)。 5.5 上机调试 三、单步执行(run/step或F7或 F8) 具体方法是:根据某个测试用例

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论