




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 第 4 章 选择型程序设计 1 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 4.1 算法和算法的表示 解决问题确定的方法和有限的步骤 “一个算法,就是一个有穷规则的集合, 其中之规则规定了一个解决某一特定类型的 问题的运算序列。” 对同一个问题,可有不同的解题方法和步 骤 算法决定了程序的质量 例: 求 2 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 算法的要素 两要素: 基本功能操作 + 控制结构 算术运算: 逻辑运算:与 或 非 数据比较: 等于 不等于 数据传送:输入 输出 赋值 顺序结构 功能操作 控制结构分支结构 循环结构 3 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 算法的基本特征 算法 对处理问题的过程的描述 算法的基本特征 有穷性 确定性 有效性 有零个或多个输入 有一个或多个输出 数据结构 对这个过程中所涉及的数据的描述 4 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 例:例:有黑和蓝两个墨水瓶,但却错把黑墨水装有黑和蓝两个墨水瓶,但却错把黑墨水装 在了蓝墨水瓶子里,而蓝墨水错装在了黑墨水在了蓝墨水瓶子里,而蓝墨水错装在了黑墨水 瓶子里,要求将其互换。瓶子里,要求将其互换。 算法分析: l非数值运算问题 l因为两个瓶子的墨水不能直接交换 l解决这一问题的关键: l引入第三个墨水瓶。 l设第三个墨水瓶为红色,其交换步骤: 算法举例 5 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 将黑瓶中的蓝墨水装入红瓶中 将蓝瓶中的黑墨水装入黑瓶中 将红瓶中的蓝墨水装入蓝瓶中 交换结束 6 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 算法的表示 可用不同的方法表示算法,常用的有: 自然语言 传统流程图 结构化流程图 伪代码 PAD图 7 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 例4-2:计算函数M(x)的值。函数M(x)为: 算法分析:这是一个数值运算问题。其中M代表 要计算的函数值,有两个不同的表达式,根据 x的取值决定采用哪一个算式。根据计算机具 有逻辑判断的基本功能,用计算机解题的算法 如下: ax ax cxca abx xM +- + = 2 2 )( )( 用自然语言描述的算法用自然语言描述的算法 8 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 将a、b、c和x的值输入到计算机; 判断xa?如果条件成立,执行第步, 否则执行第步; 按表达式bx+a2计算出结果存放到M中, 然后执行第步; 按表达式a(c-x)+c2计算出结果存放到M 中,然后执行第步; 输出M的值; 算法结束。 9 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 用流程图表示算法 美国国家标准化协会 ANSI(American National Standard Institute) 规定了一些常用的流程图符号 起止框判断框处理框输入/输出框 注释框流向线 连接点 10 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 用流程图表示算法 输入a,b a-c b-a c-b 开始 输出a,b 结束 例 两数交换 11 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 结构化程序设计方法 程序设计的基本目标是用算法对 问题的原始数据进行处理,从而获得所期望 的效果。但这仅仅是程序设计的基本要求。 要全面提高程序的质量,提高编程效率,使 程序具有良好的可读性、可靠性、可维护性 以及良好的结构,编制出好的程序来。 12 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 程序的三种基本结构 顺序结构 l特点: l一个入口,一个出口 l顺序执行 S1 S2 a b 13 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 程序的三种基本结构 选择结构 功能: 判断条件为真时执行 语句,否则跳过 条件 语语句1 语语句2 YN 双选择 语语句 N 条件 Y 单选择 语语句 N 条件 Y 功能: 判断条件为真时执行语 句1,否则执行语句2 14 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 程序的三种基本结构 循环结构 循环体 N 条件 Y 当型循环直到型循环 条件 N Y 循环体 15 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 例: 将求5!的算法 用三种基本结构表示 如果需要将最后结 果打印出来,可在 菱形框的下面加一 个输出框。 t=1 开始 t2t t3t t4t t5t 输出t 结束 16 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 三种基本结构的共同特点 (1)只有一个入口; (2)只有一个出口; (3)结构内的每一部分都有机会被执行到; (4)结构内不存在“死循环”(无终止的循环)。 17 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 结构化程序设计方法 结构化程序设计方法是公认的面向 过程编程应遵循的基本方法和原则。结构化 程序设计方法主要包括: 以三种基本的程序控制结构的组合来 编制程序,从而使程序具有良好的结构; 程序设计自顶而下; 用结构化程序设计流程图表示算法。 18 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 4.2 C语言的语句 语句是组成C源程序的基本单位) C 语 句 指令语句 非指令语句 流程控制语句 表达式语句 数据定义语句(int a;) 编译预处理 宏定义(#define) 文件包含(#include) 条件编译(#ifdef #else #endif) 赋值语句( i = 1; ) 函数调用语句( putchar(c); ) 逗号语句( +a, +b; ) 空语句( ; ) 判断语句( if, switch ) 循环语句( for, while, dowhile ) 转移控制语句(break; continue, return; goto) 复合语句(由一对花括号括起来的一组语句,如: int a; a = 1; printf(“%d”, a); ) 19 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 形式二: u格式: if (expression) 语句组1; else 语句组2; u执行过程: if语句的三种形式 形式一: u格式: if (expression) 语句组1; u执行过程: expr statement 非0 =0 例:if (xy) printf(“%d”,x); expr statement1statement2 非0=0 例: if (xy) max=x; else max=y; (1)if语句中的“表达式”必须用“(”和“)”括起来。 (2)else子句是if语句的一部分,必须与if配对使用,不能单独使用。 (3)当if和else下面的语句组,仅由一条语句构成时,也可不使用复合语句形 式(即去掉花括号)。 例:if (xy) printf(“最大值为:”); printf(“%dn”,x); else printf(“最大值为:”); printf(“%dn”,y); 4.3 if 语句 20 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 #include main() int x,y; printf(“Enter an integer:“); scanf(“%d“, y=x; if(yabsolute value:%dn“,x,y); 例4-7 求一个数的绝对值 运行:Enter an integer:-12 integer:-12-absolute value :12 运行:Enter an integer:12 integer:12-absolute value :12 21 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 #include main() int a,b; printf(“Enter integer a:“); scanf(“%d“, printf(“Enter integer b:“); scanf(“%d“, if(a=b) printf(“a=bn“); else printf(“a!=bn“); 例 2 输入两个整数并判断两数相等否 运行:Enter integer a:12 Enter integer b:12 a=b 运行:Enter integer a:12 Enter integer b:9 a!=b 22 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 expr1 statemnt1 非0 =0 expr2 expr3 statemntnstatemnt3statemnt2 非0 非0 =0 =0 (1)if语句允许嵌套: 所谓if语句的嵌套是指,在“语句组1”或 “语句组2”中又包含有if语句的情况。 (2)if语句嵌套时,else子句与if的 匹配原则:与在它上面、距它最近、且尚未匹配的if配对。书写时注意形成层次; (3)为明确匹配关系,避免匹配错误, 强烈建议:将内嵌的if语句,一律用花括号括起来。 形式三: u格式: if (expr1) 语句组1; else if( expr2) 语句组2; else if( expr3) 语句组3; else 语句组n; u 执行过程: 23 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 else总是和它上面离它最近的未配对的if 配对 if() if() if() else. else. else. 例:if (salary1000) index=0.4; else if (salary800) index=0.3; else if (salary600) index=0.2; else if (salary400) index=0.1; else index=0; if else 配对原则 例:if (salary1000) index=0.4; else if (salary800) index=0.3; else if (salary600) index=0.2; else if (salary400) index=0.1; else index=0; 24 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 例: 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 正确 配对方法:加 输入a=1, b=1, c=3 结果输出为: a!=b 25 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 如:if(a=b if(3) printf(“OK”); if(a) printf(“%d”,a); 说明: u if后面的表达式类型任意 u if . else相匹配 例 考虑下面程序的输出结果: #include main() int x,y; scanf(“%d,%d”, if(xy) x=y; y=x; else x+; y+; printf(“%d,%dn”,x,y); Compile Error! 例 考虑下面程序的输出结果: #include main() int x,y; scanf(“%d,%d”, if(xy) x=y; y=x; else x+; y+; printf(“%d,%dn”,x,y); 26 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 if语句嵌套: l一般形式: if (expr1) if (expr2) statement1 else statement2 else if(expr3) statement3 else statement4 内嵌if 内嵌if if (expr1) if (expr2) statement1 else statement2 内嵌if if (expr1) if (expr2) statement1 else statement3 内嵌if if (expr1) statement1 else if(expr3) statement3 else statement4 else中 内嵌if 27 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 #include main() char c; printf(“Enter a character:“); c = getchar(); if(c = 0 int v1 = 5, v2 = 0; if(a 例4-10 闰年判断算法 /*功能:说明if语句的嵌套格式和用法。*/ #include void main() int year,leap; printf(“Please input the year:“); scanf(“%d“, if (year % 4!=0) leap=0; else if (year % 100 != 0) leap=1; else if (year%400!=0) leap=0; else leap=1; if (leap) printf(“%d is a leap year.n“,year); else printf(“%d is not a leap year.n“,year); 输入y y不能被100整除 T F y能被400整除 T F leap=0 leap =0 leap =1 leap=1 T F y不能被4整除 leap =0=1 不是闰年是闰年 30 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 利用逻辑运算能描述复杂条件的特点,可将上述程序优化如下: include void main() int year; printf(“Please input the year:“); scanf(“%d“, if ( year % 4 = 0 else printf(“%d is not a leap year.n“,year); 31 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 课堂练习 1阅读下列程序,回答问题 : #include void main() int a,b,m,n; scanf(“%d, %d”, m=1; n=1; if (a0) m=m+n; if (a时, 程序的运行结果是什么? (2)当输入为:1,0时, 程序的运行结果是什么? 答: (1)当输入为:1,2时, m=1 n=2 (2)当输入为:1,0时, m=2 n=3 32 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 switch( 表达式) case E1: 语句组 1; case E2: 语句组 2; . case En: 语句组 n; default: 语句组 ; v执行过程: switch 表达式 语句组1 语句组2语句组n 语句组 . E 1E 2En default case switch( 表达式) case E1: 语句组 1; break; case E2: 语句组 2; break; . case En: 语句组 n; break; default: 语句组 ; break; 4.4 switch语句 33 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 v说明: lE1,E2,En是常量表达式,且值必须互不相同 lcase后可包含多个可执行语句,且不必加 l多个case可共用一组执行语句 l语句标号作用,必须用break跳出 l如果无break,找到入口后,将继续执行下去,不 再进行判断; 如: case A: case B: case C: printf(“score60n”); break; 如: case A: printf(“score90n”); printf(“good!n”); case B: case C: printf(“score60n”); 34 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 例4-11 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! 例4-11 switch(score) case 5: printf(“Very good!”); break; case 4: printf(“Good!”); break; case 3: printf(“Pass!”); break; case 2: printf(“Fail!”); break; default : printf(“data error!”); 运行结果:score为5时,输出: Very good! 35 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 例4-12 void main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+;b+; break; case 3: a+;b+; printf(“na=%d,b=%d”,a,b); 运行结果:a=2,b=1 36 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 案例4.4.1 求一元二次方程ax2+bx+c=0的解(a0)。 /*功能:求一元二次方程的解。*/ #include “math.h“ main() float a,b,c,disc,x1,x2,p,q; scanf(“%f,%f,%f”, disc=b*b-4*a*c; if (fabs(disc)1e-6) x1=(-b+sqrt(disc)/(2*a);/*求出两个不相等的实 根*/ x2=(-b-sqrt(disc)/(2*a); printf(“x1=%7.2f,x2=%7.2fn“, x1, x2); 浮点数 else p=-b/(2*a);/*求出两个共轭复 根*/ q=sqrt(fabs(disc)/(2*a); printf(“x1=%7.2f + %7.2f i n“, p, q);/*输出两个共轭复 根*/ printf(”x2=%7.2f - %7.2f i n“, p, q); 虚数输出:p+q i p-q i ,其中这个i是个虚数代表符号 ,要原样输出,例如:2+3i, 2-3i 说明:由于实数在计算机中存储时,经常会有一些微小误差 ,所以本案例判断disc是否为0的方法是:判断disc的绝对值是否 小于一个很小的数(例如10-6)。 38 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 案例4.4.2 从键盘上输入一个百分制成绩score,按下列原则输出其 等级:score90,等级为A;80score 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 40 ( C C语言程序设计)语言程序设计) 第 4 章 选择型程序设计 良好的源程序书写风格注释 必要的注释,可有效地提高程序的可读性,从而提高程 序的可维护性。 在语言源程序中,注释可分为三种情况: (1)在函数体内对语句的注释; (2)在函数之前对函数的注释; (3)在源程序文件开始处,对整个程序的总体说明。 函数体内的语句,是由顺序结构、选择结构和循环结构 等三种基本结构构成的。在什么
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年全国叉车操作A证考试题库(含答案)
- 蒲江保洁服务知识培训班课件
- 蒲城县医院急救知识培训课件
- 葡萄酒知识培训课程课件
- 常用日语考试招生简章及答案
- 常德社工考试真题试卷及答案
- 叉车培训理论考试题库及答案
- 线性运算题目及答案
- 2025年餐厅食品供应商合同标准版模板
- 藏族期末考试最难的题及答案
- DB32/T 3626-2019秸秆有机肥制作技术规程
- 2025四川农商银行社会招聘800人笔试历年典型考题及考点剖析附带答案详解
- 车机联控标准用语29课件
- 电能计量装置错误接线分析-低压三相四线电能表错误接线分析
- 游戏电子合同协议书
- 2025年全国高压电工证(复审)理论考试试题(1000题)附答案
- 2025至2030中国富锂锰基正极材料行业全景调研及竞争规模调查报告
- 挂名法定代表人协议
- 高中物理课程标准2025
- 投资合同书转为借款协议书
- 一年级新生入学行为规范教育课件
评论
0/150
提交评论