C语言程序流程设计课件_第1页
C语言程序流程设计课件_第2页
C语言程序流程设计课件_第3页
C语言程序流程设计课件_第4页
C语言程序流程设计课件_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言程序流程设计,1,第三章 C 程序的流程设计,电子课件制作: 李秀梅,C语言程序流程设计,2,3.1 算法,算法的性质与组成要素 算法的性质:就是进行操作的方法和步骤。 算法的组成要素: 操作:包括算术运算、逻辑运算、关系运算、函数运算、位运算等; 控制结构:三种基本控制结构;顺序结构、选择结构、循环结构; 算法的描述 流程图 伪代码与逐步细化的程序设计方法,C语言程序流程设计,3,C程序的三种基本结构,顺序结构;,A,B,顺序结构,选择结构,A,P,A,P,当 型 循 环,直到型循环,选择结构;,循环结构;,假,真,假,真,C语言程序流程设计,4,例1:三个数中取最大数;example

2、1.c,输入三个数a,b,c; 从a,b,c中找出最大值赋给max; 输出max;,调用 scanf 函数; 设计一个max3 函数; 调用 printf 函数;,第一阶段,第二阶段,第三阶段 设计max3函数 float max3(float a,float b,float c) float m; if (ab) m=a; else m=b; if(mc) m=c; return (m); ,第四阶段 设计 main 函数 void main(void) float a, b, c, max; printf(“intput 3 number a b c:”); scanf(“%f%f%f”,

3、 ,C语言程序流程设计,5,3.2 用C语句描述算法,C语言的语句用来向计算机系统发出指令。一个语句编译后产生若干条机器指令。 语句按功能分为两类:即操作运算语句和流程控制语句; C语言只有可执行语句,无非执行语句; 一个源文件由若干函数和预编译命令组成,一个函数由数据定义部分和执行语句组成。,C语言程序流程设计,6,C程序,源程序文件1,源程序文件 i,源程序文件n,预编译命令,函数1,函数n,数据定义部分,执行部分(语句),C程序的结构图,C语言程序流程设计,7,C语句的分类,表达式语句; 赋值语句; 如:i=1; y=sin(x); 函数调用语句; printf(“ hello,cn”)

4、; 空语句; 只有一个分号 ; 逗号表达式语句; 如: i=2, j=3; a=(a=6, a*3, a+3); 控制语句,共9种: if()else (条件语句); for( ); while(); do while()(循环语句) continue(结束本次循环); break(中止执行 switch 或循环语句); switch (多分支选择); goto(无条件转向) return (函数返回); 复合语句。,C语言程序流程设计,8,1). if (表达式) 语句1 else 语句2,2). if (表达式) 语句,二选一结构,3.3 选择型程序设计,C语言程序流程设计,9,ifels

5、e 结构的应用 先对表达式进行判断,若为真(非0),就执行分结构S1;否则执行分结构S2; 可退化为简单的 if 条件语句; else 子句不能单独使用,只能作为if 语句的一部分,与if 配对使用; 如果if 和else 后面有多个操作语句,此时要用花括号“ ”将几个语句括起来成为一个复合语句。,C语言程序流程设计,10,/* 计算三角形的面积 example3.c */ / #include #include void main( ) float a, b, c, s, area; printf(输入三角形的边长a, b,c: n); scanf(%f,%f,%f, ,C语言程序流程设计,

6、11,/* 逻辑表达式的应用, 判断闰年. exam4.c 闰年的条件: 1) 能被4整除,不能被100整除; 2) 能被4整除,又能被400整除 */ #include void main( ) int year; printf(input the year: ); scanf(%d, ,C语言程序流程设计,12,ifelse 结构可以嵌套; 一般形式: if (表达式1) if ( 表达式2) 语句1 else 语句2 else if (表达式3) 语句3 else 语句4; 不平衡的ifelse 结构会增加阅读和理解程序的困难; 正确的缩进格式有助于理解,但程序的语法关系与书写格式无关;

7、 从最内层开始,else 总是与它上面最近的(未曾匹配的)if 配对。 ifelse 不匹配时,适当增加花括号可保证逻辑关系的正确性;,C语言程序流程设计,13,如 x=0,y=1,z= 2;判断1)和2)的 z的结果;example5.c 1)if (x ) if ( y) z=y; else z= -y; 2) if (x ) if ( y) z=y; else z= -y;,C语言程序流程设计,14,switch语句,else if 语句,多选一(多分支选择结构),C语言程序流程设计,15,表达式1,表达式2,表达式3,表达式4,语句3,语句4,语句2,语句1,3). if (表达式1)

8、 语句1 else if (表达式2) 语句2 else if (表达式3) 语句3 else 语句n,假,假,假,假,真,真,真,真,语句5,多选一结构,C语言程序流程设计,16,else if 结构的应用 该结构执行时,依次对各个条件进行判断测试,符合某一条件就转去执行该条件后面的操作,其它部分将被跳过;如无一条件为真,就执行else 后面的操作;如最后else 不存在,该结构就不执行任何操作。,C语言程序流程设计,17,例:求二元一次方程的根,算法设计: 当 时,方程无解; 当 时,方程由一个实根 -c/b; 当 时,方程有二实根; 当 时,方程有二虚根;,第一种方法: 用if 语句嵌套

9、; 第二种方法:用else if 语句,Example7.c,C语言程序流程设计,18,例:求二元一次方程 的根,二实根; 二虚根; 令:,Example7.c,则方程的根可表示为:,C语言程序流程设计,19,void Equation(int a, int b, int c) / if 嵌套 float p,q; int det; if(a = 0) if(b = 0) printf(no root due to input errorn); else printf(the single root is: %fn, -(float)c/b); else det=b*b-4*a*c; p=b/

10、(2.0*a); if( det0) q=sqrt(-det)/(2.0*a); printf(complex root, x1=%.3f+%.3fi, x2=%.3f-%.3fin, p,q,p,q); else q=sqrt(det)/(2.0*a); printf(real root,x1=%.3f, x1=%.3fn,p+q,p-q); ,C语言程序流程设计,20,/ else if 结构 void Equation(int a, int b, int c) float p,q; int det; if(a = 0 ,作业题:设计一个计算5次样条函数的程序,C语言程序流程设计,22,循

11、环结构 循环结构的组成: 进入循环条件; 循环体; 退出循环条件; 循环结构的形式: while 结构: dowhile 结构; for 结构;,3.4 循环型程序设计,C语言程序流程设计,23,循环结构的两种算法: 穷举 对问题的所有可能状态一一测试,直到找到解或将全部可能状态都测试过为止; 两种控制方法: 计数法:先确定循环次数,完成测试次数后,循环结束。 标志法:达到某一目标后,使循环结束。 如录取新生;白钱买百鸡问题;搬砖问题; 迭代 迭代是不断由旧值推出变量的新值的过程。 如人口增长问题; 兔子繁殖问题;方程求解等问题;,C语言程序流程设计,24,While 结构的应用 While的

12、一般形式: While(表达式) 循环体语句 While 语句的执行步骤: (1)求表达式的值,若非零,执行(2),若值为零,执行(4); (2)执行循环体内语句; (3)转向执行(1); (4)结束While循环,执行循环体后的语句; 当循环体包含一个以上语句时,应用花括号括起来,成为一复合语句; 注意循环的边界值;,C语言程序流程设计,25,/* 爱因四坦的阶梯问题; example11.c 条件:ladder%2=1, ladder%3=2 ladder%5=4, ladder%6=5, ladder%7=0 */ #include void main() int ladder=7; w

13、hile(ladder%3!=2 | ladder%5!=4 | ladder%6!=5) ladder += 14; printf(flight of step = %dn,ladder); ,C语言程序流程设计,26,例2:百钱买百鸡问题。 鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、母、雏各几何?,解题基本思路: 不定解方程:,三个变量的取值范围: cock: 019 中的整数; hen: 033 中的整数 chick: 0100 中的整数,满足不定解方程即为解,(1) (2),或:cock: 019 中的整数; hen: 033 中的整数 chick=100 -coc

14、k-hen,满足方程(2)即为解,C语言程序流程设计,27,/* 百钱买百鸡问题; example2.c 条件:cock+hen+chick=100; cock*5+hen*3+chick/3=100; cock= hen= chick= ? */ #include void main() int cock=0, hen, chick; while(cock = 19) hen=0; while(hen = 33) chick=100-cock-hen; if(cock*5+hen*3+chick/3 = 100 ,C语言程序流程设计,28,for 结构的应用 一般形式: for(表达式1;

15、表达式2; 表达式3) 循环体语句 执行步骤如下: (1)计算表达式1; (2)计算表达式2,若值非0,执行(3);若值为0,执行(6); (3)执行循环体语句; (4)计算表达式3; (5)转向执行(2); (6)结束循环,执行循环体外面的语句;,for,C语言程序流程设计,29,/* 打印九九乘法表 example13.c P91 */ #include void main() int i, j; for(i=1; i=9; i+)printf(%6d,i); printf(n); for(i=1; i=54; i+)printf(-); printf(n); for(i=1; i=9;

16、i+) for(j=1; j=9; j+) printf(%6d,i*j); printf(n); ,C语言程序流程设计,30,三种循环语句的异同,循环变量的初始化位置不同; while和for循环是先判断表达式,后执行循环体语句; 两种循环可以相互替代; 都可以用break语句跳出循环,执行循环体后面的语句;用continue语句结束本次循环; 例:爱因四坦的阶梯问题; example12.c,C语言程序流程设计,31,3.5 限定流程转向语句,break 语句; 把流程从所在的循环结构或多路选择结构之后,终止执行该结构。 continue 语句; 提前结束本次循环,然后再根据循环条件判断是否进入下次循环。 函数调用和返回 函数调用使流程转向所调用的函数体; return 语句的功能使流程返回主调函数; goto 语句; 使流程无条件转向标号指定的语句;破坏程序的结构性,一般禁用。,C语言程序流程设计,32,#include #include void main() int i; double e,a,e0=1e-10; for(i=1, a=1.0, e=1.0; ;i+) a/= i; e+= a; if(fabs(a)e0) break; printf(e=%lfn,e); ,C基本语句一览,C语言程序流程设计,34,循环结构应用举例,兔子繁殖问题;(fibonacci数

温馨提示

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

评论

0/150

提交评论