程序流程控制

上传人:m**** 文档编号:579041399 上传时间:2024-08-25 格式:PPT 页数:67 大小:278KB
返回 下载 相关 举报
程序流程控制_第1页
第1页 / 共67页
程序流程控制_第2页
第2页 / 共67页
程序流程控制_第3页
第3页 / 共67页
程序流程控制_第4页
第4页 / 共67页
程序流程控制_第5页
第5页 / 共67页
点击查看更多>>
资源描述

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

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);q在写程序中,注意流程线的方向。q在程序中,正确定义变量。q顺序结构的执行特点:程序按照语句从上到下的排列顺序依次执行,每条语句必须执行且只能执行一次。知识盘点:任

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、看题目:输入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;模块二 分支程序设计能力目标:根据实际问题,正确书写关系、逻辑表达式正确认识分支结构的执行特点运用if语句的3种形式及switch语句进行

4、分支程序的设计任务一 认识关系运算符和关系表达式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知识盘点:q逻辑运算符的概念q逻辑运算符的优先级q逻辑表达式的概念任务三 书写关系、逻辑表达式1写出判断一个字符是否是空白符(t、n、 )的逻辑表达式:(ch= )|(ch=n)|(ch=t)2写出判断某一年是否为闰年的逻辑

5、表达式。()分析:闰年的条件是符合下列个条件之一:能被整除,但不能被100整除;能被400整除()请分别写出个条件的逻辑表达式:year%4=0&year%100!=0year%400=0 ( 3 )如果将个逻辑表达式合并为一个式子,该如何写?(year%4=0&year%100!=0)|(year%400=0)任务四考察条件控制语句if语句.考察分支结构的执行特点请观察下面的流程图:开始输入一个正整数xx%6=0输出“yes!”输出“no!”结束该流程图中,根据其真假使流程分支的判断条件是什么?该流程图所表示的程序功能是什么?答:x%6=0答:判断一个正整数是否是6的倍数。2认识if语句(第

6、一种形式)()请观察下面的流程图:x0x=x+1该图用if语句表示为:if(x0) x=x+1;()试写出if语句的一般形式:()归纳if语句的流程图:表达式语句if(表达式)语句知识盘点:()题目:输入一个整数,如果该数为正,输出该数。完成程序:main() int x; scanf(“%d”,&x); if printf(“%d”,x);根据程序,画出流程图。思考:如果要求x的绝对值,用if语句(第一种形式)实现,该如何完成?(x0)main()int x,y; scanf(“%d”,&x); if(x=0) y=x; if(x0y=xy=-x 真假该流程图表示的意思是什么?()if el

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

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

9、1else if( ) 语句2else if(表达式3) else 语句4表达式2语句3表达式语句3(3)根据所得语句形式,填写程序,并记录上机调试结果。#include”stdio.h”main() float x,y; printf(“请输入x的值:”); scanf(“%f”,&x); if(x=10) y=3*x-10; else printf(“y的值为:%.2fn”,y);请记录上机调试结果:y=x;y=2*x-1;知识盘点: ifelseif语句是通过一连串的判断,来实现互斥分支,它排列了一系列的操作,每一种操作是在相应的条件下才能执行。该语句执行时,依次对各个条件进行判断,符合

10、某一条件,则转去执行该条件下的操作,其余部分被跳过;若无条件为真,就执行最后一个else所指定的操作。5else与与if的配对规则的配对规则请观察以下程序段和流程图,完成问题。程序段: if(x7) if(x7x7x13输出left!输出right!真真假假真假真假(1)判断以上2个流程图中,哪一个与程序段相吻合?为什么?答:根据else与if的配对规则,第二个图与程序段相吻合。(2)写出该程序段的运行结果。X的取值运行结果61218无结果left!right!6if语句的嵌套(1)按else与if的配对规则划分下列关系。 if(条件1) if(条件2) 语句1 else 语句2 else i

11、f(条件3) 语句3 else 语句4(2)题目:有一个函数: -1(x0)输出y值。写法1: main() int x,y; scanf(“%d”,&x); if(x0) y=1; else y=0; printf(“x=%d,y=%dn”,x,y); 原因:请判断下列哪些写法是正确的?为什么?正确。写法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;

12、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”);break; default:printf(“输入数据错误!n”); switch语句部分流程图:1请阅读下面的程序及流程图,完成问题。优秀良好及格不及格输入数据错误gradeABCDdefault(1)记录上机调试运行结果:(2)说明该程序的功能是什么?(3)思考:如果将

13、程序段中的所有break语句去掉,输入字符C,运行结果是什么?答:运行结果为:及格不及格输入数据错误!知识盘点:请归纳switch语句的一般形式:预期运行结果:B上机调试结果:及格任务六分支的应用2由上述分析,填写下列流程图。n10n100r=1.0r=0.9r=0.7真假真假真假n50r=0.83根据流程图,填写程序。4请记录上机调试结果:n50r=0.8模块三 循环程序结构能力目标:正确认识循环程序的执行特点运用3种循环语句(while语句、do while语句、for语句)进行循环程序设计运用2个循环辅助语句(break语句、continue语句),更好地控制程序流程任务一 认识whil

14、e语句1初识while语句(1)思考:在程序设计中,通常会遇到输出一个星号*,可以用一个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个星号*。答:程序二简便

15、,在程序中能用循环语句来实现对重复操作的控制。2学习while语句的形式(1)请观察下面while语句的形式,完成问题。两条语句的关键字是什么?关键字后的括号内是什么表达式?关键字后的语句部分可以是哪些语句?(2)试写出while语句的一般形式。while关系表达式、逻辑表达式简单语句、复合语句while(表达式)语句3学习while语句的执行过程(1)请观察while语句的流程,完成问题。表达式语 句真假表达式(2)请记录该程序的上机调试结果,画出以下程序的流程图,并指出循环条件、循环体及循环控制变量的三个工作。请记录上机调试结果:流程图:循环条件是循环体是循环控制变量是 ,3个工作分别是

16、、 、 。I3printf(“%cn”,ch);II=1I3I+(3)请观察下面2个程序段,完成问题。语句一I=1;while(I+=10) printf(“hello!n”);语句二I=1;while(-I=10) printf(“world!n”);判断下面哪一个程序段是正确的?循环控制变量更新的趋势是什么?程序在什么时候才能判断循环是否终止?语句一让循环条件为假判断循环条件时讨论用while语句编程求1+2+10之和。(同时画出该程序的流程图)程序:流程图:知识盘点:任务二认识dowhile语句1学习dowhile语句的形式(2)试写出dowhile语句的一般形式。do whilesum

17、=sum+i;i=i+1;i=10do While(表达式);2学习dowhile语句的执行过程请观察dowhile语句的流程,完成问题。语句表达式真假语句表达式3dowhile语句与while语句的区别(2)由上述运行结果看出,dowhile语句与while语句的区别是什么?ABC*ABABC无结果答:当第次执行循环体时,因为表达式为“真”,两种循环得到的结果相同;否则,二者结果就不同。(前提:二者循环体中的语句相同)任务三认识for语句1学习for语句的形式答:输入10个数,并求这10个数的和。for(表达式;表达式;表达式)语句2学习for语句的执行过程请观察for语句的流程,完成问题。

18、表达式1表达式2语 句表达式3真假3讨论for语句的灵活性(1)写出以下程序段的运行结果。(2)讨论:在for语句的表达式1、表达式2、表达式3中可能会出现哪几种情况?运行结果:运行结果:运行结果:运行结果:运行结果:4运用for语句编程编程求1210之积。(同时画出该程序的流程图)程序:流程图:任务四认识循环嵌套1学习循环嵌套的形式()请观察下面两个图,完成问题。(b)图(2)阅读信息,完成问题。信息:语言提供的3种循环结构:whiledowhilefor都可以相互嵌套,自由组合。问题:在已有几种循环嵌套形式后,补充3种合法的形式。嵌套形式:while() do while() do whi

19、le(); while(); for(;) while() 2观察二重循环()请阅读程序,完成问题。程序定义了哪些变量?程序中采用几重循环嵌套?程序中外层循环为哪几行?外层循环的循环体中有几条语句?程序中内层循环为哪几行?内层循环的循环体中有几条语句?答:两个变量,m和n答:二重循环答:外层循环从7行到12行,外层循环的循环体中有2条语句。答:内层循环从9行到10行,内层循环的循环体中有1条语句。(2)请观察循环嵌套部分的流程,完成问题。 m=1m=5 n=1n10时,可退出for循环外,是否有其他的方式退出for循环?3条语句。答:可以通过当V100.0时,执行break语句退出循环。(2)

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

21、的流程,完成问题。num=50num=100num%7=0输出numnum+真假假真continue从流程上看出,什么情况下不输出数据?而输出的数据是具有什么性质的数据?答:当数据能被7整除时,不输出。而输出的数据具有不能被7整除的性质。(3)思考:如果该程序不使用continue语句,要实现同样的功能,该如何处理?知识盘点:任务六循环的应用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); 2累乘的应用题目:编程求210。(用2种方法实现)(1)分析:由题意可知,求的是10个2相乘。程序需要定义2个变量s和,s用于存放乘积,用于计算乘以2的次数(即循环次数)。(2)根据分析,编写程序,并记录上机调试结果。方法一:记录上机调试结果:方法二:记录上机调试结果:3讨论题目:假设有一张无限大的纸,其厚度为0.2mm(毫米),现反复地将其对折,编程计算对折多少次后可以达到珠穆朗玛峰的高度8848m(米)?

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

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