C程序设计第4章选择结构程序设计.ppt_第1页
C程序设计第4章选择结构程序设计.ppt_第2页
C程序设计第4章选择结构程序设计.ppt_第3页
C程序设计第4章选择结构程序设计.ppt_第4页
C程序设计第4章选择结构程序设计.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

第4章 选择结构程序设计,单分支: if(表达式) 语句; 其他语句;,双分支: if(表达式) 语句1; else 语句2; 其他语句;,多分支: if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式n) 语句n; else 语句n+1; ,4.1引言,输出两个数中的较大值?,#include int main() int a, b; scanf(“%d%d”, ,4.2 关系运算符和关系表达式,1、关系运算符 、=、 = 、!=,2、关系表达式 用关系运算符连接起来的式子。 53、5=3、53、5=3、5=3、5!=3,3、关系表达式的值 关系成立:真、非0 关系不成立:假、0,4.3 逻辑运算符与逻辑表达式,1、逻辑运算符: &、|、!,4、运算规则:!: 原值取反 !0 1 !1 0 &: 两个操作数均为真,结果为真;否则为假 |: 两个操作数均为假,结果为假;否则为真,2、逻辑表达式:用逻辑运算符连接起来的式子,3、逻辑表达式的值:真(非0)、假(0);,例:int a=5; float b=3.5; !a0 !b0 a&b1 a|b1 !a&b0 !a|b1,4、注意,编译器在求解逻辑表达式的值时,采用“非完全求解”的方法,并不是所有的逻辑运算符都被执行,只有在需要执行下一个逻辑运算才能求出表达式的解时,才继续运算。,非完全求解举例,如果已有定义 :int x=1,y=1,z=1;对如下的逻辑表达式: (x=0) & ( y=2) &(z=3) ,表达式的结果是0,x的值被赋值为0, y,z的值保持不变。 (x=5) & ( y=0) &(z=3) ,表达式的结果是0,x, y的值 赋值为5和0,z的值保持不变。 (x=5)| ( y=2) | (z=3) ,表达式的结果是1,x的值被赋值为5, y,z的值保持不变。 (!x)| ( y=0) | (z=3) ,表达式的结果是1,x, y,z的值为1,0,3。,4.4 条件语句,语句形式: if(表达式) 语句; 其他语句; 执行流程:,4.4.1 条件语句的三种形式,1、单分支条件选择if语句,语句形式: if(表达式) 语句1; else 语句2; 其他语句; 执行流程:,2、双分支条件选择if语句,所以,可以借助表达式表示某种条件; 表达式非零,表示条件成立,执行某些动作; 表达式为零,表示条件不成立,不动作或执行另外的动作;, int a, b; scanf(“%d%d”, ,常用“”表示“a大于b”这样的条件: 条件成立时,ab为非零,执行受if控制的语句; 条件不成立时,ab为零,执行受else控制的语句;, int a, b; scanf(“%d%d”, ,常用“”表示“a小于于b”这样的条件: 条件成立时,ab为非零,执行受if控制的语句; 条件不成立时,ab为零,执行受else控制的语句;, = = !=等关系运算符常用来表示大小关系的条件; 原则:条件成 立,表达式的值为非零; 条件不成立,表达式的值为零, int a, b, c; scanf(“%d%d%d”, ,if语句的嵌套,3、多分支选择if语句,语句形式:,if (表达式1) 语句1; else if (表达式2)语句2; else if (表达式n)语句n; else 语句n+1;,if-else匹配原则:就近匹配,例:计算分段函数。,#include ,void main() float x,y; printf(“enter x:“); scanf(“ %f “,else if (x=1) y=x+5; else if (x10) y=2*x; else y=3/(x-10);,printf(“x=%.2f,y=%.2fn“,x,y); ,if(x=10) printf(“not define x.n“);,当多个条件必须同时成立时,才能做某些事情,要借助于“&”运算符来组合各条件成为一个大条件。, int a, b, c; scanf(“%d%d%d”, ,当多个条件之一成立,即可做某些事情,要借助于“|”运算符来组合各条件成为一个大条件。, int time; scanf(“%d”, ,& | !等逻辑运算符常用来表示由多个条件组合而成的大条件; 原则:大条件成 立,逻辑表达式的值为非零; 大条件不成立,逻辑表达式的值为零; (判断闰年),【例4-3】从键盘输入一个字符,判别它的类别,由ASCII码表可知: ASCII值小于32的为控制字符 ASCII值在0和9之间的为数字 ASCII值在A和Z之间为大写字母 ASCII值在a和z之间为小写字母 其余则为其它字符,程序:,#include void main() char c; printf(“Input a character: “); c=getchar(); if(c=0 ,【例4-4】比较两个数的大小关系,有三种结果:大于、小于和等于,采用if语句的嵌套结构来完成。,#include void main() int a,b; printf(“please input a,b: “); scanf(“%d%d“, ,4.5 多分支选择语句,语句一般形式:,switch (表达式) case 常量1: 语句1; case 常量2: 语句2; case 常量3: 语句3; . case 常量n: 语句n; default : 语句n+1; ,根据表达式的不同值,选择不同的程序分支,又称开关语句。,整型 或 字符型,常量表达式的值必须互不相同,否则执行时将出现矛盾,即同一个开关值,将对应多种执行方案。,执行过程?,【例4-6】输入一个数字,输出对应的星期几的英文单词。,#include void main() int a; printf(“input integer number: “); scanf(“%d“, ,程序运行结果: input integer number: 5 Friday Saturday Sunday error,4.5.2 break语句在多分支选择结构中的应用,break case语句后加上break语句; 每当执行到break语句时,立即跳出switch语句体。,将上面的例4-6修改如下:,#include “stdio.h“ void main() int a; printf(“input integer number: “); scanf(“%d“, ,程序运行结果: 5 Friday,【例4-7】学生分数成绩转换为相应的等级成绩,程序流程图:,程序源代码及运行结果,#include void main( ) int s; printf(“Input a score:“); scanf(“%d“, ,程序运行结果: Input a score:65 Your score: 65 D,1、多个case语句可以共用一组执行语句。 2、各case子句的先后顺序可以变动,而不会影响程序执行结果。,4.6 应用举例,【例4-8】输入三个整数,输出最大数和最小数。 算法分析: 首先比较a,b的大小,把大数装入max,小数装入min中 接下来max和min再与c比较,若max小于c,则把c赋予max;如果c小于min,则把c赋予min,因此max内总是最大数,而min内总是最小数。 最后输出max和min的值即可。,程序源代码及运行结果,#include void main() int a,b,c,max,min; printf(“input three numbers: “); scanf(“%d%d%d“, ,程序运行结果: input three numbers: 3 4 5 max=5 min=3,例:企业发放的奖金根据利润提成。从键盘输入当月利润,求应发放奖金总数?,利润x x=10 10x20 20x40 40x60 60x100 100x,(int )x/10,常量 0,1 1,2 2,3,4 4,5,6 6,7,8,9,10 10以上,用这种方法转换后,n出现了在不同区域有重复数字的情况。解决的方法有很多,其中一种是可以采用当x为10的整数倍时,将计算出的n值减1。,使用switch解题的关键,通过分析找到表达式,将问题分成几种情况。,#include “stdio.h“ void main() float x,y; int n; scanf(“%f“,n=(int)x/10; if(int)x/10=x/10) n- ; switch(n) case 0:y=x*0.1;break; case 1:y=x*0.12;break; case 2:case 3:y=x*0.14;break; case 4:case 5:y=x*0.16;break; case 6:case 7:case 8:case 9:y=x*0.18;break; default:y=x*0.2; printf(“y=%.2fn“,y); ,源程序:,【例4-11】任意输入三个数,代表三角形的三条边长,判断能否构成三角形,#include void main() float a,b,c; scanf(“%f,%f,%f“, ,程序运行结果: 5,5,5 equalateral triangle.,小

温馨提示

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

评论

0/150

提交评论