《程序流程控制.pptx》由会员分享,可在线阅读,更多相关《程序流程控制.pptx(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、任务一任务一 考察顺序结构的执行特点考察顺序结构的执行特点请观察下面的流程图1.在该图中运用了哪些流程图框?起止框、输入输出框、一般处理框2.根据流程图,写出相应的C程序。开始输入半径:rS=3.14*r*r输出面积:s结束main()float r,s;scanf(“%f”,&r);s=3.14*r*r;printf(“s=%fn”,s);第1页/共66页q在写程序中,注意流程线的方向。q在程序中,正确定义变量。q顺序结构的执行特点:程序按照语句从上到下的排列顺序依次执行,每条语句必须执行且只能执行一次。知识盘点:知识盘点:第2页/共66页任务二任务二 熟悉顺序程序熟悉顺序程序2根据流程图,
2、完成C程序。#include”stdio.h”main()char ch1,ch2;printf(“请输入一个大写字母:”);ch1=getchar();ch2=ch1+32;printf(“相应的小写字母为:”);putchar(ch2);3如果输入的字符不是大字字母,这样的转换还有意义吗?怎样才能避免输入非大写字母?请看题目:输入一个大写字母,转换成小写字母输出。1.填写流程图开始输入大写字母ch1ch2=ch1+32输出小写字母ch2结束答:这样的转换没有意义,如果要避免输入非大写字母,可以在转换前加一个是否是大写字线的判断。第3页/共66页任务三任务三 设计顺序程序设计顺序程序请看题目
3、:输入2个整数a、b,然后交换a、b的值输出。1填写流程图2.根据流程图,写出C程序。开始输入a,b输出交换前a,b的值输出交换后a,b的值结束main()int a,b,t;scanf(“%d%d”,&a,&b);printf(“交换前a=%d,b=%dn”,a,b);t=a;a=b;b=t;printf(“交换后a=%d,b=%dn”,a,b);3.如果不借助中间变量t能使变量a、b的值交换吗?如果能,该如何编程?t=a;a=b;b=t;第4页/共66页模块二 分支程序设计能力目标:根据实际问题,正确书写关系、逻辑表达式正确认识分支结构的执行特点运用if语句的3种形式及switch语句进行
4、分支程序的设计第5页/共66页任务一任务一 认识关系运算符和关系表达式认识关系运算符和关系表达式1.观察C语言提供的6种关系运算符:、=、y&mn 等价于(xy)&(mn)a!=b|x=y 等价于!x|xy 等价于x7&x+y!=20等价于 3+2&54|!0 等价于 完成下表表达式表达式的值(35)(35)!(32)010(a!=b)|(x=y)(!x)|(xy)(x7)&(x+y!=20)(3+2)&(54)|!0第8页/共66页知识盘点:知识盘点:q逻辑运算符的概念q逻辑运算符的优先级q逻辑表达式的概念第9页/共66页任务三任务三 书写关系、逻辑表达式书写关系、逻辑表达式1写出判断一个字
5、符是否是空白符(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)第10页/共66页任务四任务四考察条件控制语句考察条件控制语句ifif语句语句.考察分支结构的执行特点请观察下面的流程图:开始输入一个正整数xx%6=0输出“yes!”输出“no!”
6、结束该流程图中,根据其真假使流程分支的判断条件是什么?该流程图所表示的程序功能是什么?答:x%6=0答:判断一个正整数是否是6的倍数。第11页/共66页2认识if语句(第一种形式)()请观察下面的流程图:x0 x=x+1该图用if语句表示为:if(x0)x=x+1;()试写出if语句的一般形式:()归纳if语句的流程图:表达式语句if(表达式)语句第12页/共66页知识盘点:知识盘点:第13页/共66页()题目:输入一个整数,如果该数为正,输出该数。完成程序:main()int x;scanf(“%d”,&x);if printf(“%d”,x);根据程序,画出流程图。思考:如果要求x的绝对值
7、,用if语句(第一种形式)实现,该如何完成?(x0)main()int x,y;scanf(“%d”,&x);if(x=0)y=x;if(x0y=xy=-x 真假该流程图表示的意思是什么?()if else语句的形式:if(表达式)语句1 else 语句2(3)请填写流程图:真 假语句1答:求x的绝对值。表达式语句2第15页/共66页知识盘点:知识盘点:qif else语句构造了两路分支的选择结构,也是一种最基本的选择结构。如果“表达式”计算为真,执行语句1;否则执行语句2。其中“语句”部分可以是简单语句或者复合语句。“表达式”可以是关系表达式、逻辑表达式,也可以是算术表达式。第16页/共66
8、页(3 3)题目:从键盘上输入两个整数x x和y y,若x x2 2+y+y2 2大于1010,则输出x x2 2+y+y2 2个位上的数字,否则输出两数之和。请画出流程图:由流程图的思路,填写程序。#include”stdio.h”main()int x,y,s,l;printf(“请输入2个整数:”);scanf(“%d%d”,&x,&y);s=x*x+y*y;if l=s%10;printf(“%d”,l);else printf(“%d”,x+y);(s10)第17页/共66页4.4.认识ififelseelseifif语句(1)题目:输入一个数x,如果x=10,则y=3x-10,否则
9、,y=2x-1,输出y的值。该题将面临几种选择?答:3种选择。第18页/共66页(2)请观察下面的流程图,回答问题。x=10y=xy=2*x-1y=3*x-10对照上图形式在图内填空表达式1语 句 1语 句 2表达式3 语 句 4真假真假真假真假 真假根据上图,写出对应的语句形式。if(表达式1)语句1else if()语句2else if(表达式3)else 语句4表达式2语句3表达式语句3第19页/共66页(3)根据所得语句形式,填写程序,并记录上机调试结果。#include”stdio.h”main()float x,y;printf(“请输入x的值:”);scanf(“%f”,&x);
10、if(x=10)y=3*x-10;else printf(“y的值为:%.2fn”,y);请记录上机调试结果:y=x;y=2*x-1;第20页/共66页知识盘点:知识盘点:ifelseif语句是通过一连串的判断,来实现互斥分支,它排列了一系列的操作,每一种操作是在相应的条件下才能执行。该语句执行时,依次对各个条件进行判断,符合某一条件,则转去执行该条件下的操作,其余部分被跳过;若无条件为真,就执行最后一个else所指定的操作。第21页/共66页5else与if的配对规则请观察以下程序段和流程图,完成问题。程序段:if(x7)if(x7x7x13输出left!输出right!真真假假真假真假第2
11、2页/共66页(1)判断以上2个流程图中,哪一个与程序段相吻合?为什么?答:根据else与if的配对规则,第二个图与程序段相吻合。(2)写出该程序段的运行结果。X的取值运行结果61218无结果left!right!第23页/共66页6if语句的嵌套(1)按else与if的配对规则划分下列关系。if(条件1)if(条件2)语句1 else 语句2 else if(条件3)语句3 else 语句4第24页/共66页(2)题目:有一个函数:-1(x0)输出y值。写法1:main()int x,y;scanf(“%d”,&x);if(x0)y=1;else y=0;printf(“x=%d,y=%dn
12、”,x,y);原因:请判断下列哪些写法是正确的?为什么?正确。第25页/共66页写法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;原因:正确。不正确。第26页/共66页任务五任务五 考察考察switch语句语句#include”stdio.h”main()char grade;printf(“请输入成绩等级(A、B、C、D)n”);grade=getchar();switch(grade)caseA:printf(“优秀n”);break;caseB:printf(“良好n”);brea
13、k;caseC:printf(“及格n”);break;caseD:printf(“不及格n”);break;default:printf(“输入数据错误!n”);switch语句部分流程图:1请阅读下面的程序及流程图,完成问题。优秀良好及格不及格输入数据错误gradeABCDdefault第27页/共66页(1)记录上机调试运行结果:(2)说明该程序的功能是什么?(3)思考:如果将程序段中的所有break语句去掉,输入字符C,运行结果是什么?答:运行结果为:及格不及格输入数据错误!第28页/共66页知识盘点:知识盘点:第29页/共66页请归纳switch语句的一般形式:第30页/共66页预期
14、运行结果:B上机调试结果:及格第31页/共66页任务六任务六分支的应用分支的应用第32页/共66页2由上述分析,填写下列流程图。n10n100r=1.0r=0.9r=0.7真假真假真假n50r=0.8第33页/共66页3根据流程图,填写程序。4请记录上机调试结果:n50r=0.8第34页/共66页模块三 循环程序结构能力目标:正确认识循环程序的执行特点运用3种循环语句(while语句、do while语句、for语句)进行循环程序设计运用2个循环辅助语句(break语句、continue语句),更好地控制程序流程第35页/共66页任务一 认识while语句1初识while语句(1)思考:在程序
15、设计中,通常会遇到输出一个星号*,可以用一个printf()语句,那么输出5个星号*、10个星号*,甚至更多的星号*,该如何处理呢?(2)观察下面两个程序,完成问题。程序一main()printf(“*n”);printf(“*n”);printf(“*n”);printf(“*n”);printf(“*n”);程序二main()int i=1;while(i+=5)printf(“*n”);上面两个程序分别实现什么功能?两个程序中,哪一个简便?在程序中能否用循环语句来实现对重复操作的控制?答:它们都实现输出5个星号*。答:程序二简便,在程序中能用循环语句来实现对重复操作的控制。第36页/共6
16、6页2学习while语句的形式(1)请观察下面while语句的形式,完成问题。两条语句的关键字是什么?关键字后的括号内是什么表达式?关键字后的语句部分可以是哪些语句?(2)试写出while语句的一般形式。while关系表达式、逻辑表达式简单语句、复合语句while(表达式)语句第37页/共66页3学习while语句的执行过程(1)请观察while语句的流程,完成问题。表达式语 句真假表达式第38页/共66页(2)请记录该程序的上机调试结果,画出以下程序的流程图,并指出循环条件、循环体及循环控制变量的三个工作。请记录上机调试结果:流程图:循环条件是循环体是循环控制变量是 ,3个工作分别是 、。I
17、3printf(“%cn”,ch);II=1I3I+第39页/共66页(3)请观察下面2个程序段,完成问题。语句一I=1;while(I+=10)printf(“hello!n”);语句二I=1;while(-I=10)printf(“world!n”);判断下面哪一个程序段是正确的?循环控制变量更新的趋势是什么?程序在什么时候才能判断循环是否终止?语句一让循环条件为假判断循环条件时第40页/共66页讨论用while语句编程求1+2+10之和。(同时画出该程序的流程图)程序:流程图:第41页/共66页知识盘点:第42页/共66页任务二认识dowhile语句1学习dowhile语句的形式(2)试
18、写出dowhile语句的一般形式。do whilesum=sum+i;i=i+1;i=10do While(表达式);第43页/共66页2学习dowhile语句的执行过程请观察dowhile语句的流程,完成问题。语句表达式真假语句表达式第44页/共66页3dowhile语句与while语句的区别(2)由上述运行结果看出,dowhile语句与while语句的区别是什么?ABC*ABABC无结果答:当第次执行循环体时,因为表达式为“真”,两种循环得到的结果相同;否则,二者结果就不同。(前提:二者循环体中的语句相同)第45页/共66页任务三任务三认识认识for语句语句1学习for语句的形式答:输入1
19、0个数,并求这10个数的和。for(表达式;表达式;表达式)语句第46页/共66页2学习for语句的执行过程请观察for语句的流程,完成问题。表达式1表达式2语 句表达式3真假第47页/共66页3讨论for语句的灵活性(1)写出以下程序段的运行结果。(2)讨论:在for语句的表达式1、表达式2、表达式3中可能会出现哪几种情况?运行结果:运行结果:运行结果:运行结果:运行结果:第48页/共66页4运用for语句编程编程求1210之积。(同时画出该程序的流程图)程序:流程图:第49页/共66页任务四任务四认识循环嵌套认识循环嵌套1学习循环嵌套的形式()请观察下面两个图,完成问题。(b)图第50页/
20、共66页(2)阅读信息,完成问题。信息:语言提供的3种循环结构:whiledowhilefor都可以相互嵌套,自由组合。问题:在已有几种循环嵌套形式后,补充3种合法的形式。嵌套形式:while()do while()do while();while();for(;)while()第51页/共66页2观察二重循环()请阅读程序,完成问题。程序定义了哪些变量?程序中采用几重循环嵌套?程序中外层循环为哪几行?外层循环的循环体中有几条语句?程序中内层循环为哪几行?内层循环的循环体中有几条语句?答:两个变量,m和n答:二重循环答:外层循环从7行到12行,外层循环的循环体中有2条语句。答:内层循环从9行到
21、10行,内层循环的循环体中有1条语句。第52页/共66页(2)请观察循环嵌套部分的流程,完成问题。m=1m=5 n=1n10时,可退出for循环外,是否有其他的方式退出for循环?3条语句。答:可以通过当V100.0时,执行break语句退出循环。第56页/共66页(2)请观察该程序for语句部分的流程,完成问题。r=1V=PI*r*r*hr100.0输出V r+真假假真break从流程上看,循环一定是执行了10次才退出吗?为什么?请写出该程序的预期结果。请输入圆柱体的高:6答:不一定,因为当V100.0时,执行break语句退出循环。体积等于18.840000体积等于75.360001此时r
22、=3第57页/共66页(3)请记录该程序的上机调试结果,并与预期结果比较,有差异吗?请记录上机调试结果:差异:第58页/共66页2学习continue语句()请阅读程序,完成问题,并记录上机调试结果。记录上机调试结果:该程序for语句部分的循环体内有几条语句?答:有2条语句。第59页/共66页(2)请观察该程序for语句部分的流程,完成问题。num=50num=100num%7=0输出numnum+真假假真continue从流程上看出,什么情况下不输出数据?而输出的数据是具有什么性质的数据?答:当数据能被7整除时,不输出。而输出的数据具有不能被7整除的性质。第60页/共66页(3)思考:如果该
23、程序不使用continue语句,要实现同样的功能,该如何处理?第61页/共66页知识盘点:知识盘点:第62页/共66页任务六任务六循环的应用循环的应用1累加的应用题目:用while语句编程求1+2+3+100的和。(3)用for语句编程实现以上同样的功能。程序:i=100i+main()int sum,I;sum=0;for(I=1;I=100;I+)sum=sum+I;printf(“1+2+100=%d”,sum);第63页/共66页2累乘的应用题目:编程求210。(用2种方法实现)(1)分析:由题意可知,求的是10个2相乘。程序需要定义2个变量s和,s用于存放乘积,用于计算乘以2的次数(即循环次数)。(2)根据分析,编写程序,并记录上机调试结果。方法一:记录上机调试结果:方法二:记录上机调试结果:第64页/共66页3讨论题目:假设有一张无限大的纸,其厚度为0.2mm(毫米),现反复地将其对折,编程计算对折多少次后可以达到珠穆朗玛峰的高度8848m(米)?第65页/共66页感谢您的观看!第66页/共66页
限制150内