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

下载本文档

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

文档简介

教学内容: 6.1 if 语句 6.2 switch 语句 6.3 选择结构程序举例 教学要求: 1掌握if语句的语法和使用方法。 2掌握switch语句的语法和使用方法。 3掌握分支语句的嵌套使用方法。,第6章 选择结构程序设计,例如,某一单位要给职工增加工资,它的规定是:工资低于1000元的职工,每人增加工资100元,超过1000元的职工暂不增加工资。 选择条件: 工资低于1000元吗? 数据处理: 是 增加工资100元, 否则不增加工资 如果增加工资的规定是:工资低于1000元的职工,每人增加工资200元,超过1000元的职工增加工资100元。 选择条件:工资低于1000元吗 数据处理: 是 增加工资200元 否则 增加工资100元,在C语言中,当需要根据选择条件来确定所要做(执行)哪一项数据处理的情况,这样的程序结构,被称为选择结构。,在C语言中表示选择条件,一般用: 关系表达式、逻辑表达式 二 、实现选择结构用什么语句: C语言中实现选择结构所用语句: 条件分支: if 语句 (if else) 开关分支: switch 语句 (switch case),在C语言中,设计选择结构程序要解决的问题: 一 、如何表示选择条件:,1. 第一种形式 (1)语句格式: if(表达式) 语句 语句中的表达式必须用单括号 “(” 和 “ )”括起来。表达式后面语句也可使用复合语句。 (2)语句功能:如果表达式的值为真(T),则执行其后的语句, 否则不执行该语句。 在C语言中,没有逻辑型数据类型。当表达式的值为任何非零值,表示表达式的条件成立;当表达式的值为零值,表示表达式的条件不成立。,6.1 if 语 句,2. 第二种形式 (1)语句格式: if(表达式) 语句1; else 语句2; 说明:else子句(可选)是 if 语句的一部分,必须与 if 配对使用,不能单独使用 (2)语句功能:如果表达式的值为真(非零),则执行语句1,否则执行语句2 。,例6.1 输入两个整数,输出其中的大数。 void main() int a,b,max; printf(“n input two numbers: “); scanf(“%d%d“, ,例6.2 输入两个整数,输出其中的大数。 main() int a, b; printf(“input two numbers: “); scanf(“%d%d“, ,例6.3从键盘输入两个数,按升序输出两个数 #include main() float a, b, t; scanf(“%f,%f“, ,3. 第三种形式,(1) 语句格式 if (表达式1) 语句组1 else if (表达式2) 语句组2 else if (表达式3) 语句组3 else if (表达式4) 语句组4 else 语句组5 若 语句组5 又是一条 if 语句,整个语句最少是一个6个分支的多分支 if 语句。,(2)多分支 if 语句的执行过程 当“表达式1”的值不等于0时,则执行语句组1 ,然后转向下一条语句; 否则,当“表达式2”的值不等于0时,执行语句组2,转向下一条语句; 再否则,当“表达式3”的值不等于0时,执行语句组3,转向下一条语句; 再否则,当“表达式4”的值不等于0时,执行语句组4,转向下一条语句; 再否则,执行语句组5,转向下一条语句;,4. if语句说明 (1) 在三种形式的if语句中,条件表达式通常是逻辑表达式或关系表达式, 但也可以是其它表达式,如赋值表达式等,甚至也可以是一个变量。 (2) 在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用 括起来组成一个复合语句。但要注意的是在右括号之后不能再加分号。,例 6.4 输入 + * - / , 输出对应的单词。 #include main() char ch ; ch = getchar(); if (ch=+) printf(“plusn“); else if (ch=-) printf(“minusn“); else if(ch=*) printf(“multiplyn“); else if (ch=/) printf(“dividen“); else printf(“errorn“); ,5. if 语句与条件运算符 如果在条件语句中,只执行单个的赋值语句时, 常可使用条件表达式来实现。不但使程序简洁,也提高了运行效率。 例 6.5 输入任意三个整数,求三个数中的最大值。 main() int n1,n2,n3,max; scanf(“%d,%d,%d“, ,max= ( n1n2 ) ? (n1n3 ) ? n1 : n3):(n2n3 ) ? n2 : n3);,6if语句的嵌套与嵌套匹配原则 (1)if 语句嵌套,是指,在“语句1”或(和)“语句2”中,又包含有 if 语句的情况。 if 语句嵌套时,else子句与在它上面、距它最近、且尚未匹配的 if 配对。例如: if (ab) s=s+t; else if (a= =b) t=5; /* 语句2是 if 语句*/ else t=2*s;,例 6.6 输入任意三个整数,求三个数中的最大值。 main() int n1,n2,n3 ; scanf(“%d,%d,%d“, ,例6.7 if 语句的嵌套使用 main() int a, b, c, d, x; a=b=c=0; d=20; if ( a ) d=d-10; else if ( d+2 ) if (!c) x=15; else x=25; printf(“d=%d,x=%dn”,d,x) ,说明(1)if后面的“表达式”,除常见的关系表达式或逻辑表达式外,也允许是其它类型的表达式,其数值可以是整型、实型、字符型。,1switch语句的一般形式 switch (表达式) case 常量表达式1: 语句组1 case 常量表达式2: 语句组2 case 常量表达式: 语句组n default:语句组n+1 “表达式” 可以是int、char和枚举型中的一种,每个case后面“常量表达式”的值,必须各不相同,多个case子句,可共用同一语句(组)。,6.2 switch 语句,2执行过程 (1)当switch后面“表达式”的值,与某个case后面的“常量表达式”的值相同时,就执行该case后面的语句组; (2)如果没有任何一个case后面的“常量表达式”的值,与“表达式”的值匹配,则执行default 后面的语句,然后,再执行switch语句的下一条。 case后面的常量表达式仅起语句标号作用,并不进行条件判断。系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断;,3.switch 语句使用说明 (1)在case后的各常量表达式的值不能相同,否则会出现错误。 (2)在case后,允许有多个语句,可以不用 括起来。 (3)各case和default子句的先后顺序可以随意变动。 (4)default子句可以省略不用。 (5)多个case子句,可共用同一语句(组)。,例6.8 输出变量a的值 main() int a=0, i=1; switch( i ) case 0: case 1: a+=2; case 2: case 3: a+=3; default: a+=7; printf(“%dn”,a); ,2个case子句,共用同一语句(组),执行顺序: a+=2; a+=3; a+=7;,4switch语句中break语句使用 switch (表达式) case 常量表达式1:语句组1;break; case 常量表达式2:语句组2;break; case 常量表达式:语句组n;break; default:语句组n+1; 执行过程 当switch后面“表达式”的值,与某个case后面的“常量表达式”的值相同时,就执行该case后面的语句(组);当执行到break语句时,跳出switch语句,转向执行switch语句的下一条。,例6.9 从键盘上输入一个百分制成绩score,按下列原则输出其等级: score90, 等级为A; 80score90, 等级为B; 70score80, 等级为C; 60score70, 等级为D; score60, 等级为E。 main() int score, grade; printf(“Input a score(0100): ”); scanf(“%d”, /*成绩整除10,转化case标号*/,switch (grade) case 10: case 9: printf(“grade=An”); break; case 8: printf(“grade=Bn“); break; case 7: printf(“grade=Cn“); break; case 6: printf(“grade=Dn“); break; case 5: case 4: case 3: case 2: case 1: case 0: printf(“grade=En”); break; default: printf(“The score is out of range!n”); 程序运行情况如下: Input a score(0100): 85 grade=B,例 6.10 计算阶跃函数 y 的值 #include main( ) float x,y; printf ( “input x:“ ); scanf ( “%f “, ,当 X0 y=1 X=0 y= 0 X0 y= -1,6.3 选择结构程序举例,例6.11 已知某公司员工的保底薪水为500,某月所接工程的利润profit(整数)与利润提成的关系如下(计量单位:元): profit1000 没有提成; 1000profit2000 提成 10%; 2000profit5000 提成 15%; 5000profit10000 提成 20%; 10000profit 提成 25%。 算法设计要点: 提成的变化点都是1000的整数倍(1000、2000、5000、),如果将利润profit整除1000,则当: profit1000 对应 0、1 1000profit2000 对应 1、2 2000profit5000 对应 2、3、4、5 5000profit10000 对应 5、6、7、8、9、10 10000profit 对应 10、11、12、,为解决相邻两个区间的重叠问题,最简单的方法就是:利润profit先减1(最小增量),然后再整除1000即可: profit1000 对应0 1000profit2000 对应1 2000profit5000 对应2、3、4 5000profit10000 对应5、6、7、8、9 10000profit 对应10、11、12、 main() long profit; int grade; float salary=500; printf(“Input profit: “); scanf(“%ld“, ,switch(grade) case 0: break; /*profit1000 */ c

温馨提示

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

评论

0/150

提交评论