程序流程控制.ppt

上传人:小飞机 文档编号:6138913 上传时间:2023-09-28 格式:PPT 页数:67 大小:294KB
返回 下载 相关 举报
程序流程控制.ppt_第1页
第1页 / 共67页
程序流程控制.ppt_第2页
第2页 / 共67页
程序流程控制.ppt_第3页
第3页 / 共67页
程序流程控制.ppt_第4页
第4页 / 共67页
程序流程控制.ppt_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《程序流程控制.ppt》由会员分享,可在线阅读,更多相关《程序流程控制.ppt(67页珍藏版)》请在三一办公上搜索。

1、程序流程控制,C语言是一种结构化、模块化的通用程序设计语言。通过对程序流程控制的学习,建立运用3种基本结构(顺序结构、分支结构、选择结构)进行编程的思想。,模块一 顺序程序设计,能力目标:,正确认识顺序结构的执行特点根据流程图,写出相应的程序进行顺序程序的设计,任务一 考察顺序结构的执行特点,请观察下面的流程图,1.在该图中运用了哪些流程图框?起止框、输入输出框、一般处理框2.根据流程图,写出相应的C程序。,main()float r,s;scanf(“%f”,在写程序中,注意流程线的方向。在程序中,正确定义变量。顺序结构的执行特点:程序按照语句从上到下的排列顺序依次执行,每条语句必须执行且只

2、能执行一次。,知识盘点:,任务二 熟悉顺序程序,2根据流程图,完成C程序。#include”stdio.h”main()char ch1,ch2;printf(“请输入一个大写字母:”);ch1=getchar();ch2=ch1+32;printf(“相应的小写字母为:”);putchar(ch2);3如果输入的字符不是大字字母,这样的转换还有意义吗?怎样才能避免输入非大写字母?,请看题目:输入一个大写字母,转换成小写字母输出。1.填写流程图,答:这样的转换没有意义,如果要避免输入非大写字母,可以在转换前加一个是否是大写字线的判断。,任务三 设计顺序程序,请看题目:输入2个整数a、b,然后交

3、换a、b的值输出。1填写流程图,2.根据流程图,写出C程序。,main()int a,b,t;scanf(“%d%d”,3.如果不借助中间变量t能使变量a、b的值交换吗?如果能,该如何编程?,t=a;a=b;b=t;,模块二 分支程序设计,能力目标:,根据实际问题,正确书写关系、逻辑表达式正确认识分支结构的执行特点运用if语句的3种形式及switch语句进行分支程序的设计,任务一 认识关系运算符和关系表达式,1.观察C语言提供的6种关系运算符:、=、=、=、!=,2.上机调试程序,记录运行结果,#include”stdio.h”main()int true,false;true=(1=1);f

4、alse=(1=0);Printf(“真=%d,假=%dn”,true,false);,请记录运行结果:,真=1,假=0,3.完成下表:,假,真,假,知识盘点:,关系运算的概念关系运算的优先级关系表达式的概念,任务二 认识逻辑运算符和逻辑表达式,1种逻辑运算符:、!,3写出下列表达式的等价式xy&mn 等价于(xy)&(mn)a!=b|x=y 等价于!x|xy 等价于x7&x+y!=20等价于 3+2&54|!0 等价于,完成下表,0,1,0,(a!=b)|(x=y),(!x)|(xy),(x7)&(x+y!=20),(3+2)&(54)|!0,知识盘点:,逻辑运算符的概念逻辑运算符的优先级逻

5、辑表达式的概念,任务三 书写关系、逻辑表达式,1写出判断一个字符是否是空白符(t、n、)的逻辑表达式:,(ch=)|(ch=n)|(ch=t),2写出判断某一年是否为闰年的逻辑表达式。,()分析:,闰年的条件是符合下列个条件之一:能被整除,但不能被100整除;能被400整除,()请分别写出个条件的逻辑表达式:,year%4=0&year%100!=0year%400=0,(3)如果将个逻辑表达式合并为一个式子,该如何写?,(year%4=0&year%100!=0)|(year%400=0),任务四考察条件控制语句if语句,.考察分支结构的执行特点,请观察下面的流程图:,该流程图中,根据其真假

6、使流程分支的判断条件是什么?该流程图所表示的程序功能是什么?,答:x%6=0,答:判断一个正整数是否是6的倍数。,2认识if语句(第一种形式),()请观察下面的流程图:,该图用if语句表示为:if(x0)x=x+1;,()试写出if语句的一般形式:,()归纳if语句的流程图:,if(表达式)语句,知识盘点:,()题目:输入一个整数,如果该数为正,输出该数。,完成程序:,main()int x;scanf(“%d”,根据程序,画出流程图。,思考:如果要求x的绝对值,用if语句(第一种形式)实现,该如何完成?,(x0),main()int x,y;scanf(“%d”,.认识ifelse语句(第二

7、种形式),()请观察下面的流程图:,真假,该流程图表示的意思是什么?,()if else语句的形式:if(表达式)语句1 else 语句2,(3)请填写流程图:真 假,答:求x的绝对值。,表达式,语句2,知识盘点:,if else语句构造了两路分支的选择结构,也是一种最基本的选择结构。如果“表达式”计算为真,执行语句1;否则执行语句2。其中“语句”部分可以是简单语句或者复合语句。“表达式”可以是关系表达式、逻辑表达式,也可以是算术表达式。,(3)题目:从键盘上输入两个整数x和y,若x2+y2大于10,则输出x2+y2个位上的数字,否则输出两数之和。,请画出流程图:,由流程图的思路,填写程序。#

8、include”stdio.h”main()int x,y,s,l;printf(“请输入2个整数:”);scanf(“%d%d”,(s10),4.认识ifelseif语句,(1)题目:输入一个数x,如果x=10,则y=3x-10,否则,y=2x-1,输出y的值。,该题将面临几种选择?,答:3种选择。,(2)请观察下面的流程图,回答问题。,对照上图形式在图内填空,真,假,真,假,真,假,真,假,真,假,根据上图,写出对应的语句形式。,if(表达式1)语句1else if()语句2else if(表达式3)else 语句4,表达式2,语句3,表达式,语句3,(3)根据所得语句形式,填写程序,并记

9、录上机调试结果。,#include”stdio.h”main()float x,y;printf(“请输入x的值:”);scanf(“%f”,请记录上机调试结果:,y=x;,y=2*x-1;,知识盘点:,ifelseif语句是通过一连串的判断,来实现互斥分支,它排列了一系列的操作,每一种操作是在相应的条件下才能执行。该语句执行时,依次对各个条件进行判断,符合某一条件,则转去执行该条件下的操作,其余部分被跳过;若无条件为真,就执行最后一个else所指定的操作。,5else与if的配对规则,请观察以下程序段和流程图,完成问题。,程序段:if(x7)if(x13)printf(“left!n”);e

10、lse printf(“right!n”);,流程图:,真,真,假,假,真,假,真,假,(1)判断以上2个流程图中,哪一个与程序段相吻合?为什么?,答:根据else与if的配对规则,第二个图与程序段相吻合。,(2)写出该程序段的运行结果。,无结果,left!,right!,6if语句的嵌套,(1)按else与if的配对规则划分下列关系。if(条件1)if(条件2)语句1 else 语句2 else if(条件3)语句3 else 语句4,(2)题目:有一个函数:-1(x0)输出y值。,写法1:main()int x,y;scanf(“%d”,原因:,请判断下列哪些写法是正确的?为什么?,正确。

11、,写法2:if(x=0)if(x0)y=1;else y=0;else y=-1;,原因:,写法3:y=-1;if(x!=0)if(x0)y=1;else y=0;,原因:,正确。,不正确。,任务五 考察switch语句,#include”stdio.h”main()char grade;printf(“请输入成绩等级(A、B、C、D)n”);grade=getchar();switch(grade)caseA:printf(“优秀n”);break;caseB:printf(“良好n”);break;caseC:printf(“及格n”);break;caseD:printf(“不及格n”)

12、;break;default:printf(“输入数据错误!n”);,switch语句部分流程图:,1请阅读下面的程序及流程图,完成问题。,A,B,C,D,default,(1)记录上机调试运行结果:,(2)说明该程序的功能是什么?,(3)思考:如果将程序段中的所有break语句去掉,输入字符C,运行结果是什么?,答:运行结果为:及格不及格输入数据错误!,知识盘点:,请归纳switch语句的一般形式:,预期运行结果:B上机调试结果:,及格,任务六分支的应用,2由上述分析,填写下列流程图。,真,假,真,假,真,假,n50,r=0.8,3根据流程图,填写程序。,4请记录上机调试结果:,n50,r=

13、0.8,模块三 循环程序结构,能力目标:,正确认识循环程序的执行特点运用3种循环语句(while语句、do while语句、for语句)进行循环程序设计运用2个循环辅助语句(break语句、continue语句),更好地控制程序流程,任务一 认识while语句,1初识while语句,(1)思考:在程序设计中,通常会遇到输出一个星号*,可以用一个printf()语句,那么输出5个星号*、10个星号*,甚至更多的星号*,该如何处理呢?,(2)观察下面两个程序,完成问题。,程序一main()printf(“*n”);printf(“*n”);printf(“*n”);printf(“*n”);pri

14、ntf(“*n”);,程序二main()int i=1;while(i+=5)printf(“*n”);,上面两个程序分别实现什么功能?,两个程序中,哪一个简便?在程序中能否用循环语句来实现对重复操作的控制?,答:它们都实现输出5个星号*。,答:程序二简便,在程序中能用循环语句来实现对重复操作的控制。,2学习while语句的形式,(1)请观察下面while语句的形式,完成问题。,两条语句的关键字是什么?,关键字后的括号内是什么表达式?,关键字后的语句部分可以是哪些语句?,(2)试写出while语句的一般形式。,while,关系表达式、逻辑表达式,简单语句、复合语句,while(表达式)语句,3

15、学习while语句的执行过程,(1)请观察while语句的流程,完成问题。,真,假,表达式,(2)请记录该程序的上机调试结果,画出以下程序的流程图,并指出循环条件、循环体及循环控制变量的三个工作。,请记录上机调试结果:,流程图:,循环条件是循环体是循环控制变量是,3个工作分别是、。,I3,printf(“%cn”,ch);,I,I=1,I3,I+,(3)请观察下面2个程序段,完成问题。,语句一I=1;while(I+=10)printf(“hello!n”);,语句二I=1;while(-I=10)printf(“world!n”);,判断下面哪一个程序段是正确的?,循环控制变量更新的趋势是什

16、么?,程序在什么时候才能判断循环是否终止?,语句一,让循环条件为假,判断循环条件时,讨论,用while语句编程求1+2+10之和。(同时画出该程序的流程图),程序:,流程图:,知识盘点:,任务二认识dowhile语句,1学习dowhile语句的形式,(2)试写出dowhile语句的一般形式。,do while,sum=sum+i;i=i+1;,i=10,do While(表达式);,2学习dowhile语句的执行过程,请观察dowhile语句的流程,完成问题。,真,假,语句,表达式,3dowhile语句与while语句的区别,(2)由上述运行结果看出,dowhile语句与while语句的区别是

17、什么?,ABC,*AB,ABC,无结果,答:当第次执行循环体时,因为表达式为“真”,两种循环得到的结果相同;否则,二者结果就不同。(前提:二者循环体中的语句相同),任务三认识for语句,1学习for语句的形式,答:输入10个数,并求这10个数的和。,for(表达式;表达式;表达式)语句,2学习for语句的执行过程,请观察for语句的流程,完成问题。,真,假,3讨论for语句的灵活性,(1)写出以下程序段的运行结果。,(2)讨论:在for语句的表达式1、表达式2、表达式3中可能会出现哪几种情况?,运行结果:,运行结果:,运行结果:,运行结果:,运行结果:,4运用for语句编程,编程求1210之积

18、。(同时画出该程序的流程图),程序:,流程图:,任务四认识循环嵌套,1学习循环嵌套的形式,()请观察下面两个图,完成问题。,(b)图,(2)阅读信息,完成问题。,信息:语言提供的3种循环结构:whiledowhilefor都可以相互嵌套,自由组合。问题:在已有几种循环嵌套形式后,补充3种合法的形式。,嵌套形式:,while()do while()do while();while();,for(;)while(),2观察二重循环,()请阅读程序,完成问题。,程序定义了哪些变量?,程序中采用几重循环嵌套?,程序中外层循环为哪几行?外层循环的循环体中有几条语句?,程序中内层循环为哪几行?内层循环的循

19、环体中有几条语句?,答:两个变量,m和n,答:二重循环,答:外层循环从7行到12行,外层循环的循环体中有2条语句。,答:内层循环从9行到10行,内层循环的循环体中有1条语句。,(2)请观察循环嵌套部分的流程,完成问题。,真,假,真,假,for,1,5,6,完成下表。(该表给出了内外层循环控制变量的变化情况),2 4 6 8 10,3 6 9 12 15,4 8 12 16 20,5 10 15 20 25,(3)请阅读程序,完成问题,并记录上机调试结果。,请记录上机调试结果:,请思考:为什么会出现这种结果?与上例程序有什么区别?,任务五认识循环辅助语句:break语句和continue语句,1

20、学习break语句(1)请阅读程序,完成问题。,该程序for语句部分的循环体内有几条语句?,除了当r10时,可退出for循环外,是否有其他的方式退出for循环?,3条语句。,答:可以通过当V100.0时,执行break语句退出循环。,(2)请观察该程序for语句部分的流程,完成问题。,真,假,假,真,break,从流程上看,循环一定是执行了10次才退出吗?为什么?,请写出该程序的预期结果。请输入圆柱体的高:6,答:不一定,因为当V100.0时,执行break语句退出循环。,体积等于18.840000体积等于75.360001此时r=3,(3)请记录该程序的上机调试结果,并与预期结果比较,有差异

21、吗?,请记录上机调试结果:,差异:,2学习continue语句,()请阅读程序,完成问题,并记录上机调试结果。,记录上机调试结果:,该程序for语句部分的循环体内有几条语句?,答:有2条语句。,(2)请观察该程序for语句部分的流程,完成问题。,真,假,假,真,continue,从流程上看出,什么情况下不输出数据?而输出的数据是具有什么性质的数据?,答:当数据能被7整除时,不输出。而输出的数据具有不能被7整除的性质。,(3)思考:如果该程序不使用continue语句,要实现同样的功能,该如何处理?,知识盘点:,任务六循环的应用,1累加的应用题目:用while语句编程求1+2+3+100的和。,

22、(3)用for语句编程实现以上同样的功能。程序:,i=100,i+,main()int sum,I;sum=0;for(I=1;I=100;I+)sum=sum+I;printf(“1+2+100=%d”,sum);,2累乘的应用题目:编程求210。(用2种方法实现),(1)分析:由题意可知,求的是10个2相乘。程序需要定义2个变量s和,s用于存放乘积,用于计算乘以2的次数(即循环次数)。,(2)根据分析,编写程序,并记录上机调试结果。,方法一:,记录上机调试结果:,方法二:,记录上机调试结果:,3讨论题目:假设有一张无限大的纸,其厚度为0.2mm(毫米),现反复地将其对折,编程计算对折多少次后可以达到珠穆朗玛峰的高度8848m(米)?,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号