计算机二级

下列程序段执行时在屏幕上显示的结果是( )。 x1=20 x2=30 SET UDFPARMS TO VALUE DO TEST WITH xl,x2 ?xl,x2 PROCEDURE test PARAMETERS a,b X=a a=b b=xA.30 30B.30 20C.20 20D.20 30

题目

下列程序段执行时在屏幕上显示的结果是( )。 x1=20 x2=30 SET UDFPARMS TO VALUE DO TEST WITH xl,x2 ?xl,x2 PROCEDURE test PARAMETERS a,b X=a a=b b=x

A.30 30

B.30 20

C.20 20

D.20 30

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

下列程序段的输出结果是 CLEAR STORE 10 TO A STORE 20 TO B SET UDFPARMS TO REFERENCE DO SWAP WITH A,(

A.10 20

B.20 20

C.20 10

D.10 10


正确答案:B
解析:本题考查参数传递以及模块的调用。命令SET UDFPARAMS TO REFERENCE用来设置参数传递方式为按引用传递。也就是说,当形参变量值改变时,实参变量也要随之改变。但是由于本题采用的调用方式是:DOWITH,所以调用方式不受参数UDFPARAMS的影响。调用过程中变量A是按引用传递,变量B用括号括起来,因此B始终是按值传递。模块SWAP的功能是将两个变量交换。程序开始时变量A和B的值分别为10和20,执行模块SWAP之后将A和B交换,由于变量A是按引用传递,因此交换后变量A指向B的地址,因此返回主程序后A的值为20,变量B为按值传递,模块结束后,其值仍为20,因此返回主程序后,变量A和B指向同‘个地址,其值均为200故选项B是正确答案。

第2题:

如下程序的输出结果是( )。 public class Test { void printValue(int m) { do { System.out.println("The value is"+m); } while( --m>10) } public static void main(String args[]) { int i=10; Test t=new Test(); t.printValue(i); } }

A.The value is 8

B.The value is 9

C.The value is 10

D.The value is 11


正确答案:C
解析:此题考查的是do-while循环和“--”操作符的知识。do-while最少执行一次,在执行完do中的内容后,判断while中的条件是否为true。如果为true,就再执行do中的内容,然后再进行判断。以此类推,直到while的判断为false时退出循环,执行循环后面的内容。而“--”操作符的规则是,变量右边的“--”将先进行运算,然后才使变量的值减一。而在变量左边的“--”,则先将变量的值减一再运算。本程序中I的值为10,当程序运行到do-while循环时,程序先执行一次循环后然后再做判断,因此选C。

第3题:

下列程序段执行以后,内存变量A和B的值是 ______。 CLEAR A=10 B=20 SET UDFPARMS TO REFERENCE DO SQ WITH(A) ,B &&参数A是值传送,B是引用传送 ?A,B PROCEDURE SQ PARAMETERS X1,Y1 X1=X1*X1 Y1=2*X1 ENDPROC

A.10 200

B.100 200

C.100 20

D.10 20


正确答案:A
解析:过程定义时,如果形式参数被说明为传值,则过程调用只是相应位置实参的值“单向”传送给形参处理,而被调用过程内部对形参的任何操作引起的形参值的变化均不会反馈、影响实参的值。由于这个过程,数据的传递只是单向性,故称为“传值调用”的“单向”作用形式。反之,如果形式参数被说明为传址,则过程调用是将相应位置实参的地址传送给形参处理,而被调用过程内部对形参的任何操作引起的形参值的变化又会反向影响实参的值。在这个过程中,数据的传递具有双向性,故称为“传址调用”的“双向”作用形式。此题中参数A为值传送,即A值为10;参数B为引用传送,根据X1=X1*X1;Y1=2*X1得Y1值为200即B的值。

第4题:

下列程序段执行时在屏幕上显示的结果是

x1=20

x2=30

SET UDFPARNS TO VALUE

DO test WITH xl,x2

7 xl,x2

PROCEDURE test

PARAMETERS a,b

x=a

a=b

b=x

ENDPRO

A.30 30

B.30 20

C.20 20

D.20 30


正确答案:B
解析:过程test实现了两个数据的互换,即输出结果为x1=30,x2=20。

第5题:

有如下程序: * * *主程序:P.prg* * * * * *子程序:P1.prg* * * SET TALK OFF X2=X2+1 STORE 2 TO X1,X2,X3 DO P2 X1=Xl+1 X1:Xl+1 DO PI RETURN ?xl+x2+x3 * * *子程序:P2.prg* * * RETURN x3=x3+1 SET TALK ON RETURN TO MASTER 执行命令DOP后,屏幕显示的结果为

A.3

B.4

C.9

D.10


正确答案:C
解析:首先x1的值在主程序中加1,变为3,然后调用后面的子程序p1,x2加1,变为3,接着调用于程序P2,x3加1变为3,此时就没有再执行p1中的x1+1。执行x3就直接返回主程序。由参数任递知x1,x2,x3都为3。

第6题:

如下程序的运行结果是【9】。

CLEAR

STORE 100 TO x1 x2

SET UDFPARMS TO VALUE

DO p4 WITH x1,(X2)

?x1.x2

*过程p4

PROCEDURE p4

PARAMETERS x1,X2

STORE x1+1 TO x1

STORE x2+1 TO x2

ENDPROC


正确答案:101 100
101 100 解析:SET UDFPARMS TO VALUE命令是设置参数传递的方式为按值传递,表示形参变量值的改变不会影响实参变量的取值;SET UDFPARMS TO REFERENCE命令是设置参数传递的方式为按引用传递,形参变量值改变时,实参变量值也随之改变。
程序首先给x1和x2赋初值100。
DO p4 WITH x1,(x2)命令是调用p4模块程序,用此命令调用模块程序时的参数传递方式并不受UDFPARMS值的设置的影响,其中,实参x1是变量,虽然设置了参数传递的方式为按值传递,但变量还是会按引用传递,传递的不是变量的值,而是变量的地址,在模块程序中对形参变量值的改变,同样是对实参变量值的改变,但用一对圆括号将一个变量括起来使其变成一般形式的表达式时,不管什么情况,总是按值传递,所以x2、的值是不变的,即还是100。
在p4模块程序中,PARAMETERS x1,x2命令是建立私有变量x1和x2,然后利用STORE赋值命令重新给x1和x2赋值为x+1,此时x1和x2的值都是101。
调用模块程序时,系统自动把实参x1的地址传递给对应的形参x1,当形参x1重新赋值为101后,实参的值也会相应的变为101,而x2因加了括号,成为了一般形式的表达式,不管什么情况,总是按值传递,x2的值不变,还是100,故本题答案为101 100。

第7题:

下列程序段执行以后,内存变量 A 和 B 的值是

CLEAR

A=10

B=20

SET UDFPARMS TO REFERENCE

DO SQ WITH (A),B && 参数是值传送, B 是引用传送

? A , B

PROCEDURE SQ

PARAMETERS X1,Y1

X1=X1*X1

Y1=2*X1

ENDPROC

A)10 200

B)100 200

C)100 20

D)10 20


正确答案:A

第8题:

下列程序段的输出结果是【 】。

public class Test {

void printValue(int m) {

do {

System.out.println("The value is"+m);

}while (--m>10);

}

public static void main (String args[]) {

int i=10;

Test t= new Test();

t.printValue(i);

}

}


正确答案:Thevalue is 10
Thevalue is 10 解析:本题考查do-while循环的用法。do-while至少执行一次,在执行完do中的内容后,判断while中的条件是否为true。如果为true,就再执行do中的内容,然后再进行判断。依次类推,直到while的判断为false时退出循环,执行循环后面的内容。题目中m的值为10,当程序运行到do-while循环时,程序先执行一次循环然后再作判断,在判断条件--m>10时,其值为false,退出循环。因此只执行了一次输出操作,输出内容为:The value is 10。

第9题:

下列程序段执行时在屏幕上显示的结果是

DIME a(6)

a(I)=1

a(2)=l

FOR i=3 TO 6

a(i)=a(i-1)+a(i-2)

NEXT

?a(6)

A.5

B.6

C.7

D.8


正确答案:D
解析:该程序最后求得的结果是a(6),其中:a(6)=a(4)+a(5),a(5)=a(3)+a(4),a(4)=a(2)+a(3),a(3)=a(1)+a(2)=2,最后可分别求得a(4)=3,a(5)=5,a(6)=8。

第10题:

下列程序段执行时在屏幕上显示的结果是( )。 DIME a(6) a(1)=1 a(2)=1 FOR i=3 TO 6 a(i)=a(i-l)+a(i-2) NEXT ?a(6)

A.5

B.6

C.7

D.8


正确答案:D
D。【解析】这是一个求斐波那契数列(因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”),通过FOR循环结构达到递归运算的结果。a(6)应为8。

更多相关问题