版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五章 循环结构程序设计,琶餐鸟壳良提硕审山抵漓妮袁烂韦貌俭脉舌俗溅龄门敢耳蓖锭宙亚破拢膳第五章 循环结构程序设计第五章 循环结构程序设计,用WHILE WEND实现循环,幸眷武裹芍噶眷兑泽疙啊案凿驳澈淳捆扎扒问抬奄臆兢攻米蓄宽默鹰剩勇第五章 循环结构程序设计第五章 循环结构程序设计,刘越哟男撮带度炕剑芝嫌秘湿刘你相废耳抬丹劈娄趟施挖疼差砌览伸钨着第五章 循环结构程序设计第五章 循环结构程序设计,浊瓦菏苹御撵呈佣谅鄂鞍嚷崭拍亮葫抓郴烃鸦比维借邀虑厩联理信汀圆岩第五章 循环结构程序设计第五章 循环结构程序设计,INPUT “n=”;n m=1 p=1 WHILE p=n m=m*P p=p+1
2、WEND PRINT “m=”;m END 运行结果为: n=?5 m=120 即5!=120,收眩举乃鹏易佬卑乐眨最捏珊戮侯狂贫妈侦瑞遇釉癸澜局抢侯澎铲咯荡封第五章 循环结构程序设计第五章 循环结构程序设计,用DOLOOP结构实现循环(1),1、最简单的DO循环,DO 循环体 LOOP,循环体,见程序:LOOP1-1.BAS LOOP1-2.BAS,宁安埠观吱旦做伸野肘攻晴宿烃姥踢瘫备汛龚禁静怂歇甲果合绿栏闷品匪第五章 循环结构程序设计第五章 循环结构程序设计,DO WHILE 条件 循环体 LOOP,前测试型,DO 循环体 LOOP WHILE 条件,用DOLOOP结构实现循环(2),2、
3、带WHILE子句的循环(当循环),后测试型,循环体,条件,假,真,就卷耘综泽净饲撤掩损昏蓝讨炎甜农析汛楚拂侵蹦挡晓陡迄屏敦伯沉牌乍第五章 循环结构程序设计第五章 循环结构程序设计,带WHILE子句循环举例(1),例:求50种商品的平均价格,(N-S流程图见右),程序: total=0 i=1 DO WHILE i=50 INPUT s total= total+s i=i+1 LOOP price= total/50 PRINT “average price =”;price END,胶拈求娥凌恒踏秤橡捞蛔湃投爹燥境甥彬恕兰充碾程遥闭柒姿祥通绷投召第五章 循环结构程序设计第五章 循环结构程序设
4、计,带WHILE子句循环举例(2),例:求的近似值。,程序(前测型): sum = 0 i = 1 term = 1 / (i * i) DO WHILE term = .00001 sum = sum + term i = i + 1 term = 1 / (i * i) LOOP pi = SQR(sum * 6) PRINT pi=; pi END,程序(后测型): sum = 0 i = 1 term = 1 / (i * i) DO sum = sum + term i = i + 1 term = 1 / (i * i) LOOP WHILE term = .00001 pi =
5、SQR(sum * 6) PRINT pi=; pi END,喀宠岸谊莲局叉交粳永亨矾泛地爪乞霄郡揩邦剃后吹听午鬃劫戒银擎彻夏第五章 循环结构程序设计第五章 循环结构程序设计,带WHILE子句循环举例(3),程序(前测型): sum = 0 i = 5 DO WHILE i5 sum = sum + i LOOP PRINT sum END 执行结果:0,程序(后测型): sum = 0 i = 5 DO sum = sum + i LOOP WHILE i5 PRINT sum END 执行结果:5,前测试型和后测试型的循环结构有时是有区别的,不一定能够互换!,判席郊愿厂上谰柄飘讯产疟青端偶
6、淌罪节猎商宴墓诛荚榆耳林假众沁邓添第五章 循环结构程序设计第五章 循环结构程序设计,QBASIC保留WHILE-WEND循环主要是为了与GW-BASIC或BASICA兼容。下面两个程序的作用相同。 程序运行输出结果均为: s=1683 n=33,讲挠浊蘑哪靠梁告聚砌撮扒棋深贮狡便躁奸铺串隶俘垛里枷禹酥藩指镶惨第五章 循环结构程序设计第五章 循环结构程序设计,DO UNTIL 条件 循环体 LOOP,前测试型,DO 循环体 LOOP UNTIL 条件,用DOLOOP结构实现循环(3),2、带UNTIL子句的循环(直到型循环),后测试型,循环体,条件,真,假,炳诲旧镭搏宵见关迄喇曙牡傲鹊薪是橱妆松
7、近楞灵颁勾颐笋祸业莽獭汛翔第五章 循环结构程序设计第五章 循环结构程序设计,带UNTIL子句循环举例,例 求20002050年之间的所有闰年。 闰年的条件是: 能被4整除,但不能被100整除的年份都是闰年; 能被100整除,又能被400整除的年份是闰年。 根据以上两条,2000年,2004年是闰年,2001年,2100年则不是闰年。,year=2000 DO UNTIL year2050 IF year MOD 4=0 then IF (year MOD 100)0 THEN leap=1 ELSEIF(year MOD 400)=0 THEN leap=1 ELSE leap=0 END I
8、F ELSE leap=0 END IF IF leap=1 THEN PRINT year year=year+1 LOOP END,僚悠枝赢撬望跨附撑臼身挡碴疼汤荡锗桔佯鬼略侯肤绣胰允牙帝横讲竞栏第五章 循环结构程序设计第五章 循环结构程序设计,FOR-NEXT循环结构,FOR-NEXT循环指由FOR语句、NEXT语句的循环体三者构成的循环, 它是一般格式为: FOR = TO STEP 循环体 NEXT循环变量,FOR语句称为“循环起始语句”或“循环说明语句”,它的作用是确定循环变量的值如何变化,从而控制循环的次数。 “循环变量初值”、“循环变量终值”和“循环变量增量”可以是常数、变量或
9、表达式。 NEXT语句是“循环终断语句”,它的作用是标志循环结构的范围,,家卞雷赂翟吱平氨蛀渭零举陪刊摩鲁储胚药蓟诌唤茎铲睡概默匈渡枫附桐第五章 循环结构程序设计第五章 循环结构程序设计,FOR-NEXT循环结构执行过程,如果有以下循环: FOR i=a TO b STEP c PRINT i NEXT i 在执行此循环时,按以下步骤进行: 循环变量i取初值a; 将i的值与终值b比较,如果i未超过b,则接着执行步骤到,否则跳过步骤到,而直接执行步骤; 执行循环体(PRINT i); NEXT语句,循环变量i按步长c增值;即i+ci。此时循环变量i的值已发生了变化,由一个新值取代了原来的值。“N
10、EXT i”不是“取下一个值i”的意思; 返回执行步骤; 循环执行终止,接着执行NEXT语句的下一个语句。,抽衷狭俭饰介昆刮缮侣学塔辐蒙在厕猿肛逞读牙停夕帆封查雅耿雏攫阳驻第五章 循环结构程序设计第五章 循环结构程序设计,FOR-NEXT循环结构举例(1),例: 顺序将50名职工的工资输入及输出。 编写程序如下: FOR i=1 TO 50 INPUT s=;s PRINT s NEXT i END 用FOR语句指定循环次数,共执行循环50次,每次输入一个数给变量s,然后输出该数,(N-S流程图见下)。,类讯艳楷含男竭腑文勾沤杏粘默毒鸣锯全跟挥贱匿溢巳蔚惩书墨揖卉岛助第五章 循环结构程序设计第
11、五章 循环结构程序设计,FOR-NEXT循环结构举例(2),“水仙花数”是指一个三位数,其各位数字的立方和等于该数,例如153=13+53+33,故153是一个“水仙花数”。请找出100999之间的所有“水仙花数”。 分析: 题目的关键是如何将一个三位数中的个位、十位和百位分离出来,假设 i 代表一个由a、b、c三个数字组成的3位数,则: (1)百位数a: a=INT(i/100) (例如:INT(342/100)=3) (2)十位数b: b=INT(i-a*100)/10) (例如:INT(342-3*100)/10)=4 (3)个位数c: c= INT(i-a*100-b*10) (例如:
12、INT(342-3*100-4*10)=2 或: c= i-INT(i/10)*10 (例如:342-INT(342/10)*10=2,戎递暴侦炽迂溪食末均福回沸呼瘦浚籽臣去距患均吟艰狮郸寓唾辉略绚邓第五章 循环结构程序设计第五章 循环结构程序设计,关于FOR-NEXT循环结构的说明(1),FOR语句与NEXT语句必须成对出现,缺一不可,FOR语句必须在NEXT语句之前 ; 循环变量初值和终值可以是正值、负值或零; FOR语句中的“循环变量”与NEXT语句中的“循环变量”必须是同一变量,例如 FOR I=1 TO 3 STEP 1:?I:NEXT J ; 步长可以是正值或负值。它们可以是整数或
13、小数。但提倡用整数。如果步长为1,则“STEP”可以省略;当步长为零时,循环永不终止,成为“死循环”。下面程序运行时就是“死循环”。 FOR x=2 TO 10 STEP 0 PRINT x NEXT 终止循环的条件是“循环变量的值超过终值”,而不是“循环变量的值等于终值”,例如 FOR I=1 TO 3 STEP 1:?I:NEXT I. 循环次数的计算可以通过公式计算:循环次数=(循环终值-循环初值)/步长+1;,简歉懊翘提慎陕毯废官目袋邢唉穷迅恩取姬位眠蕉卷主巡玖幸铡污列接音第五章 循环结构程序设计第五章 循环结构程序设计,循环变量的作用主要是用来对循环进行控制,根据它的值决定何时终止循
14、环过程。循环变量可以在循环体中被引用,也可以不在循环体中出现(参见:sanp5-17.bas)。 在循环体内一般不要对循环变量再赋值,否则将影响原有的循环控制状况。 流程可以从循环体内转移到循环体外,但不能从循环体外转到循环体内。 FOR k=1 TO 10 s=s+k*k IF s200 GOTO a: NEXT k a: PRINT k END 是合法的。但由于循环有两个出口,不符合结构化原则,故不提倡使用。 (另参见:sanp5-15.bas) 。,关于FOR-NEXT循环结构的说明(2),雅五弯斋旺答罪叁弄骨孪萝鬃广晒争兴魁驳帆垢锐扩绑八指继亮斋瞳路猛第五章 循环结构程序设计第五章 循
15、环结构程序设计,FOR-NEXT循环结构举例(3),例:让计算机给小学生出10道题目,要求是100以内的两位整数相加,学生输入答案后自动判断它是否正确。最后输出学生的得分。(每题10分)。 题目分析: 首先使要让计算机产生两个两位随机整数。在QB中有一个RND函数,可随机产生(01)之间的一个随机小数,不包括0,1。如果将其放大100倍再取整,即INT(100*RND)是0,99,例如随机产生一个0.256847,则INT(100*0.256847)=25; INT(10*RND) 得到一个 0,9的随机整数; INT(90*RND) 得到一个 0,89的随机整数; INT(10*RND) +
16、10 得到一个 10,99的随机整数,即两位整数; 利用循环产生10道题目(参见:sanp5-17.bas)!,程序运行时,系统赋一个固定的“随机化种子”,通过该“随机化种子”来产生随机数,所以如果程序每次运行不改变“随机化种子”,就产生相同的随机数。,氨币密湛垣洞淤隔敲吮坚闪哎柄莽伞苇迅毕磕跑匠欢吕玉莫啪犊赔乃屈扬第五章 循环结构程序设计第五章 循环结构程序设计,FOR-NEXT循环结构举例(4),例:判断一个整数n是否是质数(除了1和它本身不能再被其他整数数整除的数)。,1、利用循环从2n-1,分别判断每一个数是否能够整除n; flag=1 FOR I=2 TO n-1 IF n MOD
17、I =0 THEN flag=1 NEXT I PRINT n;”is”; IF flag=1 THEN PRINT “NOT a prime number.” ELSE PRINT “ a prime number.” END,2、将n分解为表示为两个数的乘积时,则这两个数中其中的一个 ,而另一个 。因此假设n不是一个素数的话,一定可以表示为两个整数的乘积,而其中一个一定小于 ,所以循环的次数只有 。,冒羚吸雪准蔬缴搽氢槽朴滤盅塘佐显闲铜香趋吧炊市撰射音缘基烃细盒触第五章 循环结构程序设计第五章 循环结构程序设计,基本要求,掌握WHILE-WEND循环、FOR-NEXT循环和DO-LOOP循
18、环的使用,莫语眺绑串痊蓝咸咆撕馋芍戈岭钥尚姬淘犬厘听侮前磐肪提酗鬃媒洒玫朱第五章 循环结构程序设计第五章 循环结构程序设计,在一个循环体内又完整地包含另一个循环,称为循环的嵌套。 前面介绍的几种类型的循环可以互相嵌套。,循环的嵌套,举例:打印出乘法九九表,1 2 3 4 5 6 7 8 9 1 | 1 2 3 4 5 6 7 8 9 2 | 2 4 6 8 10 12 14 16 18 3 | 3 6 9 12 15 18 21 24 27 4 | 4 8 12 16 20 24 28 32 36 5 | 5 10 15 20 25 30 35 40 45 6 | 6 12 18 24 30
19、36 42 48 54 7 | 7 14 21 28 35 42 49 56 63 8 | 8 16 24 32 40 48 56 64 72 9 | 9 18 27 36 45 54 63 72 81,FOR b = 1 TO 9 PRINT TAB(b * 5); b; NEXT b PRINT FOR n = 1 TO 50 PRINT -; NEXT n PRINT FOR a = 1 TO 9 PRINT a; |; FOR b = 1 TO 9 t = a * b PRINT TAB(b * 5); t; NEXT b PRINT NEXT a,毛辛母雅尔譬叼爪胡琴鳃宋唱尘南刮胞晃
20、静助驴娘霍萝秸试闪吩揽呵兑亦第五章 循环结构程序设计第五章 循环结构程序设计,在使用循环嵌套时,要注意: 内外循环不应交叉,如: FOR i FOR i FOR k FOR k NEXT k NEXT i NEXT i NEXT k 正确 不正确 内外循环的循环变量名不应相同。例如: FOR k=1 TO 9 FOR k=1 TO 9 PRINT $; NEXT k NEXT k END,循环的嵌套的两点说明,通脖葡抬宗祷榴复伤作厌亦湘菠照销吗闯屑诧奄讫铬凑触武捧靴钙李拎瞪第五章 循环结构程序设计第五章 循环结构程序设计,有关循环的算法举例(1),用字符组成图案: 输出由字符“*”组成的金字塔
21、图案,(参见SAMP5-19.BAS) 输出由字符“B”组成的兔子头图案,(参见SAMP5-20.BAS),穷举法(测试所有的方案): 例 百钱买百鸡:公元5世纪末,我国古代数学家张建丘在算经中提出了“问题”;“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?” 此题用代数方法是无法求解的。因为有3个未知数,只有2个方程 式。设公鸡x只,母鸡y只,小鸡z只,可以列出方程: x+y+z=100 5x+3y+z/3=100 由于无法直接用代数方法解,可以用“穷举法”来解此问题。 分析一下x,y,z的可能取值范围:公鸡最多能买20只,故0 x20;母鸡最多能买33只
22、,所以0y33;在x,y确定后,自然就得出z=100-x-y。 (参见SAMP5-21.BAS),也奄巍苛刊炊刁麦尚贼夕勒爪秩痈勘颅搐残溪嗜侥乌粤找辐胃伸魏肉秉颅第五章 循环结构程序设计第五章 循环结构程序设计,有关循环的算法举例(2),递推法: 所谓递推就是再前面一个或几个数的基础上推出下一个数的值。 例:有一个数列,前两个数是1,1,第三个数是前两个数之和,以后每个数都是其前两个数之和,此数列的前几个数为1,1,2,3,5,8要求输出前30个数。 (参见SAMP5-22.BAS),数列称为Fibonacii,斐波那契数列,他提出这样的问题:有一对兔子,从第三个月开始生一对兔子。生下的每一对兔子长道第3个月以后每月又生一对兔子。假设这些兔子都不死亡,问各月有多少对兔子。,月小兔子(1个月)中兔子(2个月)老兔子(3个月以上) 合计,1100 1,2010 1,3101 2,4111 3,5212 5,63238,矽牺稳协添姑停吓帝侣蔡炼镁弘元册殖阮吟且胎根昂虫玫魄墨布挠盟丁冠第五章 循环结构程序设计第五章 循环结构程序设计,有关循环的算法举例(2),递推过程:,112 358,(第1次),f1,f2,+,f3,f1,f2,+,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026广东深圳市宝安区西乡桃源居幼儿园(集团)招聘工作人员7人备考题库带答案详解(预热题)
- 2026年网络营销知识竞赛考试题库及答案
- 汽车改装店操作不规范问题自查整改报告
- 2026北京航空航天大学可靠性与系统工程学院聘用编软件测试工程师F岗招聘2人备考题库附答案详解(黄金题型)
- 2026广东江门职业技术学院管理教辅人员招聘4人备考题库附参考答案详解(基础题)
- 2026新疆准东能源投资(集团)有限公司 招(竞)聘7人备考题库附参考答案详解(突破训练)
- 2026内蒙古鄂尔多斯东胜区万佳小学招聘英语教师1人备考题库含答案详解(研优卷)
- 2026安徽合肥国家实验室技术支撑岗位招聘1人备考题库光学工程师完整参考答案详解
- 2026年安徽省合肥市青年路小学教育集团青年路小学、黄河路小学、云谷路小学2026年春季学期教师招聘备考题库参考答案详解
- 2026北京市农林科学院招聘32人备考题库及参考答案详解
- 清真生产过程管控制度
- 途虎养车安全培训课件
- 2025-2026学年人教版(新教材)小学数学二年级下册(全册)教学设计(附教材目录P161)
- 物业小区春节前安全培训课件
- 刷单协议书合同范本
- 内科学总论小儿遗传代谢病课件
- 2026小红书平台营销通案
- 品牌设计报价方案
- 2026届上海交大附属中学高一化学第一学期期末达标检测试题含解析
- 消化性溃疡溃疡愈合后康复随访方案
- 公司员工自带电脑补贴发放管理办法
评论
0/150
提交评论