欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    教学内容if语句switch语句选择结构程序举例.ppt

    • 资源ID:3151134       资源大小:191.52KB        全文页数:37页
    • 资源格式: PPT        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    教学内容if语句switch语句选择结构程序举例.ppt

    教学内容: 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 语句 switch 语句,在C语言中,设计选择(分支)结构程序要解决的问题: 一 、如何表示选择条件:,1. 第一种形式 (1)语句格式: if(表达式) 语句 语句中的表达式必须用单括号 “(” 和 “ )”括起来。表达式后面语句也可使用复合语句。 (2)语句功能:如果表达式的值为真(T),则执行其后的语句, 否则不执行该语句。 在C语言中,没有逻辑型数据类型。当表达式的值为任何非零值,表示表达式的条件成立;当表达式的值为零值,表示表达式的条件不成立。,6.1 if 语 句,2. 第二种形式 (1)语句格式: if(表达式) 语句1; else 语句2; 说明:else子句(可选)是 if 语句的一部分,必须与 if 配对使用,不能单独使用 (2)语句功能:如果表达式的值为真(T),则执行语句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“, ,例6.4 输入任意三个数,按从小到大的顺序排序输出。 main() int a, b, c, temp; printf(“Please input three numbers:“); scanf(“%d,%d,%d“, ,3条并列单 分支语句,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.5 输入 + * - / , 输出对应的单词。 #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“); ,例6.6 输入任意三个整数,求三个数中的最大值。 main() int n1,n2,n3,max; scanf(“%d,%d,%d“, ,max=n1; if (n2max) max=n2;,程序运行情况如下: Please input three nbers:11,22,18 The three nbers are:11,22,18 max=22 本例中的第1个if语句,可优化为如下不带else子句的形式: max=n1; if (n2max) max=n2; 优化的基本思想是: 首先取一个数预置为max(最大值),然后再用max依次与其余的数逐个比较,如果发现有比max大的,就用它给max重新赋值,比较完所有的数后,max中的数就是最大值。,5. if 语句与条件运算符 如果在条件语句中,只执行单个的赋值语句时, 常可使用条件表达式来实现。不但使程序简洁,也提高了运行效率。 例 6.7 输入任意三个整数,求三个数中的最大值。 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.8 输入任意三个整数,求三个数中的最大值。 main() int n1,n2,n3 ; scanf(“%d,%d,%d“, ,例6.9 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.10 输出变量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.11 从键盘上输入一个百分制成绩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.12 case 语句的嵌套使用 main() int a=2, b=7, c=5; switch (a0) case 1: switch(b0) case 0: printf(“”); break; case 1: printf(“!”); break; case 0: switch(c= =5) case 0: printf(“*”); break; case 1: printf(“#”); break; default: printf(“$”); break; default: printf(“ ,例 6.13 计算阶跃函数 y 的值 #include main( ) float x,y; printf ( “input x:“ ); scanf ( “%f “, ,当 X0 y=1 X=0 y= 0 X0 y= -1,6.3 选择结构程序举例,例6.14 求一元二次方程ax2+bx+c=0的解(a0)。 #include “math.h“ main() float a, b, c, disc, x1, x2, p, q; scanf(“%f,%f,%f”, ,else p=-b/(2*a); /*求出两个共轭复根*/ q=sqrt(fabs(disc)/(2*a); /*输出两个共轭复根*/ printf(“x1=%7.2f + %7.2f in“, p, q); printf(”x2=%7.2f - %7.2f in“, p, q); 本案例判断disc是否为0的方法是:判断disc的绝对值是否小于一个很小的数:1e-6,#include main() float a,b,c,s,x1,x2; double t; scanf(“%f%f%f“, ,例6.15 已知某公司员工的保底薪水为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 */ case 1: salary += profit*0.1; break; case 2: case 3: case 4: salary += profit*0.15; break; case 5: case 6: case 7: case 8: case 9: salary += profit*0.2; break; default: salary += profit*0.25; printf(“salary=%.2fn“, salary); ,例6.16 运输费用的计算 #include #include main() int c, s; float p, w, d, f; printf(“please input p,w,s:“); scanf(“%f,%f,%d“,s: 路程 w: 货物重量 p:运价 d: 折扣率 f: 总运费,case 4: case 5: case 6: case 7:d=8;break; case 8: case 9: case 10: case 11:d=10;break; case 12:d=15;break; f=p*w*s*(1-d/100) printf(“Total freight is:%10.2fn“,f); ,同 学 们 再 见,程 序 设 计 基 础,

    注意事项

    本文(教学内容if语句switch语句选择结构程序举例.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开