C语言程序设计No.5第5章程序设计.ppt_第1页
C语言程序设计No.5第5章程序设计.ppt_第2页
C语言程序设计No.5第5章程序设计.ppt_第3页
C语言程序设计No.5第5章程序设计.ppt_第4页
C语言程序设计No.5第5章程序设计.ppt_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1 第五讲 程序设计 主讲:刘怀亮 E-mail: 经济管理学院信息管理系 选择结构 C 程序设计 2 引例 计算函数值: sin(x)/x x0 y= 1 x=0 需要考虑 (1) 输入x; (2) 判断x值; (3) 根据x值,计算y值; (4) 输出y值; T F 输入x y=1 y=sin(x)/x 输出y 显然(2)(3)顺序结构不能 实现,须引入选择结构 include include void main( ) float x,y; printf(“input x:”); scanf(“%f”, if (x!=0.0) y=sin(x)/x; else y=1; printf(“x=%5.2fny=%7.4fn”,x,y); 关系运算 选择结构 input x: 2 x=2.00 y=0.4546 C 程序设计 3 1、关系运算:对两个值进行“比较运算” 2、关系运算符:、=、= =、!= 高 低 3、优先级别: 算术运算符、关系运算符、赋值运算符 高 低 如:ca+b c(a+b) ab=c (ab)=c a=bc a=(bc) 优先级相同 注意:区分 =与= 1、关系运算符和关系表达式 C 程序设计 4 4、关系表达式:用关系运算符将两个表达式(算术表达 式、关系表达式、逻辑表达式、赋值表达式、字符表达 式)连接起来的式子。 如:x!=0 a!=A a*a+b*ba+b c(a+b) a=bb printf(“please input the first letter of someday:n“); while (letter=getchar()!=E) /* when enter E to exit */ switch (letter) case S:printf(“please input second lettern“); if(letter=getchar()=a) printf(“saturdayn“); else if (letter=getchar()=u) printf(“sundayn“); else printf(“data errorn“); break; case F:printf(“fridayn“);break; case M:printf(“mondayn“);break; case T:printf(“please input second lettern“); if(letter=getchar()=u) printf(“tuesdayn“); else if (letter=getchar()=h) printf(“thursdayn“); else printf(“data errorn“); break; case W:printf(“wednesdayn“);break; default: printf(“data errorn“); /*end switch */ /*end while */ /*end main */ 程序5-001.cpp C 程序设计 10 3 if 语句 一、if语句的三种形式 1、条件执行 if (e) A if (a0) printf(“A is positive.n”); 2、分支选择 if (e) A else B 当e为真时,执行A;否则执行B或后续语句。 if (a0) printf(“A is positive.n”); else printf (A is not positive.n”); AB或空 t e f 条件逻辑表达式语句 if (xy) z=y; y=x; x=z; 说明: A或B都可以是单一语句,也可以是复合语句。 else部分不能独立存在,即else前一定有一个“ ;”, 它必须是 if语句的一部分。 C 程序设计 11 3 if 语句 注意:在C语言中,表达式e的值为非0时,系统均 按“真”处理。 如:if(a) printf(“O.K.”); x=-5; if(x) printf (“O.K.”); y=0; if(y=0) printf (“O.K.”); if(y) printf (“O.K.”); C 程序设计 12 3 if 语句 一、if语句的三种形式 1、条件执行 if (e) A 2、分支选择 if (e) A else B 程序举例: y= 1 x=0 include void main ( ) float x, y; printf (“input x:”); scanf (“%f”, if (x=0) y=1; else y=(x*5+1)/x; printf(“nx=%4.1fny=%4.1fn”,x,y); input x: 2 x=2.0 y=5.5 y1; if (x!=0) y=(x*5+1)/x; C 程序设计 13 3 if 语句 一、if语句的三种形式 3、else if 形式(阶梯式的if-else语句) if (P1) s1 else if (P2) s2 else if (Pn) sn else sn+1 系统从上到下的逐个判断条件P,一旦发现某些 满足时,则执行与它有关的语句Si,并跳过其他 剩余的阶梯。若所有条件均不满足,执行最后一 个else语句或后续语句。 . 一般else与最 近的if匹配。 注意 P1 P2 S2 S1 Pn 假 SnSn+1 真 假真 假真 C 程序设计 14 3 if 语句 例:评价学生成绩 score90 优秀 score80 良好 score70 中 score60 及格 score 60 不及格 P1 P2 S2 P1 Pn 假 SnSn+1 真 假真 假真 include void main( ) int score; printf(“input a score:”); scanf(“%d”, if (score=90) printf(“优秀n”); else if (score=80) printf(“良好n”); else if (score=70) printf(“中n”); else if (score=60) printf(“及格n”); else printf(“不及格n”); input a score: 86 良好 C 程序设计 15 3 if 语句 二、if语句的嵌套 if (P1) if (P2) A else B else if(P3) C else D P1 P2P3 真 真真 假假 假 假 ABCD 例:计算函数 y= #include main( ) float x,y; printf(“input x: ”); scanf(“%f”, if (x=-3.0 等价于:if (x=0) y=1 ; else y=sin(x)/x; C中唯一的一个三目 运算符 计算e1 e1值为非0即真, 计算并返回e2的值 否则计算并返回e3的值。 C 程序设计 18 3 if 语句 5、条件运算符的结合方向是“右结合” 如:ab ? a :cd ? c :d 等价于:ab ? a :(cd ? c :d) 例:写出该程序完成的功能 #include main ( ) int a,b,imax; printf(“input data to a and b:”); scanf(“%d,%d”, imax=ab ? a : b; printf (“ The max is %dn”,imax); printf(“max=%dn”,imax=ab?a:b); printf(“max=%dn”, ab?a:b); 求a、b两个 数中的大数 思考:n个数中 找出最大数或最 小数? 采用循环实现 input data to a and b:12,34 The max is 34 C 程序设计 19 P1 P2 S2 P1 Pn 假 SnSn+1 真 假真 假真 4 switch语句 回顾前面的例子: 评价学生成绩 score90 优秀 score80 良好 score70 中 score60 及格 score 60 不及格 include void main( ) int score; printf(“input a score:”); scanf(“%d”, if (score=90) printf(“优秀n”); else if (score=80) printf(“良好n”); else if (score=70) printf(“中n”); else if (score=60) printf(“及格n”); else printf(“不及格n”); include void main( ) int score; printf(“input a score:”); scanf(“%d”, switch(score/10) case 10 : case 9 : printf(“优秀n”); break; case 8: printf(“良好n”); break; case 7: printf(“中n”); break; case 6: printf(“及格n”); break; default: printf(“不及格n”); C 程序设计 20 4 switch语句 switch语句:亦称多分支选择语句。它比用嵌 套的if语句实现多路分支问题,其程序结构清 晰、易读。 一、格式 switch (e) case c1:语句1 case c2:语句2 case cn:语句n default:语句n+1 表达式e可以是整型、字符型、枚举型 常量表达式ci必须与表达式 类型一致(整型与字符型通用 ) 执行过程: 1.计算表达式e的值; 2.若与常量表达式ci值一致,则 从语句i,开始执行;直到遇 到break语句或switch语句的“” 3.若与任何常量表达式值均不 一致时,则执行default语句, 或执行后续语句。 C 程序设计 21 4 switch语句 如:switch (x) case 1: printf(“statment 1”); break; case 2: printf(“statment 2”); break; default: printf(“default”); 思考:case1、2中没有 break的结果是什么? C 程序设计 22 4 switch语句 说明: 1. switch后的表达式,可为任何类型。 2.表达式的值与某个case后的常量 表达式值相等,就执行该case后的 语句,否则执行default。 3.常量表达式的值必须是唯一的。 4.case与default没有先后次序。 5.常量表达式ci仅仅时语句标号的 作用即只进行匹配,不作条件判断。 6.多个case语句可共用一组执行语句。 (举例说明) switch (e) case c1: 语句1 case c2: 语句2 case cn: 语句n default:语句n+1 如: case A: case B: case C: printf(“60n”); break; 如: case A: printf(“优秀n”); case A: printf(“良好n”); case C: printf(“合格n”); break; C 程序设计 23 5 程序举例 例:物流公司对用户计算运费。收费标准随距离s 变化如下: s void main( ) float s,f,p,w,d; printf(“输入单价、距离和货物重量:”); scanf(“%f,%f,%f”, switch( (int) s/250 ) case 0: d=0; break; case 1: d=0.02; break; case 2: case3: d=0.05; break; case 4: case5: case6: case7: d=0.08; break; case 8: case9: case10: case11: d=0.1; break; default: d=0.15 f=p*s*w*(1-d); printf(“总运费%.2fn”,f); 输入单价、距离和货物重量:100,300,20 总运费588000.00 程序5-003.cpp C 程序设计 25 C 程序设计 26 程序 题目: 要求输出国际象 棋棋盘。 1.程序分析:用i 控制行,j来控制 列,根据i+j的和 的变化来控制输 出黑方格,还是 白方格。 改进程序源代码: #include “stdio.h” main() int i,j; for(i=0;i

温馨提示

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

评论

0/150

提交评论