C语言程序的流程控制

上传人:豆浆 文档编号:50770118 上传时间:2018-08-10 格式:PPT 页数:82 大小:503KB
返回 下载 相关 举报
C语言程序的流程控制_第1页
第1页 / 共82页
C语言程序的流程控制_第2页
第2页 / 共82页
C语言程序的流程控制_第3页
第3页 / 共82页
C语言程序的流程控制_第4页
第4页 / 共82页
C语言程序的流程控制_第5页
第5页 / 共82页
点击查看更多>>
资源描述

《C语言程序的流程控制》由会员分享,可在线阅读,更多相关《C语言程序的流程控制(82页珍藏版)》请在金锄头文库上搜索。

1、C语言程序设计第3章 C语言程序的流程控制1/82C语言程序设计主要内容3.1 算法 3.2 判断 3.3 选择型程序设计 3.4 循环型程序设计2C语言程序设计3.1 算法一个程序应包括: 对数据的描述。在程序中要指定数据的类型和数 据的组织形式,即数据结构(data structure) 对操作的描述。即操作步骤,也就是算法( algorithm) Nikiklaus Wirth提出的公式:数据结构+算法=程序3C语言程序设计3.1.1 算法的组成要素与基本性质 1. 算法的性质:算法就是进行操作的方法和步 骤,算法有如下一些性质: 是一有穷动作序列; 此动作序列只有一个初始动作; 序列中

2、每一动作仅有一个后继动作; 序列终止表示问题得到解答或问题没有解答4C语言程序设计2. 算法的组成要素操作。在高级语言中所描述的操作主要是包 括:算术运算、逻辑运算、关系运算、函数 运算、位运算、I/O运算等。 控制结构。控制结构是指如何控制组成算法 的一系列操作的执行顺序。结构化程序设计 方法由三种基本控制结构组成:顺序结构、 选择结构和循环结构。5C语言程序设计3.1.2 算法描述工具 1. 流程图6C语言程序设计2 N-S图灵活的流线是程序中隐藏的祸根。针对这一弊病, 1973年I.Nassi和B.Shneiderman 提出了一种无流 线的流程图,称为N-S图。N-S图的每一种基本结构

3、都是一个矩形框。整个算 法可以像堆积木一样堆成。 N-S图保留了流程图形象、直观的优点,且去掉了 容易导致程序非结构化的流线。7C语言程序设计 首先,从问题的全局出发,给出高度概括、抽象 的算法,即说明“做什么”。实际上,这一步是 把问题分解为几个子问题或子功能,这时常常用 自然语言来描述。 然后,是在子问题一级的描述算法,即是对全局 算法的细化,算法中已逐步含有具体程序设计语 言的成份。 最后,随着算法的不断细化,逐步进入“如何做 ”的考虑,算法中程序设计语言的成份越来越多 ,当最后把算法全部细化为程序设计语言时,“ 如何做”的问题也就解决了。3. 伪代码 伪代码是介于自然语言与计算机语言之

4、间的文 字符号算法描述的工具。它无固定的、严格的 语法规则,通常是自然语言与程序设计语言的 混合体。 过程:“做什么”“如何做” 自顶项下、逐步细化过程8C语言程序设计3种基本结构ABAB流程图N-S图PAB真假 PBA真假PA假真当P为真AAP真假A直到P为真9C语言程序设计3.2 判断 3.2.1 命题的“真、“假与C语言中的逻辑值 C语言用非0值表示“真”(通常为1), 用0值表示“假”。10C语言程序设计3.2.2关系运算与关系表达式大于 = 大于或等于 = 等于 != 不等于 双目、左结合性 两个优先级:,=的优先级高于=和!= 关系运算符的优先级低于算术运算符11C语言程序设计关系

5、表达式例题设: char c=k;int i=1,j=2,k=3,z; z=3-1=i+1278; z=i+(j%4!=0); z=a+5118C语言程序设计3.3 选择程序设计19/82C语言程序设计3.3.1 ifelse结构的应用if (expression) statement1 elsestatement2estatement1statement2TF20C语言程序设计例3.3 求绝对值S1: 输入一个数 S2: 求其绝对值 S3: 输出绝对值S1:输入x S2:若x void main(void) double x;scanf(“%lf“,if(xy,则 max=x否则 max=y

6、; S3: 输出max23C语言程序设计#include void main(void) /输入两个整数,输出其中的大数。long x,y,max;scanf(“%ld%ld“,if(xy)max=x;else max=y;printf(“The max value is %ldn“,max); 输入两个整数,输出其中的大数程序24C语言程序设计例3.4 在3个数中取最大数S1: 输入3个数 S2: 求最大数 S3: 输出最大数S1:输入x,y,z S2:求最大数S2.1 将x,y中较大者存入maxS2.2 将max,z中较大者存入 max S3: 输出max25C语言程序设计例3.4 在3个

7、数中取最大数程序 #include void main(vodi) int x,y,z,max;scanf(“%d%d%d“,if(xy)max=x;else max=y;if(maxz);else max=z;printf(“Max=%dn“,max); 26C语言程序设计例3.4 在3个数中取最大数(2)27C语言程序设计void main(void) /程序2 int x,y,z,max;scanf(“%d%d%d“,max=x;if(yz) if(yx) max=y; elseif(zx)max=z;printf(“The max value is %ldn“,max); 28C语言程

8、序设计void main(void)/错误程序 int x,y,z,max;scanf(“%d%d%d“,max=x;if(yz)if(yx) max=y; elseif(zx)max=z;printf(“The max value is %ldn“,max); 29C语言程序设计例3.5 解一元二次方程 ax2+bx+c=0 30C语言程序设计 #include #include #define E 1e-7 void main(void) /2,-4,2; 1,4,1; 4,1,1;double a,b,c;scanf(“%lf%lf%lf“,if(fabs(a) void main(vo

9、id) float score;char grade;scanf(“%f“,if(score=90) grade=A;else if(score=80) grade=B;else if(score=70) grade=C;else if(score=60) grade=D;else grade=E;printf(“The grade is %cn“, grade); 34C语言程序设计3.3.3 switch结构的应用 switch(表达式) case 常量表达式1:语句组1; break;case 常量表达式2: 语句组2; break;case 常量表达式n: 语句组n;break;def

10、ault:语句组n+1;break; 35C语言程序设计 void main(void) /例3.7 int a;printf(“input integer number: “);scanf(“%d“,switch (a)case 1:printf(“Mondayn“);break;case 2:printf(“Tuesdayn“); break;case 3:printf(“Wednesdayn“);break;case 4:printf(“Thursdayn“);break;case 5:printf(“Fridayn“);break;case 6:printf(“Saturdayn“);

11、break;case 7:printf(“Sundayn“);break;default:printf(“errorn“); 36C语言程序设计void main(void) /例3.8 char c;c=getchar();switch(c) case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:printf(“is a digitn“);break;case :case t:case n:printf(“is a whiten“);break;default:printf(“is a charn“);br

12、eak; 37C语言程序设计注意事项 switch后的表达式为整型 在case后的各常量表达式的值不能相同 只能测试是否相等、不能测试关系或逻辑表 达式。 C99要求switch结构至少可以包含1023个 case子结构。 switch结构允许嵌套例如:例3.9,联想猜词游戏38C语言程序设计 Ada, Algol, Basic, BCDL, C, C+, C#39C语言程序设计条件表达式 表达式1? 表达式2: 表达式3 三元、右结合、优先级仅高于赋值运算例3.10 计算a+|b| 公式:r = b0?a+b:a-b例3.11 求两数较大者 公式:max=ab?a:b;40C语言程序设计3.

13、10 计算a+|b|的值 #include void main(void) float a,b;printf(“Input 2 reals:“);scanf(“%f%f“,printf(“%f+|%f|= %fn“,a,b,b0?a+b:a- b); 41C语言程序设计例 3.11 输入2数,求较大数 #include void main(void) float a,b,max;printf(“Input 2 reals:“);scanf(“%f%f“,max=ab?a:b;printf(“The max is %fn“,max); 42C语言程序设计3.4 循环程序设计 3.4.1 迭代穷举

14、算法 3.4.2 while结构 3.4.3 do-while结构 3.4.4 for结构 3.4.5 循环结构的中途退出与 重复周期的中途结束43C语言程序设计3.4.1 迭代与穷举迭代与穷举典型的循环结构 迭代是一个不断用新值取代旧值,或由旧值 递推得出变量的新值的过程。 穷举是对问题的所有可能状态一一测试,直 到找到解或将全部可能状态都测试过为止。44C语言程序设计例3.12 人口增长问题 我国现有13亿人,按年0.2%的增长速度, 10年后将 有多少人? 设现有人口数为m,则第一年后人口变为:m=m*(1+0.2%) 将m的旧值用新值替代1.初值=13 2.迭代公式:m=m*(1+0.

15、2%) 3.迭代次数:101.初值 2.迭代公式 3.迭代次数或终止标志45C语言程序设计while结构首先计算表达式e,若为 真,则执行循环体语句 ,然后再次计算表达式e ,重复上述过程,直至 表达式e的值为假,结束 循环。while(e)s;while(e)sesFT46C语言程序设计例3.17 人口增长问题程序 #include void main(vodi) int i=1; double m=13.0; while(i void main(vodi) int i=1; double m=13.0; while(i void main(vodi) int fib1=1,fib2=1;int fib,i=3; while(i #include #define E0 0.00005 double sq_root(double a); void main(void) double f=2.0;printf(“The root is %fn“,sq_root(f); double sq_root(double a) double x; x=a;dox=(x+a/x)*0.5;while(fabs(x*x-a)=E0);return x; 54C语言程序设计例3.20 输入多个整数,求最大数 #include

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号