计算机二级

下列程序段的输出结果Clearstore 10 to astore 20 to B.set udfparms to referencedo swap with a,(b)a,bprocedure swapparameters x1,x2temp=X1x1=x2x2=tempendprocA.10 20B.20 20C.20 10D.10 10

题目

下列程序段的输出结果

Clear

store 10 to a

store 20 to B.

set udfparms to reference

do swap with a,(b)

a,b

procedure swap

parameters x1,x2

temp=X1

x1=x2

x2=temp

endproc

A.10 20

B.20 20

C.20 10

D.10 10

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

第1题:

如下程序的运行结果是【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。

第2题:

下列程序段的输出结果是()CLEARSTORE“10”TOASTORE20TOB?A+B

A、1020

B、30

C、10

D、出错


参考答案:D

第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题:

下列程序段执行以后,内存变量A和B的值是( )。 CLEAR A:5 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. 5 50

B. 25 50

C. 25 10

D. 5 20


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

第5题:

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

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。

第6题:

下列程序段执行以后,内存变量 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

第7题:

有以下程序: void swap1(int * a,int * b) {int* c=a; a=b,b=c; } void swap2(int * a,int * b) { int c=* a; * a=*b,*b=c; } main() {int a=10,b=15; swap 1(&a,&b) ; printf("%d,%d,",a,b) ; a=10,b=15; swap 2(&a,&b) ; printf("%d,%d",a,b) ; } 其输出结果为 ______。

A.15,10,10,15

B.15,10,15,10

C.10,15,10,15

D.10,15,15,10


正确答案:D
解析:C语言规定,实参变量对形参变量的数据传递是“值传递”,只由实参传给形参,而不能由形参传回来给实参。在内函数调用结束后,形参单元被释放,实参单元仍保留并维持原值。本题中swapl()函数中,虽然改变了形参指针的值,但实参指针的值并没有改变,所以执行第一个printf后应输出10,15,swap2()函数实现了交换两个变量a和b的值,因此执行第三个printf后输出交换后的值15,10,所以本题答案为D。

第8题:

下列程序段的输出结果是 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是正确答案。

第9题:

有以下程序: main() { chara[]="abcdefg",b[10]="abcdefg"; printf("%d %d\n",sizeof(a),sizeof(b)); } 执行后输出结果是( )。

A.7 7

B.8 8

C.8 10

D.10 10


正确答案:C
解析:本题中定义两个字符型数组并都用字符串常量赋初值,其中a省略了长度,定义了b的长度为10。所以a的长度为赋值给它的字符串的字符个数7加上一个结束转义字符,即a的长度7+1为8。定义时b的长度定义为10,故b的长度为10,因此最后通过函数sizeof()求得的数组a和数组b的长度分别为8和10,所以,4个选项中选项C符合题意。

第10题:

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

A. 10 200

B. 100 200

C. 100 20

D. 10 20


正确答案:A
Visual FoxPro的参数传递规则为:如果实际参数是常数或表达式则传值,如果实际参数是变量则传址,即传递的不是实参变量的值而是实参变量的地址,这样,过程中对形参变量值的改变也将使实参变量值改变。如果实参是内存变量而又希望进行值传递,可以用圆括号将该内存变量括起来,强制该变量以值方式传递数据。题目中参数A按值传递,参数B按引用传递。

更多相关问题