背景:                 
[本书目录] [图书首页] [本书讨论区]  
链接地址:http://www.17xie.com/read-6159.html    注册17xie 一起来写书 实现您的出书梦想!

7.3.4  循环的嵌套(多重循环)

1.嵌套的概念

循环语句的循环体中包含循环语句,称为“循环嵌套”,外层的叫外循环,在内层的叫内循环。在一个循环内包含一个循环语句的为双重循环,内循环体又可包含循环语句,构成多重循环。多重循环增加了计算处理的能力,能解决一些比较重杂的问题。

双重循环的结构为:

FOR  〈循环变量1〉=〈初值1 TO 〈终值1 STEP 〈步长1〉]

FOR 〈循环变量2〉=〈初值2 TO 〈终值2 STEP 〈步长2〉]

    〈循环体〉

NEXT  〈循环变量2

NEXT  〈循环变量1

[7-4]  打印九九乘法表。N-S图如图7-4

7-4  N-S

源程序:

REN EXAMPLE 4

FOR A1 TO 9

FOR B1 TO A

PRINT USING "#"A

PRINT "*"

PRINT USING "-#=##"BA * B

NEXT B

PRINT

NEXT A

END

运行结果:

1*11

2*12 2*24

3*13 3*26 3*39

9*19 9*218 9*327 9*436 9*545 9*654 9*763 9*872 9*981

2.嵌套的使用注意事项

1)多重循环嵌套,一定是外循环套内循环,内外循环不能交叉,如例(a)是正确的,(b)是错误的。内外层的变量不能同名。

2)在同一外循环体中,可以有并列的内循环出现。对于并列循环的变量名可以相同也可以不相同,如例(c)。

FOR X                               FOR X                                        FOR X

FOR Y                                   FOR Y                                            FOR Y

NEXT Y                                NEXT Y                                         NEXT Y

NEXT X                                     NEXT Y                                               FOR Y

NEXT Y

NEXT X

a)正确的嵌套                   b)错误的嵌套                c)内循环并列的情况

7.3.5  应用举例

[7-5]  用多项式计算自然数e的近似值,用公式

e= =1+ + + ++

算法1

1.当N给定后,用内层循环计算每一项的分母的值;

2.用外层循环计算N项的和。

源程序:

REM EXAMPLE 5A

S1

INPUT   "N="N

FOR I1 TO N

T1

FOR J1 TO I

TT * J

NEXT J

SS+1/T

NEXT I

PRINT  "E="S

END

算法2

将多项式改写如下:

e=1+ (1+ (1+ (1+ (1+ ))))

由内向外不断计算(1+ ),其中N的值由N减到1,从而构成一个循环。

源程序:

REM EXAMPLE 5B

INPUT   "N"N

S1

FOR IN TO 1 STEP -1

S1+S/1

NEXT 1

PRINT   "E="S

END

[7-6]  我国古代数学张邱建在《算经》里提出了一定方程问题。即“百鸡问题”:公鸡每只值5元,母鸡每只值3元,小鸡3只值1元,1百元钱买1百只鸡。问公鸡、母鸡、小鸡各可买多少?

算法:

设公鸡、母鸡、小鸡各为xyz,可得方程:

这个不定方程式有多个答案,我们用穷举法求解。

所谓穷举法,就是对所有可能的答案一一列举,从中判断哪些答案是符合题设条件的。分析一下XYZ的可能取值范围:公鸡最少1只,最多只能买20只,故1X20;母鸡1Y33;只要XY值一确定,Z100-X-Y

在各种XY值的情况下,一一列举出XY所能取值的情况。因此用双层循环编写程序。外层循环控制X(即FOR X1 TO 19),内层循环控制Y(即FOR Y1 TO 33)。

源程序:

REM EXAMPLE 6

PRINT '"Cock","Hen","Chicken"

FOR X1 TO 19

FOR Y1 TO 33

Z100-X-Y                               '满足百鸡条件

IF 5*X+3*Y+Z/3100 THEN PRINT XYZ  '满足百鸡条件

NEXT Y

NEXT X

END

运算结果:

Cock                Hen               Chicken

4                    18                 78

8                    11                 81

12                   4                  84

[7-7]  计算:

算法1

上式可化为

因此可分别计算

分析上面两式,有共同的规律可循,即

1)分子的指数和阶乘数相同;

2)多项式各项指数的值是4的级差:y1的变化范围是(1~4n+1,y2的变化范围是(3~4n-1)。

这样,我们可以用双层循环:

1)内层,计算每一项的分子分母;

2)外层,计算各项之和;

3)最后,sinXy1-y2

N-S图如图7-5所示。

7-5  N-S

源程序:

REM EXAMPLE 7A

INPUT NX

Y10Y20

FOR I1 TO 4*N+1 STEP  4

T1S1

FOR I1 TO 1

TT * KSS * X

NEXT K

Y1Y1+S/T

NEXT I

FOR I3 TO 4*N-H STEP  4

M1P1

FOR K1 TO I

MM * KPP * X

NEXT K

Y2Y2+P/M

NEXT I

YY1-Y2

PRINT  "Y="Y

END

运行结果:

45

Y-.9587822

54

Y-.7568007

算法2

观察该多项式,我们会发现:①各项的符号,奇数项为正,偶数项为负;②分子的指数和阶乘数相同,各项指数之间,都相差为2。因此,可以把每项的计算用内层循环实现,各项求和用外层循环实现。求和时,每项乘一个符号系数S=(-1*S,设初值S1。这样,每执行一次,S的值就交替为-1+1,从而把奇数项置成正,偶数项置成负。

源程序:

REM EXAMPLE 7B

INPUT  "X,N="XN

YXS1

FOR I2 TO N

P1K1

FOR J1 TO 2*I-1

PP * JKK * K

NEXT J

S=(-1 * S

YY+S * P/K

NEXT I

PRINT  "sin("X")"Y

END

7.4  DO循环语句(DOLOOP

7.4.1  格式

DO循环可分为“当型循环”与“直到型循环”两种,而在当型和直到型中又可分为先进行条件判断再执行循环体和先执行循环体再进行条件判断两种类型。由此构成4种格式如下:

7-1  循环类型

 

先判断后执行

先执行后判断

WHILE(当型)

DO WHILELOOP

DOLOOP WHILE

UNTIL(直到型)

DO UNTILELOOP

DOLOP UNTIL

格式1

DO WHILE〈条件〉

〈循环体〉

LOOP

说明:当条件成立时,执行循环体;当条件不成立时,一次也不执行循环体。

格式2

DO

〈循环体〉

LOOP WHILE〈条件〉

说明:首先执行循环体,再判断条件是否成立。如果条件成立,再执行循环体;如果条件不成立,就退出循环体。

格式3

DO UNTIL〈条件〉

〈循环体〉

LOOP

说明:当条件不成立时,执行循环体,直到条件成立时,退出循环体。

格式4

DO

〈循环体〉

LOOP UNTIL〈条件〉

说明:首先执行循环体,再判断条件是否成立。如果条件不成立,再执行循环体;如果条件成立,就退出循环体。

上述4种格式中的〈条件〉为关系表达式或逻辑表达式。

7.4.2  举例

[7-8]  求自然数的平方和SSN

 

源程序1               源程序2

'EXAMPLE 8A             'EXAMPLE 8B

INPUT N                  INPUT N

I=0                       I=0

S=0                       S=0

DO WHILE S<N            DO

I=I+1                      I=I+1

S=S+I*1                   S=S+I*1

LOOP                     LOOP WHILE S<N

PRINT  "S="S            PRINT  "S="S

END                      END

源程序3              源程序4

'EXAMPLE 8C             'EXAMPLE 8D

INPUT N                  INPUT N

I=0                       I=0

S=0                      S=0

DO UNTIL S>=N           DO

I=I+1                    I=I+1

S=S+I * I                 S=S+I * I

LOOP                   LOOP UNTIL S>=N

PRNIT  "S"S         PRINT  "S="S

END                    END


字数:9085    最后更新:1年以前 [08-24 10:26]我爱钱 修改
本页编辑者:我爱钱  
[前一页]:第七章 循环结构  [后一页]:第七章
[在本页中加入书签] [收藏本书] [推荐本书]
  17xie论坛 > 本书讨论区 > 本页评论   (共0条)
发表评论

用户名称 匿名发表
评论内容
验证码

关于我们 | 版权声明 | 免责声明 | 诚聘英才 | 联系我们 | 合作伙伴 | 友情链接 | 广告合作 | 提交意见
Copyright © 2007 17xie.com 互联网协同写书平台 京ICP备08002671号