循环语句练习程序流程图
- 格式:docx
- 大小:56.75 KB
- 文档页数:6
流程图(三)教学目标:使学生了解循环结构的特点,并能解决一些与此有关的问题.教学重点:循环结构的特性.教学难点:循环结构的运用.教学过程:Ⅰ.课题导入问题:给出求满足1+2+3+4+…+>2008最小正整数的一种算法,并画出流程图.我的思路:在解题的时候经常会遇到需要重复处理一类相同的事或类似的操作,如此题就需要重复地做加法运算.如果用逐一相加算法,步骤太多,采用循环结构可以很好地解决此类问题.算法如下:S1n←1;S2T←0;S3T←T+n;S4如果T>2008,输出n,结束.否则使n的值增加1重新执行S3,S4.流程图如下:Ⅱ.讲授新课循环结构分为两种——当型(while型)和直到型(until型).当型循环在执行循环体前对控制循环条件进行判断,当条件满足时反复做,不满足时停止;直到型循环在执行了一次循环体之后,对控制循环条件进行判断,当条件不满足时反复做,满足时停止.例1:求1×2×3×4×5×6×7,试设计不同的算法并画出流程图.算法1算法2开始输出X结束X 1X ×2X X ×3X X ×4X X ×5X X ×6X X ×7X开始输出X结束X 1I 2X I ×X I +1II >7是否点评:本题主要考查学生对顺序结构和循环结构的理解,学会推理分析.算法都可以由顺序结构、选择结构和循环结构这三块“积木”通过组合和嵌套来完成. 算法2具有通用性、简明性.流程图可以帮助我们更方便直观地表示这三种基本的算法结构.例2:有一光滑斜面与水平桌面成α角,设有一质点在t =0时,从此斜面的顶点A 处开始由静止状态自由释放,如下图所示.如果忽略摩擦力,斜面的长度S =300 cm ,α=65°.求t =0.1,0.2,0.3,…,1.0 s 时质点的速度.试画出流程图.解析:从物理学知识知道:质点在斜面上运动时,它的加速度a =g sin α.当在水平面上运动时,速度为常数,且保持它在B 点时的速度.从A 点到B 点间的速度v ,可由公式v =at =g (sin α)t 求出,到B 点时的速度v B 为v B =at =aaS2=aS 2=2Sg ·sin α. 解题的过程是这样考虑的:按公式v =at =g (sin α)t ,求t =0.1,0.2,0.3……时的速度v ,每求出对应于一个t 的v 值后,即将v 与v B 相比较,如果v <v B ,表示质点还未到达B 点,使t 再增加0.1 s ,再求下一个t 时的v 值,直到v ≥v B 时,此时表示已越过B 点,此后的速度始终等于v B 的值.流程图如下:例3:设y 为年份,按照历法的规定,如果y 为闰年,那么或者y 能被4整除不能被100整除,或者y 能被400整除.对于给定的年份y ,要确定它是否为闰年,如何设计算法,画出流程图.解析:总结:1.理解程序框图的三种基本逻辑结构:顺序结构、选择结构、循环结构.算法的表示方法:(1)用自然语言表示算法.(2)用传统流程图表示算法.2.能够理解和掌握构成流程图的符号:⑤流程线①起止框④输入、输出框②处理框③判断框⑥连接点3.利用计算机进行数值计算,需要经过以下几个步骤: (1)提出问题、分析问题.(2)确定处理方案,建立数学模型,即找出处理此顺题的数学方法,列出有关方程式. (3)确定操作步骤,写出流程图算法见下图. (4)根据操作步骤编写源程序.(5)将计算机程序输入计算机并运行程序. (6)整理输出结果.以上过程可用流程图表示如下:提出问题确定数学模型和计算方法画流程图编写程序运行程序修改程序有无错误结束Ⅲ.课堂练习课本P 14 1,2.Ⅳ.课时小结循环结构的特点:在程序执行过程中,一条或多条语句被重复执行多次(包括0次),执行的次数由循环条件确定. Ⅴ.课后作业课本P 14 7,8,9.练习1.算法的三种基本结构是( ) A.顺序结构、选择结构、循环结构 B.顺序结构、流程结构、循环结构 C.顺序结构、分支结构、流程结构 D.流程结构、分支结构、循环结构 答案:A2.流程图中表示判断框的是( ) A.矩形框 B.菱形框 C.圆形框 D.椭圆形框 答案:B3.下面是求解一元二次方程ax 2+bx +c =0(a ≠0)的流程图,请在空缺的地方填上适当的 标注.结束开始 答案:(1)Δ<0 (2)x 1←aΔb 2+-,x 2←a Δb 2-- (3)输出x 1,x 24.下面流程图表示了一个什么样的算法?输入,,a b c5.下面流程图是当型循环还是直到型循环?它表示了一个什么样的算法?结束答案:此流程图为先判断后执行,为当型循环.它表示求1+2+3+…+100的算法.6.已知梯形的上底、下底和高分别为5、8、9,写出求梯形的面积的算法,画出流程图. 答案:解:算法如下: S1 a ←5; S2 b ←8; S3 h ←9;S4 S ←(a +b )×h /2; S5 输出S . 流程图如下:结束7.设计算法流程图,输出2000以内除以3余1的正整数. 答案:结束8.某学生五门功课成绩为80,95,78,87,65.写出求平均成绩的算法,画出流程图. 答案:解:算法如下:S2 S ←S +95; S3 S ←S +78; S4 S ←S +87; S5 S ←S +65; S6 A ←S /5; S7 输出A . 流程图如下:结束9.假设超市购物标价不超过100100元,则超过部分按七折收费.写出超市收费的算法,并画出流程图. 答案:解:设所购物品标价为x 元,超市收费为y 元.则y =⎩⎨⎧-⨯+⨯≤).100(7.01009.0,100 ,9.0xx x收费时应先判断标价是否大于100,其算法如下:S1 输入标价x ;S2 如果x ≤100,那么y =0.9x ;否则y =0.9×100+0.7×(x -100); S3 输出标价x 和收费y . 流程图如下:开始结束10.写出求1×3×5×7×9×11的算法,并画出流程图. 答案:解:算法如下: S1 p ←1;S3 p ←p ×I ; S4 I ←I +2;S5 若I ≤11,返回S3;否则,输出p 值,结束. 流程图:结束11.《中华人民共和国个人所得税法》规定,公民全月工资、薪金所得不超过800元的试写出工资x (x ≤5000元)与税收y 的函数关系式,给出计算应纳税所得额的算法及流程图.答案:解:研究这个表提供的信息,可以发现,如果以一个人的工资、薪金所得为自变量x ,那么应纳税款y =f (x )就是x 的一个分段函数.y =⎪⎪⎩⎪⎪⎨⎧≤<-≤<+≤<-≤<5000.2800 28000.151752800,13001300)0.1(251300,800 )800(05.08000 0x x x x x x ,x )(+ -算法为:S1 输入工资x (x ≤5000); S2 如果x ≤800,那么y =0;如果800<x ≤1300,那么y =0.05(x -800); 如果1300<x ≤2800;那么y =25+0.1(x -1300); 否则y =175+15%(x -2800); S3 输出税收y ,结束. 流程图如下:12.根据下面的算法画出相应的流程图. 算法:S1 T ←0; S2 I ←2; S3 T ←T +I ; S4 I ←I +2;S5 如果I 不大于200,转S3; S6 输出T ,结束.答案:解:这是计算2+4+6+…+200的一个算法. 流程图如下:开始输出T结束T 0I 2T I +T I +2II >200NY13.一个三位数,各位数字互不相同,十位数字比个位、百位数字之和还要大,且十位、百位数字不是素数.设计算法,找出所有符合条件的三位数,要求画出流程图.答案:开始=120a = m o d 100b a =(1-100) m o d 10c a b=-100-10a b b c c a=或=或=b a +c ≤a =2,3,5,7b =2,3,5,7=+1<1000输出是是是是是否否否否否14.已知算法:①指出其功能(用算式表示).②将该算法用流程图描述之. S1 输入X ;S2 若X <0,执行S3;否则执行S6; S3 Y ←X + 1; S4 输出Y ; S5 结束;S6 若X =0,执行S7;否则执行S10; S7 Y ←0; S8 输出Y ; S9 结束; S10 Y ←X ; S11 输出Y ; S12 结束.答案: 解:这是一个输入x 的值,求y 值的算法.其中y =⎪⎩⎪⎨⎧>=<+.0 ,0 0,0 1x x x x x流程图如下:15.下面流程图表示了一个什么样的算法?试用当型循环写出它的算法及流程图.输出A答案:解:这是一个计算10当型循环的算法如下: S1 S ←0; S2 I ←1;S3 如果I 大于10,转S7; S4 输入G ; S5 S ←S +G ;S6 I ←I +1,转S3; S7 A ←S /10; S8 输出A. 流程图:开始结束李白写的“举头望明月,低头思故乡”,看月亮,必须得抬头看,不然你看见的月只是水中月,而思故乡,必须得低头,看着脚下的土地,土地连结深情,传递的思念感应才会自然。
Top1.循环结构(while、do…while、for)1. 循环结构(while、do…while、for)1.1. 什么是循环结构在日常生活中,会有很多需要反复执行的事情,比如:每一年的4个季节,每一周的7天,每日的3餐,打印机每份文档打印50份,一圈跑道400米跑3圈,都是在反复执行的。
再看软件系统中的需求:问题1:输出100行语句,每行语句都一样,即:∙行动是成功的阶梯,行动越多,登得越高!∙行动是成功的阶梯,行动越多,登得越高!∙行动是成功的阶梯,行动越多,登得越高!…问题2:输出100行语句,每行语句都类似,即:∙第1,行动是成功的阶梯,行动越多,登得越高!∙第2,行动是成功的阶梯,行动越多,登得越高!∙第3,行动是成功的阶梯,行动越多,登得越高!∙…∙第100,行动是成功的阶梯,行动越多,登得越高!问题3:计算1到50乘以8.88的结果∙1×8.88 =8.88∙ 2 ×8.88 =17.76∙ 3 ×8.88 =26.64∙ 4 ×8.88 =35.52∙…∙50 ×8.88 =444诸如此类问题都是在反复执行的,在软件系统中可以通过循环这种语法结构来解决。
循环是程序设计语言中反复执行某些代码的一种计算机处理过程,是一组相同或相似语句被有规律的重复性执行。
对于循环来说,需要考虑两个要素,其一要素为循环体,也就是被反复执行的相同或相似的语句,其二要素为循环的条件,也就是循环得以继续执行下去的条件,常常以循环次数的方式体现。
常用的循环结构有:while、do-while、for。
1.2. while语句1.2.1. while语句的执行逻辑while语句是循环的一种常见语法结构,语法如下:1.while(boolean表达式){语句块;2.}while语句的执行过程为,首先计算boolean表达式的值,而后进行判断,若值为true则执行语句块,语句块执行完后再次判断boolean表达式的值,如果为true则继续执行语句块,如此循环往复,直到boolean表达式的值为false时退出while循环而执行while之后的语句。
1、计算1-2+3-4+5……+99-100的值。
2、求1~1000之间可以同时被
3、5、7整除的数字。
分析过程:
1、明确判断的区间为[1,1000];
2、对[1,1000]范围内的每一个数字都要进行相同的判
断过程;
3、判断过程:一个数字是否能够同时被3、5、7整除,
如果可以,将该数字输出,否则不操作。
算法步骤:
1、利用循环结构来循环读取[1,1000]区间的每一个数字
for( i )//循环读入[1,1000]内的数字
{
//每读入一个数字,都要进行是否能够
同时被3、5、7整除的判断过程
if( )
{
//输出数字
}
}
2、求解水仙花数。
水仙花数是一个三位数,并且该三位
数每个位数上的数字的立方和等于该三位数本身。
分析过程:
1、由概念确定判断数字的取值范围为[100,999];
2、分解每个三位数,得出个、十、百位数字;
3、判断每个三位数的个十百数字立方和是否等于该数字
本身;如果等式为真,输出该三位数,否则不操作。
算法步骤:
1、由分析过程可知每个三位数都要进行相同的分解过
程和判断过程,可以使用循环结构来实现:
for( i )//循环读入[100,999]内数字
{
//1、分解读入的三位数i
ge=…….
shi=……..
bai=………
//2、判断ge3+shi3+bai3==i等式的真假
if(ge3+shi3+bai3==i)
{
//输出该三位数i
}
}
4、假定在银行中存款5000元,按照6.25%的年利率计算,
试过经过多少年后会连本带利翻一番,编程实现。
分析过程:
1、假设今年存款5000元,按6.25%年利率增加,明年是
5000*(1+0.0625)元,后年就是5000*(1+0.0625)2,大后年就是5000*(1+0.0625)3,依次类推;
2、在存款初值为5000元的基础上,每一年增加以后,都
要判断一下是否连本带利翻一番(即当年的存款额是否
大于等于存款初值的2倍),如果判断结果为真,则不
再按年利率增加;
3、题目要求统计出经过多少年会使得2中的判断结果为
真;
算法步骤:
1、存款初值为5000(m),当年存款额(s)为存款初值;
2、当年存款额按照年利率增加,每增加一年,将年数累加
一次,然后判断是否大于等于存款初值的2倍,如果没
有超过,则继续按年利率增加,否则不再增加。
do
{
//1、增加一次存款额
………….
//2、累加一次年数
……………
}while(存款额是否大于等于存款初值的2倍);
5、打印输出前100个自然数中的所有素数。
分析过程:
1、明确素数的概念:在一个大于1的自然数中,除
了1和此数本身外,没法被其他自然数整除。
2是
最小的素数,其余偶数均不是素数,1和0既不是
素数也不是合数!
2、由概念可以推导出几个结论:2是最小素数,可以
直接输出;大于2的偶数绝不是素数;对于大于2
的奇数,可以进行是否素数的判定,该判定过程
可以从该数是否只能被1和它本身整除而不能被
其他自然数整除的条件上去进行判定。
算法步骤:
1、直接输出最小素数2
2、排除掉3-100区间范围内的所有偶数
3、针对3-100区间内的奇数去进行判断,因为每一个奇数
都要重复相同的判断过程,所以可以利用一个循环体去进行循环读取奇数,读入奇数以后的判断过程:每次读入一个奇数(假设用i变量表示)以后,只要能够证明该奇数不能被区间[2,i-1]内的所有数字整除(取模运
算结果等于0),就可以说明该奇数是一个素数。
该过
程又可以用一个循环结构去描述,所以用第二个循环体去进行整除的判定。
for( i )//循环读入[3-100]内的奇数
{
//判断奇数i是否能被[2,i-1]内的数字整除
for( j )//循环进行i%j==0等式的判断
{
//只要某一次循环时候i%j==0等式为真,
即可结束内层循环,i不是素数;只有当区间内
所有数字进行等式判断都为假时,i是素数!
…………….
}
}
6、计算1!+2!+…+10!的值。
(也可以利用单层循环来实
现)
分析过程(以两层循环来实现):
1、单个数字的阶乘如何计算?(利用循环结构进行累乘的
操作)
1!:1*1
2!:2*1
3!:3*2*1
2、单个数字的阶乘计算出结果以后,再将结果进行累加?
(利用循环结构进行累加的操作);
3、先计算阶乘后进行累加,所以两个循环结构存在嵌套关
系,哪个是内层循环,哪个是外层循环?
算法步骤:
1、for( m )//计算单个数字阶乘
{
//累乘操作
}
2、由题目可知累加[1-10]区间的数字的阶乘,可以理解为
该区间数字都要重复1中的计算过程,可以在1的基础上循环读入[1-10]区间内的每一个数字。
既然是循环读入,所以可以再利用循环结构来实现。
for( n )//循环读入[1-10]区间内数字
{
}
3、根据逻辑过程(先读入数字后计算该数字阶乘),可将
1和2组合成循环嵌套结构:
for( n )//循环读入[1-10]区间内数字,外层{
for(m )//计算单个数字阶乘内层
{
//累乘操作
…………..
}
//阶乘结果进行累加
……………..
}。