
| 出版日期:2003-03-03 总期号:507 本年期号:07 |
|
全国计算机二级笔试
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 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。 (下期将刊登基础题试题选析。) |
|||||||||||||||||||||||