循环结构程序设计.ppt_第1页
循环结构程序设计.ppt_第2页
循环结构程序设计.ppt_第3页
循环结构程序设计.ppt_第4页
循环结构程序设计.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章 循环结构程序设计,循环类型 循环次数已知。 在程序中直接控制循环次数。 如FOR循环。 循环次数未知。 由结束条件判定。 如WHILE和DO循环。 循环程序的基本结构 初始化。给出进入循环的初值 循环体。 循环控制机制。是循环还是结束,第一节 基本的循环类型,第二节 FOR循环,格式 FOR 循环变量=循环初值 TO 终值 STEP 步长 循环体 NEXT 循环变量 例:for I=1 to 4 print I next I end,循环次数为 4,FOR-NEXT使用说明,当循环变量在循环体内不发生改变时,循环次数为 int((终值-初值)/步长)+1 循环变量 数值型变量 尽可能为整型 步长 可正可负 为零时,死循环 为1时,是默认值,可省略,执行NEXT时先给循环变量增加一个步长,然后判断其是否超过终值 例 不能从其它入口进入循环,但可以从循环体中跳出循环 例 尽量不要使循环变量在循环体内发生变化,否则循环次数会发生变化 例 循环变量尽量为整型,否则会出现误差 QB6-1 改进:用整型变量或将终值+小数(小于步长) QB6-2,Sum=0 for i=1 to 100 sum=sum+i print i,sum next i end,累计1+2+3+100,Sum=0,当i=1 to 100,Sum=sum+i,输出i, sum,例,求n!,例4! 4!=1*2*3*4 设P=1 1! : p=p*1 2! : p=p*2 3! : p=p*3 4! : p=p*4 I=1 to 4 QB6-3,求n个数的乘积,循环次数为n 循环体 输入具体的n个数 计算 QB6-4,输出斐波那契数列的前20项(1),1 1 2 3 5,第一次 f1 f2 f3=f1+f2 第二次 f1 f2 f3 第三次 f1 f2 f3,F1=1 F2=1 Print f1 , f2 , For I%=3 to 20 f3=f1+f2 print f3 , f1=f2 f2=f3 Next I% Print : end,输出斐波那契数列的前20项(2),1 1 2 3 5 8,第一次 f1 f2 第二次 f1=f1+f2 f2=f2+f1 第三次 f1=f1+f2 f2=,F1=1 : f2=1 For I%=1 to 10 print f1, f2 f1=f1+f2 f2=f2+f1 Next I% Print End,如判断12是否为素数 12=3*4 12=2*6 如果12能被2 12(1/2)整除,则12不是素数 设标志flag=1表示整数n未被任何一个整数整除过,否则flag=0 根据flag的值可知n是否为素数 QB6-5,输入 n,m=int(sqr(n), flag=1,For I=2 to m,n能被I整除,Y,N,Flag=0,结束循环,Flag=1,Y,n是素数,N,n不是素数,INPUT “N=“; n M = INT(SQR(n) FLAG = 1 FOR I% = 2 TO M IF n MOD I% = 0 THEN FLAG = 0 I% = n END IF NEXT I%,IF FLAG = 1 THEN PRINT n; “is a prime number.“ ELSE PRINT n; “is not a prime number.“ END IF END,第三节 WHILE 循环结构,格式 WHILE 条件 循环体 WEND 条件为真时执行循环体,否则执行WEND的下一语句 应创造进入循环的初始条件 在循环体内(一般为最后一条语句)应使条件向“假”变化,求1+2+5,S=0 I=1 While I=5 s=s+I I=I+1 Wend Print s end,如果我国工业生产总值每年以8%的速度增长,问多少年后产值会翻一番,设基值为p=100 P=100 : r=.08 N=0 While p200 p=p*(1+r) n=n+1 Wend Print n;“years” , “p=”;p end,例,给一个整数,判断它是否为素数,输入n,进入循环的初始条件是: I=2, flag=1 结束标志: flag=0,m=int(sqr(n) ,I=2 ,flag=1,当I=m且flag=1,n能被I整除,Y,Flag=0,N,I=I+1,Flag=1,Y,n是素数,N,n不是素数,QB6-6,INPUT “N=“; N M = INT(SQR(N) I = 2: FLAG = 1 WHILE I = M AND FLAG = 1 IF N MOD I = 0 THEN FLAG = 0 ELSE I = I + 1 WEND IF FLAG = 1 THEN PRINT N; “IS“ ELSE PRINT N; “IS NOT“ END,Sum=0:n=0 read x while x-1 sum=sum+x n=n+1:read x wend aver=int(sum/n*10+.5)/10 print “average=“;aver data 96,78,66,87 end,有若干名学生QBASIC期中考试成绩分别为96,78,66,87,求他们的平均成绩,Sum=0, n=0,Read x,While x-1,Sum=sum+x,N=n+1,Read x,求aver,输出 aver,DO循环结构,格式1 DO WHILE 条件 循环体 LOOP 格式2 DO 循环体 LOOP WHILE 条件,当条件为真,循环体,当条件为真,格式3 DO UNTIL 条件 循环体 LOOP 格式4 DO 循环体 LOOP UNTIL ,DO循环结构,直到条件满足,当条件为真,求s=12+22+32+n2 直到s=108,用当型循环实现 s=0:n=0 while s1E8 n=n+1 s=s+n*n wend print n,s end,用先测试直到型实现 s=0:m=0 do until s=1e8 n=n+1 s=s+n*n loop print n,s end,例,第五节 循环的嵌套,在一个循环体内又完整地包含另一个循,称为循环的嵌套。 内外循环不得交叉 不允许从外循环转入内循环体,但允许从内循环转到外循环体。 每一层循环的循环变量名不能相同,求1!+2!+n!,用单循环 输入n 赋初值 阶乘的初值 t=1 和的初值s=0 确定循环次数 次数为n,即I=1 to n 在循环体内求i的阶乘 t=t*i, 在循环体内累加 s=s+t QB6-7,QB6-8,CLS INPUT n s = 0: t = 1 FOR i = 1 TO n t = t * i s = s + t NEXT i PRINT t, s END,CLS INPUT n s = 0: t = 1: i = 1 WHILE i = n t = t * i s = s + t i = i + 1 WEND PRINT t, s END,用双重循环 输入n 外循环求和 和的初值为s=0 循环次数为I=1 to n s=s+t 内循环求一个数i的阶乘t 阶乘的初值为1 循环次数为j=1 to I t=t*j QB6-9,注意初值的位置,CLS INPUT n s = 0 FOR i = 1 TO n t = 1 FOR j = 1 TO i t = t * j NEXT j s = s + t NEXT i PRINT s END,统计五个班级各班的平均成绩,打印出学生人数和平均成绩,用双重循环 内循环求每个班的总成绩 循环次数未知,所以用WHILE循环 和的初值s=0 人数的初值n=0 结束标志x=-1 外循环求每个班的平均值并输出 循环次数为5 QB6-10 QB6-11,CLS FOR CLASS = 1 TO 5 S = 0: N = 0 READ X WHILE X -1 S = S + X N = N + 1 READ X WEND AVER = INT(S / N * 10 + .5) / 10 PRINT CLASS, N, AVER NEXT CLASS QB6-10,DATA 66,79,57,90,88,100,95,73,62,85,-1 DATA 60,85,72,99,81,55,76,65,-1 DATA 75,63,98,79,82,87,95,60,73,77,-1 DATA 82,85,94,76,61,48,65,74,62,-1 DATA 97,92,63,86,71,88,64,73,60,-1 END,打印出100以内的素数,外循环 给出2100自然数n 内循环 判断n是否为素数,如果是则输出 框架 for n=2 to 100 m=int(sqr(n) 判断n是否能被2m的数整除 是,输出n next n,找出所有的水仙花数,For I=100 to 999 a=int(I/100) b=int(I-a*100)/10 c=I-a*100-b*10 if a*a+b*b+c*c=I then print I Next I End,Rnd(x)的应用,10*rnd (0,10) 100*rnd (0,100) Int(100*rnd) 0,99 Int(101*rnd) 0,100 Int(90*rnd)+10 10,99 Int(21*rnd)-10 -10,10,算术练习程序 (1),For I=1 to 10 a=int(90*rnd)+10 b=int(90*rnd)+10 print a; “+”;b; “=”; input c if c=a+b then print “Good!”:s=s+10 else print “wrong!” Next I Print “score is”;s end,else if c=-1 then print “End” else print “Wrong! Try” Loop until c=a+b or c=-1 Loop until c=-1,Randomize timer() Do a=int(90*rnd)+10 b=int(90*rnd)+10 do print a; “+”;b “=”; input c if c=a+b then print “Good!”,算术练习程序 (2),一般实心图形用双重循环 外循环 行数就是循环的次数FOR I 确定每行图形的起始位置(与I有关系) 结束内循环后换行(外循环的最后一条语句) 内循环 每行的输出个数就是循环次数FOR J 一般J与I或每行的起始位置有一定的关系 输出第J行的图形,编制程序打印图形,打印如下图形,外循环 for i=1 to 5 每行的起始位置 tab(20-I) 内循环 for j=1 to 2*i-1 连续输出“*”,* * * * *,QB6-12,变换,CLS FOR I = 1 TO 5 PRINT TAB(20 - I); FOR J = 1 TO 2 * I - 1 PRINT “*“ ; NEXT J PRINT NEXT I END,打印如下图形,外循环 for I=1 to 5 起始位置 p=abs(3-I) print tab(20-p) 内循环 每行打印个数 for j=1 to 2+2p,* * * * *,qb6-13,CLS FOR i = 1 TO 5 p = ABS(3 - i) PRINT TAB(20 - p); FOR j = 1 TO 2 + 2 * p PRINT “*“; NEXT j PRINT NEXT i END,用泰勒多项式求SIN X的近似值,输入n,x 外循环的初值为y=0 外循环求和I=1 to n y=y+x(2i-1)/t 给出内循环的初值t=1 内循环求I的阶乘t 输出y QB6-14、 QB6-15,INPUT “N,X=“; N, x y = 0 FOR i = 1 TO N t = 1 FOR J = 1 TO 2 * i - 1 t = t * J NEXT J y = y + (-1) (i + 1) * x (2 * i - 1) / t NEXT i PRINT “sin“; x; “=“; y END QB6-14,INPUT “N,X=“; N, X Y = 0 SIGN = 1 FOR I = 1 TO N P = 1 T = 1 FOR J = 1 TO 2 * I -

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论