c语言电子教案.doc

上传人:飞****2 文档编号:50960781 上传时间:2022-10-17 格式:DOC 页数:77 大小:61KB
返回 下载 相关 举报
c语言电子教案.doc_第1页
第1页 / 共77页
c语言电子教案.doc_第2页
第2页 / 共77页
点击查看更多>>
资源描述

《c语言电子教案.doc》由会员分享,可在线阅读,更多相关《c语言电子教案.doc(77页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第三章第三章第三章第三章 CCCC程序流程设计程序流程设计程序流程设计程序流程设计 教学目的教学目的教学目的教学目的:C流程设计是编写程序的主要内容,通过这一章的学习,使学生掌握结构化程序设计的三种结构(顺序、选择、循环),能把实际问题通过数字化,设计算法,用C语言程序中的语句描述出来,从而解决具体问题。 重点难点重点难点重点难点重点难点:选择语句和嵌套的选择语句的执行过程分析;循环语句和嵌套循环语句的执行过程分析。C程序设计中的常用算法应用。 3.13.13.13.1算法算法算法算法 计算机尽管可完成许多极其复杂的工作但实质上这些工作都是按照人事先编好的程序的规定进行的,所以常把程序称为计算

2、机的灵魂。经过对程序设计方法的探讨得出如下公式: 算法算法算法算法+数据结构数据结构数据结构数据结构=程序程序程序程序 程序就是在数据的某些特定表示方式和结构的基础上对抽象算法的具体表述。数据结构是程序处理的对象,而处理的方法就是算法。 3.1.1 3.1.1 3.1.1 3.1.1 算法的性质与组成要素算法的性质与组成要素算法的性质与组成要素算法的性质与组成要素 算法的性质 算法就是进行操作的方法和操作步骤。计算机程序是用某种程序设计语言描述的解题算法。通常有以下性质: 解题算法是一有穷动作序列。 此动作序列只有一个初始动作。 序列中的每一个动作只有一个后继动作。 序列终止表示问题得到解答或

3、没有解答 。 算法的组成要素 算法含有两大组成要素: 一是操作:高级语言中所描述的操作主要包括:算术运算、逻辑运算、关系运算、函数运算、I/O操作等。 二是控制结构:算法由一系列操作组成。同一序列按不同的顺序执行,就会得出不同的结果。控制结构即如何控制组成算法的各操作的执行顺序。三种结构是: 顺序结构 执行顺序与程序的书写顺序相同。 选择结构 在执行到某一语句时,要进行判断,从中选择执行路径。 循环结构 一条或多条语句重复执行若干遍。 3.1.23.1.23.1.23.1.2算法的描述算法的描述算法的描述算法的描述 流程图与算法的结构化 三种结构的流程图: 1 顺序 分支 循环语句1 语句2

4、语句3 条件成立 语句1 语句2 条件 0 用辗转相除法求两个数的最大公约数的流程图描述: 用流程图表示算法灵活、自由、形象直观,可以表示任何算法。但流程图中的转移会使程序难以阅读和维护。称为BS程序(一碗面条) 用N-S图描述算法 N-S图的每一种基本都是一个矩形,整个算法可像堆集木一样堆成。 用PAD图描述算法 PAD图即问题分析图。 伪代码与逐步细化程序设计方法 流程图、N-S图、PAD图是在种描述算法的三种图形工具。还可用伪代码来描述,伪代码是用介于自然语言和计算机语言之间的的文字符号算法描述工具,无固定格式和语法规则,通常是借用某种高级的控制结构,中间操作用自然语言,也可程序设计语言

5、。数据结构中常用这种形式的语言描述。 按自顶向下的方法,从全局出发,抽象和概括算法,主要描述“做什么”,把问题分为几个子问题。逐步细化,对“如何做”作出考虑,算法中程序设计语言的成份越来越来多。 3.23.23.23.2C语句描述算法语句描述算法语句描述算法语句描述算法 程序就是对计算机要执行的一组操作序列的描述。组成源程序的基本单位是语句:一类是操作;一类是控制。 3.2.1表达式语句表达式语句表达式语句表达式语句 C语言是一种表达式语言,所有操作运算都通过表达式来实现。 表达式语句可分为以下三种基本类型: 赋值语句 x=1; y=sin(x); 函数调用语句 printf(This is

6、a C program.n); 空语句,只有一个;没有表达式的语句 Input a,b R=a%b R0 A=b;b=r; R=a%b; Out b END 如: for(x=1;xb) t=a;a=b;b=t; if (ac) t=a;a=c;c=t; if (bc) t=b;b=c;c=t; printf(%d,%d,%dn,a,b,c); 此程序的流程序如下: 基本思想:先把a,b两个数从小到大排列,再用a和c进行比较,然后b和c进行比较,排出从小到大次序。 分析当a=3,b=1,c=-1它们值的变化情况。 3.3含有else子句的if语句 语句形式如下: if (表达式) 语句1 el

7、se 语句2 if与else必须成对出现。 表达式是C语言中合法的表达式。 语句1和语句2是C语言中可执行语句, 如果是多于一条语句,应用括起来,语句1后不能少“;”号。 执行过程:如果表达式为非0(真)执行语句1,然后执行if语句的下一语句;如果表达式为0(假),执行语句2,然后执行if语句下一语句。 程序举例: 当x输入6和4时程序 main() int x; scanf(%d,&x); if(x+5) printf(%d,x); else printf(%dn,x-); 执行的结果? 练习题: 1输入两个不相等的整数分别给x,y,输出其中最大的。 关系表达式:xy 2. 输入一个数判别它

8、能否被3整除,若能输出“YES”,如不能输出“NO”。 关系表达式:x%3= =0 3. 输入一个数判别它是否为偶数,若是输出“YES”,如不是输出“NO”。 关系表达式:x%2= =0 4. 输入一个数判别它是否为负数,若是输出“YES”,如不是输出“NO”。 关系表达式:x0 5.输入一个数判别它能否被3和7整除,若能输出“YES”,如不能输出“NO”。 关系表达式:x%3= =0&x%7= =0 条件成立 语句1 语句2 在if语句中嵌套有的else的if语句(一): 在不带else和带else语句的语句和语句1和语句2中出现if语句就是嵌套的if语句,通常是在条件判断较多时采用。分析该

9、形式语句的执行是比较困难的,需要多看程序或多编程序才行。 嵌套形式有如下: if ( 表达式1) if ( 表达式2) 语句1 else 语句2 else 语句3 程序举例: main() int x,y; scanf(%d,&x); if (x!=0) if (x0) y=1; else y=0; printf(y=%dn,y); 在else语句中嵌套if语句(三): 该种形式的嵌套,是else在之后的语句中有if语句。 嵌套形式有如下: if ( 表达式1) 语句1 else ?=0) y=1; else y=-1; printf(y=%dn,y); (学生分数等级确定) main() i

10、nt g; scanf(%d,&g); if (g=90) printf(An); else if (g=80) printf(Bn); else if (g=70) printf(Cn); else if (g=60) printf(Dn); else printf(En); 条件表达式构成的选择结构 用C语言的if语句在程序中可构成选择结构;C语言中还提供了一种特殊的运算条件运算符,由此构成的表达式也可形成简单的选择结构,这种选择结构可以表达式的形式内嵌在允许出现表达式的地方,使得可根据不同的条件使用不同的表达式。(类似于Excel中的IF()函数) 条件运算符: ? : ,唯一的一个三目

11、运算符,要求三个对象。 由条件运算符构成的条件表达式: 表达式1? 表达式2 : 表达式3 条件表达式的运算功能: 表达式1的值为非0时,求出表达式2的值,此时表达式2的值就是整个条件表达式的值;若表达式1的值为0时,求出表达式3的值,此时表达式3的值就是整个条件表达式的值。 例如:x=5,y=10,则max=xy?x:y的值max等于多少? 条件运算的优先级 优于赋值运算,但低于逻辑、关系、算术运算。 y=x10?100:200; printf(“abs(x)=%d”n,x0?(-1)*x:x)(输出x的绝对值) 程序举例:用条件表达式求三个数中的最大和最小数并输出。 main() int

12、a,b,c,max,min; scanf(%d%d%d,&a,&b,&c); max=ab?a:b; min=ac?max:c; min=minc?min:c; printf(max=%d,min=%dn,max,min); 3.33.33.33.32222switchswitchswitchswitch语句及用语句及用语句及用语句及用switchswitchswitchswitch和和和和breakbreakbreakbreak构成的选择结构构成的选择结构构成的选择结构构成的选择结构 switch语句的格式: switch (表达式) case 常量表达式1:语句1; case 常量表达式2

13、:语句2; case 常量表达式n:语句n; default :语句n+1; 说明:switch,case,default都是关键字。 语句1到语句n+1可以是一条也可是多条,也可以不写。 常量表达式和case间要有空格。 switch语句的执行过程: 首先计算表达式的值,然后在case的常量表达式中找出与其相等的标号,如有相等的执行该标号以后的所有语句;如果没有,若有default则执行default标号后的语句,否则跳过switch语句,什么也不做。 程序举例: main() int g; scanf(%d,&g); switch(g/10) case 10: case 9: printf

14、(An); case 8: printf(Bn); case 7: printf(Dn); case 6: printf(En); default : printf(Fn); 在switch语句中使用break语句 由上面的程序看出,switch语句执行结果和要求的是不一致的,因此必须和break语句联合使用,才能输出正确的结果。break语句的作用就是断开switch语句的执行。用语句重新修改输出分数等级的程序。程序举例: main() int g; scanf(%d,&g); switch(g/10) case 10: case 9: printf(An); break; case 8:

15、printf(Bn); break; case 7: printf(Dn); break; case 6: printf(En); break; default : printf(Fn); 例题:当a0请将以下语句改写成switch语句。 if (a30) m=1; else if (a40) m=2; else if(a50) m=3; else if (a60) m=4; else m=5; 语句标号与goto语句 语句标号: 在程序行的位置,用用户定义标识符的规定,在其标识后加上“:”该标识符就是一个标号。 如:flag: stop0:等都是标号。 可用语句 goto flag;来使程序

16、执行转向。 goto语句称为无条件转语句,使用形式如下: goto 语句标号; 作用:把程序执行转向标号所在位置的语句。但无条件转语句的使用,破坏了程序的可读性,一般不采用。 3.43.43.43.4循环结构循环结构循环结构循环结构 3.4.1 3.4.1 3.4.1 3.4.1 whilewhilewhilewhile语句和用语句和用语句和用语句和用whilewhilewhilewhile语句构成的循环结构语句构成的循环结构语句构成的循环结构语句构成的循环结构 while循环的一般形式 由while语句构成的循环语句也称为“当”循环语句,一般形式如下: while(表达式) 循环体 例如:

17、while(i0)printf(“*”);i+; 说明: while是关键字,括号中的表达式用来控制循环是否执行。 循环体是重复执行的部分,可以是一条和多条语句,多条语句应用括起来。 while执行过程:首先计算表达式的值,当值为非0时, 执行一次循环体,转去判断表达式值是0还是非0; 当表达式的值为0时,退出循环。(这种循环语句可 一次也不执行)在使用该循环语句时,要注意的是在 表达式中有一个变量与循环体中的变量同名,当循环 体执行的过程中可使表达式的值由非0变为0,这样才 能使循环正常结束,否则会造成死循环。 while循环举例(一): 程序举例: 例 编程序求1+2+3+100的值。 变

18、量i提供1到100之间的数。 变量sum存放累加的和。(累加单元先要清0) 程序如下: main() int i,sum; sum=0;i=1; while(i=1e-4) pi=pi+t;n+=2.0;s=-s;t=s/n; pi=pi*4;printf(“pi=%fn”,pi); 3.4.3.4.3.4.3.4.2 2 2 2 dodododo-whilewhilewhilewhile一般形式一般形式一般形式一般形式 do-while语句的一般形式: do 循环体 while(表达式); do和while都是关键字。循环体是重复执行的语句,多于一条语句应用大括号括起来。表达式是C语言中的合

19、法表达式。 do-while执行过程,流程所示: 首先执行循环体语句,判断表达式的值,非0 转回去继续执行循环体;如果是0退出循环体。 这种循环语句同样和while循环一样表达式中含有变量和 循环体中的变量相对应,当循环体执行时,可使表达式的 值由非0变为0,循环才能正常结束。该循环语句的循环体 至少执行一次(先执行后判断)。 do-while举例: 求1+1/2+1/3+直到累加项小于10-4为止。 变量i提供累加项的分母。 变量sum存放累加和。流程图: 程序如下: main() float i,sum; sum=0.0; i=1.0; do sum=sum+1.0/i; i=i+1; w

20、hile(1.0/i=1e-4); printf(“sum=%f”,sum); 循环体 表达式 3.4.3.4.3.4.3.4.2 2 2 2 forforforfor语句的一般格式语句的一般格式语句的一般格式语句的一般格式: for语句一般格式: for (表达式1;表达式2;表达式3) 循环体 for是关键字,表达式1,表达式2和表达式3都是 C语言的合法表达式。循环体如有多于一条语句, 应用括起来。 for语句的执行过程如流程图所示: 首先计算表达式1的值,判断表达式2的值, 若非0,执行循环体,计算表达式3的值,然后 转去判断表达式2的值;若为0,退出循环体, 去执行for的下一语句。

21、该循环语句的循环体可 一次也不执行,因为是先判断后执行。 该循环语句的循环次数是可预先知道。 for语句特殊形式(一): for (循环变量赋初值;循环条件;循环变量增量) 语句 for (i=1;i=100;i+) sum=sum+i;(流程图所示) 1.省略表达式1,应在for语句前给循环变量赋初值。 for ( ;i=100;i+) sum=sum+i; 2.省略表达式2,循环为死循环。 for (i=1; ;i+) sum=sum+i; 3.表达式3可省略,但要加入适当语句在循环体中。 for (i=1;i=100;) sum=sum+i;i+; 4.可省略表达式1和表达式3,但之前给

22、循环变量赋初值。 for (;i=100;) sum=sum+i;i+; 5.三个表达式都省略,为死循环。 for ( ; ; ) 语句 for语句特殊形式(二): 6.表达式1和表达式3的灵活性。 for (sum=0;i=100;i+) sum=sum+i; for (sum=0;i=1;i=100;i+) sum=sum+i; for (i=0;j=100;i=j;i+,j+) k=j+i; for (i=1;i=100;i+,i+) sum=sum+i; 与for (i=1;i=100;i+=2) sum=sum+i;相同 for语句执行次数的计算: 如何计算循环次数呢?在以下语句中:

23、 for (表达式1;表达式2;表达式3) 循环体 表达式1的值循环的初值;表达式2中的某些值是循环的终值; 表达式3中的某些值是循环的步长; 知道这些参数后,就可以计算出循环执行的次数。 如:for(k=1;k6;k+) 循环初值是1;终值是5;步长是1; 循环执行的次数=(循环终值-循环初值)/循环步长+1; (5-1)/1+1=5(次) for(i=1;i=100;i+) 循环初值是1;终值是100;步长是1 ; (100-1)/1+1=100(次) for(k=2;k0;y-)循环初值是10;终值是1;步长是-1 ; (1-10)/-1+1=10(次) 嵌套循环次数的计算: 表达式 表

24、达式1 循环体 表达式3 for(k=2;k6;k+,k+) 外循环的次数为2次 for(j=k;j6;j+) 内循环的次数k=2时为:2,3,4,5;执行了4次;k=4时为:4,5;执行了2次。整个循环执行的次为4+2=6次。 for语句的举例: 例:求n!.。即计算1234n的值。 程序如下: (ec55.c) main() int i,s,n; s=1; scanf(“%d”,&n); for(i=1;i=n;i+) s=s*i; printf(“s=%dn”,s); 循环语句的嵌套(一): 当一个循环语句不能解决问题时,就需要二重循环,即一个循环体内又完整地包含了另一个循环,称为循环嵌

25、套。前面介绍的三种循环语句都可以互相嵌套,嵌套还可以多层,但每一层都是完整的。 多重循环是如何执行的呢? 首先由外循环进入内循环,内循环执行完后,再执行外循环,只有外循环执行完,整个循环才结束。 例:用嵌套循环输出由“*”组成的平行四边形(i控制行,k控制每行空格,j控制打印几个*号) 。 main() int i,j,k; for(i=0;i=2;i+) for(k=1;k=i;k+) printf( ); for(j=0;j=3;j+) printf(*); printf(n); 循环语句的嵌套(二): 例:输入6名学生5门课的成绩,分别统计每个学5门课的平均成绩。(i,j分别控制人和分数

26、的门数) #define N 5 #define M 6 main() int i,j; float g,sum,ave; for(i=1;i=N;i+) sum=0; for(j=1;j=M;j+) scanf(%f,&g); sum=sum+g; ave=sum/M; printf(No.%d ave=%5.2fn,i,ave); break和continue语句在循环语句中的作用 break语句 前面介绍break语句可以跳出switch语句体 。在循环结构中,应用break可跳出本层循环,从而提前结束本层循环。 例:break语句的使用 main() int i,s; s=0; for

27、(i=1;i5) break; printf(s=%dn,s); continue 语句 该语句是结束本次循环,跳过本次循环体中尚未执行的语句,接着再一次进行循环条件的判定。注意:并没有使整个循环结束。 该在while和do-while语句中直接返回到循环执行的条件判断;for语句要返到计算表达式3的位置,然后再判断表达式2。 例:continue语句的使用 main() int k=0,i,s=0; for(i=1;i5) printf(*i=%d,s=%d,k=%dn,i,s,k); continue; k=k+s; printf(i=%d,s=%d,k=%dn,i,s,k); 既有break语句以有continue 语句 main() int a,b; for (a=1,b=1;a=100;a+)

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

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com