ccidnet????

出版日期:2003-03-03 总期号:507 本年期号:07

本期导读
综合报道
零组件
软件.net
游戏空间
数字新生活
办公新人类
网络与安全
教育信息化
社会培训
全国计算机二级笔试
QB试题选析(2002年9月)(二)
《中国电脑教育报》杭大庆


  (6) 有如下程序


  DECLARE SUB sub1(n,j)

  FOR j=2 TO 5

  CALL sub1(n,j):m=m+n

  NEXT j

  PRINT m,n

  

  END

  SUB sub1(n,j)

  n=j+n

  END SUB

  运行后输出的是

  (A)30 14(B)28 14(C)30 15(D)15 15

  解析:本程序循环4次:

  第一次循环,n=0,j=2, 执行CALL sub1(n,j)语句时,n=j+n=2+0=2,然后返回主程序m=m+n=0+2=2;

  第二次循环,n=2,j=3, 执行CALL sub1(n,j)语句时,n=j+n=3+2=5,然后返回主程序m=m+n=2+5=7;

  第三次循环,n=5,j=4, 执行CALL sub1(n,j)语句时,n=j+n=4+5=9,然后返回主程序m=m+n=7+9=16;

  第四次循环,n=9,j=5, 执行CALL sub1(n,j)语句时,n=j+n=5+9=14,然后返回主程序m=m+n=16+14=30。因此,选择A。


  (7) 有如下程序


  DIM a(10)

  FOR j=1 TO 10

  READ a(j)

  NEXT j

  j=1

  INPUT b

  DO WHILE(a(j)〈〉b)AND(j〈=10)

  j=j+1

  LOOP

  PRINT j

  DATA 1,2,4,7,11,16,22,29,37,46,

  END

  从键盘输入11,运行后输出的是

  (A)5(B)6(C)10(D)11

  解析:本程序中,For……next循环是通过read和data语句给数组a(10)赋值。

  Do while……loop循环是当条件为假时退出循环。

  当程序刚执行到DO WHILE(a(j)〈〉b)AND(j〈=10)时,j=1,b=11,a(1)=1,循环条件为真。执行第一次循环。J=J+1=2。

  循环继续判断条件是否为真,此时,j=2,b=11,a(2)=2,循环条件为真。执行循环体。J=J+1=3。

  由此类推,直到j=5时,a(5)=11,循环条件为假,不再执行循环体,退出循环。此时j=5,因此选择A。


  (8)有如下程序


  DIM arr(3,3) AS INTEGER

  FOR m=1 TO 3

  FOR n=1 TO 3

  arr(m,n)=2*m+n

  NEXT n

  NEXT m

  FOR m=1 TO 2

  FOR n=2 TO 3

  PRINT arr(n,m);

  NEXT n

  PRINT

  NEXT m

  END

  运行时输出结果是

  (A)3 4(B)5 7(C)5 6(D)6 7

   5 6 6 8 7 8 8 9

  解析:本程序中,第一个双重循环给数组arr赋值如下:

  a(1,1)=3 a(1,2)=4 a(1,3)=5

  a(2,1)=5 a(2,2)=6 a(2,3)=7

  a(3,1)=7 a(3,2)=8 a(3,3)=9

  而程序中的第二个双重循环是输出数组arr中的部分元素:

   a(2,1) a(3,1)

   a(2,2) a(3,2)

  因此选择B。


  (9) 有如下程序


  DECLARE SUB f(x!,y!)

  a=1:b=1

  FOR j=1 TO 3

  CALL f((a),b)

  NEXT j

  PRINT a;b

  END

  SUB f(x,y)

  x=x+y

  y=x+y

  END SUB

  运行后的输出结果是

  (A)15 1(B)1 15(C)13 2(D)21 34

  解析:在本程序中,实际参数中的变量a是用圆括号括起来的,因此为值传递方式,而不是按地址传递方式,即将变量的值传递给形式参数,形式参数不影响实际参数变量。实际参数中的变量b则按地址传递方式,即将变量的值传递给形式参数,形式参数的改变影响实际参数变量。

  本程序中,循环体执行三次。

  第一次循环,a=1,b=1,j=1。执行CALL语句时,实际参数a,b分别把值1传递给形式参数x,y(注:a与形式参数x不共用同一内存单元,而b与形式参数y共用同一内存单元),即x=1,y=1。所有执行完过程 sub f后,x=2,y=3。Y把值传递给b,故b=3;

  第二次循环,a=1,b=3,j=2。执行CALL语句,调用完过程 sub f后,x=4,y=7。Y把值传递给b,故b=7;

  第三次循环,a=1,b=7,j=3。执行CALL语句,调用完过程 sub f后,x=8,y=15。Y把值传递给b,故b=15;所以执行完循环体后,a=1,b=15,答案选择B。

  (下期将刊登基础题试题选析。)