已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计 第四章 选择结构程序设计 if语句: 1.单分支if语句 2.双分支if语句 3.多分支if语句 选择结构有两种: switch 语句 按给定条件进行判断,按判断后的不同情况进行不同处理。 l 形式二(一般形式): l 格式:if (expression) statement1 else statement2 l 执行过程: nif语句常用的两种形式 n形式一(缺省形式): n格式:if (expression) statement 执行过程: 表达式 语句 非0 0 例:if (xy) printf(“%d”,x); 表达式 语句1语句2 非00 例:if (xy) max=x; else max=y; if语句(条件分支语句) 【例4-1】在两个数中取大数。 omain() o int num1,num2,max; oprintf(“n input two numbers: “); scanf(“%d%d“, o max=num1; o if(maxnum2) printf(“max=%dn“,num1); else printf(“max=%dn“,num2); o 如:if(a=b if(3) printf(“OK”); if(a) printf(“%d”,a); if(s=2) printf(“hello”); if(s=2,s main() int x,y; scanf(“%d,%d”, if(xy) x=y; y=x; else x+; y+; printf(“%d,%dn”,x,y); Compile Error! 说明: 错误信息: misplaced else in function main 如:if(a main() int x,y; printf(“Enter integer x:“); scanf(“%d“, y=x=0?2*x+1:0; printf(“when X=%d,f(x)=%dn”,x,y); 运行:Enter integer x:10 when X=10,f(x)=21 Enter integer x:-1 when X=-1,f(x)=0 例 求分段函数的值 if(x=0) y=2*x+1; else y=0; + main() int x,y; printf(“Enter integer x:“); scanf(“%d“, if(x) y=1; else y=-1; printf(“when X=%d,y=%dn“,x,y); 运行:Enter integer x:10 when X=10,y=1 Enter integer x:0 when X=0,y=-1 例 if(x!=0) = -1 != = ) 0( ) 0(1 x x y 多分支if语句:if-else if o其格式为: oif(表达式1) o语句1 oelse if(表达式2) o 语句2 o o else if(表达式n) o 语句n o else 语句n+1 o【例3-3】将学生成绩由百分制转化为等级制。规则如下: o 85分(含)以上为A级。 o 70分(含)以上且85分以下为B级。 o 60分(含)以上且70分以下为C级。 o 60分以下为D级。 main() float score; printf(“n please input a score:“); scanf(“%f“, if(score=85) printf(“the score %f is A n“,score); else if(score=75) printf(“ the score %f is B n“,score); else if(score=60) printf(“the score %f is C n“,score); else printf(“the score %f is D n“,score); 程序运行结果如下: please input a score:89 the score 89.000000 is A if语句嵌套 例: #include “stdio.h” main() int x=4,y=5,z=2,max; max=x; if(zy) if(zx) max=z; else if(yx) max=y; printf(“max=%d”,max); 结果? 缺省 时,else总是和它上面离它最近的未配对的 if 配对 if() if() if() else. else. else. if else 配对原则: omain() o o int x=100,y=10,a=30,b=20,k1=10,k2=6; o if(ab) oif(b!=10) oif(!k1)x=1; oelse if(k2) x=10; o else x=20; oprintf(“x =%dn“,x); o 运行结果: x=10 例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”); 修改: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”); 实现if else 正确配对 方法:加 实现if else 正确配对方法 注意:书写格式不能 代替程序逻辑 if语句嵌套一般形式: if (expr1) if (expr2) statement1 else statement2 内嵌if if (expr1) if (expr2) statement1 else statement2 内嵌if if (expr1) statement1 else if(expr3) statement2 else statement3 内嵌if if (expr1) if (expr2) statement1 else statement2 else if(expr3) statement3 else statement4 内嵌if 内嵌if omain() oint x,y; oprintf(”n input x :”); oscanf(”%d”,x); oif(x main() int x,y; printf(“Enter integer x,y:“); scanf(“%d,%d“, if(x!=y) if(xy) printf(“XYn“); else printf(“XY Enter integer x,y:12,12 X=Y 例 输入两数并判断其大小关系 switch语句(开关语句)v 一般形式: v 执行过程: switch() case : case : . case : default: 的值与某一case后面的值匹配 时,则执行此case后面的所有的,直至遇 到break语句或switch的结束“”,否则,执行default后 的。 一般是一个整数表达 式(或字符表达式) v 说明: l case后面是常量表达式,且值必须互不相同 l case和常量表达式之间要有空格 l case后可包含多个可执行语句,且不必加 l 常量表达式起语句标号作用,跳出必须用break语句 l 多个case可共用一组执行语句 l switch可嵌套 l 完全可以用if语句或if语句的嵌套来实现。 如: switch(z) case A: case B: case C: printf(“score60n”); break; case F: 如: switch(z) case 1: case 2: case 2: . 如: switch(z) case A: i+; k-; printf(“An”); break; case F: 例 switch(score) case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!”); case 2: printf(“Fail!”); default : printf(“data error!”); 运行结果:score为5时,输出: Very good! Good! Pass! Fail! data error! 如: int x=3,y=7; switch(z) case x+y: o【例】输入17中的数字,将其转换成相应的星期英文单词。 omain() o int num; o scanf(”%d”, o switch(num) o case 1:printf(”Mondayn”); break; ocase 2:printf(”Tuesdayn”); break; ocase 3 :printf(”Wednesdayn”); break; ocase 4:printf(”Tursdayn”); break; ocase 5:printf(”Fridayn”);break; ocase 6:printf(”Saturdayn”);break; ocase 7:printf(”Sundayn”);break; odefault:printf(”errorn”); o o 若无break? o【例4-6】编写程序测试是数字、空白、还是其他字 符。 omain() o o int c; o switch(c) o ocase 0: ocase 1 : ocase 2 : ocase 3 : ocase 4 : ocase 5 : ocase 6 : ocase 7 : ocase 8 : ocase 9 : oprintf(”this is a digitn”); break; ocase : ocase n : ocase t : oprintf(”this is a blankn”); break; odefault: oprintf(”this is a charactern”); break; o o 补充举例: 路程s越远,每公里运费越低。 折扣的标准如下: s250km 没有折扣 250s500 2折扣 500s1000 5折扣 1000s2000 8折扣 2000s3000 10折扣 3000s 15折扣 设每公里每吨货物的基本运费 为p,货物重为w,距离为s,折扣 为d,则总运费f 的计算公式为: fp*w*s*(1-d) 折扣的“变化点”都是250倍数 分析折扣变化的规律: 若s为整型,则c与折扣d的关系为: c=0 d=0 c=1 d=2% c=2、3 d=5% c=4、5、6、7 d=8% c=8、9、10、11 d=10% c=12、13、14、 d=15% 若c=s/250,则折扣d如下: c=3000) c=12; else c=s/250; switch (c) case 0:d=0; break; case 1:d=2; break; case 2: case 3:d=5; break; 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.0); printf(“%15.4fn”,f); 程序: ? 能 o练习: o输入一个由两个数据和 一个算术运算符组成的表达式 ,根据运算符完成相应运算,并输出结果。 #i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 船舶安全小课件
- 实验室安全培训课件
- 小学校园消防安全课件下载
- 2025年安全员B证考试试题一【b卷】附答案详解
- 国家职业资格四级(秘书)题库及答案201105
- 2025年国考申论真题(地市级)及参考答案题型大全
- 专升本计算机复习题及答案
- 环境工程专业知识点测试题库及答案详解
- 企业管理-文案策划岗位职责及岗位要求 SOP
- 干烧能力自测题及高分答案解析指南
- JJG 597-2025 交流电能表检定装置检定规程
- 变电安全培训课件
- 焊接与切割作业安全管理制度
- 电机研发助理岗位面试问题及答案
- 护理查房心梗
- DB54∕T 0275-2023 民用建筑节能技术标准
- 护理N2层级竞聘
- 质量环境安全管理制度
- 妊娠期肺动脉高压麻醉管理
- 狮子林课件教学课件
- 2025年揭阳揭东农商银行微贷中心招聘题库带答案分析
评论
0/150
提交评论