itgle.com

求两数的最大公约数function gcd(a,b:integer):integer;

题目

求两数的最大公约数

function gcd(a,b:integer):integer;


相似考题
更多“求两数的最大公约数function gcd(a,b:integer):integer;”相关问题
  • 第1题:

    ( 22 )下面是求最大公约数的函数的首部

    Function gcd ( ByVal x As Integer, ByVal y As Integer ) As Integer

    若要输出 8 、 12 、 16 这 3 个数的最大公约数,下面正确的语句是

    A ) Print gcd ( 8,12 ) , gcd ( 12,16 ) , gcd ( 16,8 )

    B ) Print gcd ( 8 , 12 , 16 )

    C ) Print gcd ( 8 ) , gcd ( 12 ) , gcd ( 16 )

    D ) Print gcd ( 8 , gcd ( 12,16 ))


    正确答案:D

  • 第2题:

    单击命令按钮时,下列程序代码的执行结果为( )。 Private Function FirProc(x As Integer,y As Integer,z As Integer) FirProc=2*x+y+3*z End Funcfion Private Function SecProc(x As Integer,y As Integer,z As Integer) SecProc=FirProc(z,x,y)+x End Funcfion Private Sub Command1_Click() Dim a As Integer Dim b As Integer Dim c As Integer a=2 b=3 c=4 Printf SecProc(c,b,a) End Sub

    A.21

    B.19

    C.17

    D.34


    正确答案:A

  • 第3题:

    下面是求最大公约数的函数的首部Function gcd(ByVal x As Integer,ByVal y As Integer)As Integer若要输出8、12、16这3个数的最大公约数,下面正确的语句是

    A.Print ged(8,12),gcd(12,16),gcd(16,8)

    B.Print ged(8,12,16)

    C.Print gcd(8),gcd(12),gcd(16)

    D.Print gcd(8,gcd(12,16))


    正确答案:D
    解析:函数中的两个参数是求最大公约数的两个数,函数返回值是这两个数的最大公约数。求8、12、16这三个数的最大公约数,可以先求出其中两个数的最大公约数,然后再将返回的数与剩下的数值求最大公约数。选项A)输出的是三个数,它们分别是每两个数的最大公约数,不是三个数的最大公约数;选项B)函数参数为两个,函数调用错误;选项C)函数参数为两个,函数调用错误,所以正确的答案为D)。

  • 第4题:

    单击命令按钮时,下列程序的执行结果是 Private Sub Command1_Click() Dim a As Integer,b As Integer,C As Integer a=3 b=4 c=5 Print SecProc(c,b,A)End Sub Function FirProc (x As Integer,y As Integer,z As Integer) FirProc=2 * x + y + 3 * z+2 End Function Function SecProc (x As Integer,y As hteger,z As Integer) SecProc=FirProc(z,x,y)+x+7 End Function

    A.20

    B.25

    C.37

    D.32


    正确答案:C
    解析:此题程序代码中用了两层调用,我们对样的问题要多加小心,不能掉以轻心,千万不要把实参和相对应的形参弄混淆。主调过程Commandl_Click;输出的是SecProc(c,b,A)返回值,调用过程SecProc时,主调过程分别把实参c、b、a地址传给形参x、y、z,此时在过程SecProc中,SecProc(a,C.B)+7。由此看出,程序段执行此语句时,将调用过程FirProe。把实参a,c,b的地址分别传给形参x、y、z,,此时在过程FirProe中,Firproc=2*x+y+3*z+2,所以FirProc(a,c,B)=6+4+15+2=27,SecProc(a,c,B)=27+3+7=37。注意:过程的定义和调用。

  • 第5题:

    单击命令按钮时,下列程序代码的执行结果为 ( ) Function FirProc(x As Integer, y As Integer, z As Integer) FirProc=2*x+y+3*z End Function Function SecProc(x As Integer, y As Integer, z As Integer) SecProc=FirProc(z, x, y)+x End Function Private Sub Commandl Click() Dim a As Integer, b As Integer, c As Integer a=2 :b=3 :c=4 Print SecProc(c, b,A)End Sub

    A.21

    B.19

    C.17

    D.34


    正确答案:A
    解析:执行语句Print SecProc (c,b,a)时,调用SecProc函数,此时将实参c, b,a的值对应传递给形参x,y,z。得SecProc =FirProc(a,c,b)+c,此时又需要调用Fir- Proc函数将a,c,b的值传递给对应形参x,y, z。在FirProc函数中执行语句FirProc=2*x +y+3*z即执行语句FirProe=2*a+c+3 *b其结果值为2*2+4+3*3即17。故 FirProe(a,c,b)的返回值为17。再与c相加即得SecProc函数的返回值结果21。选项A正确。

  • 第6题:

    设有以下函数过程: Function fun(a As Integer,b As Integer) Dim c As Integer If a<b Then c=a:a=b:b=C End IF c=0 Do c=c+a Loop Until c Mod b=0 fun=c End Function 若调用函数fun时的实际参数都是自然数,则函数返回的是( )。

    A.a、b的最大公约数

    B.a、b的最小公倍数

    C.a除以b的余数

    D.a除以b的商的整数部分


    正确答案:B
    B。【解析】本题考查了DoLoop循环,实现的是最小公倍数。本题中If语句实现了a和b交换。

  • 第7题:

    下列子过程语句中正确的是( )。

    A.Sub f1(ByVal() As Integer)

    B.Sub f1(n() As Integer)As Integer

    C.Function f1(f1 As Integer)As Integer

    D.Function f1(ByVa1 f as Integer)


    正确答案:D
    解析:Sub过程定义的一般格式如下:[Private|Public|Friend][Sratic]Sub过程名[(参数表)]语句块[ExitSub][语句块]EndSub其中,Private|Public|Friend说明Sub过程的访问权限,如果没有Privge|Public|Friend显式指定,则Sub过程按缺省(公用的)访问权限定义。参数表含有在调用耐要传递给该Sub过程的参数的类型和个数,多个变量则用逗号隔开。参数的格式为:[ByVal|ByRef]变量名[()][As数据类型]格式中[]里的内容表示可选,变量可以是简单变量或者敷组。选项A中参数没有参数名,所以是错误的;因为Sub过程没有返回值,所以选项B是错误的。Function过程的定义的一般格式如下:[Public|private|Friend][Static]Function过程名[(参数表)][As类型][语句块](过程名=表达式)[ExitFunction][语句块]EndFunction“As类型”是Function过程返回的值的数据类型,如果省略,则默认为Variant。Function函数中参数名不能与函数名相同,因此选项C错误;选项D中省略了返回值类型,是正确的。

  • 第8题:

    求两数的最小公倍数

    function lcm(a,b:integer):integer;


    正确答案:

     

    begin
    if a<b then swap(a,b);
    lcm:=a;
    while lcm mod b>0 do inc(lcm,a);
    end;

  • 第9题:

    折半查找

    function binsearch(k:keytype):integer;

    var low,hig,mid:integer;


    正确答案:

     

    begin
    low:=1;hig:=n;
    mid:=(low+hig) div 2;
    while (a[mid].key<>k) and (low<=hig) do begin
    if a[mid].key>k then hig:=mid-1
    else low:=mid+1;
    mid:=(low+hig) div 2;
    end;
    if low>hig then mid:=0;
    binsearch:=mid;
    end;

  • 第10题:

    下面4个CT函数中是用来判断用户输入的数是否为奇数的,是奇数的返回1,否则返回0,其中正确的是

    A.Function CT(ByVal a As Integer) If a Mod 2=0 Then Return 0 ElSe Return 1 End if End Function

    B.Function CT(ByVal a As Integer) If a Mod 2=0 Then CT=0 Else CT=1 End if End Function

    C.Function CT(ByVal a As Integer) If a Mod 2=0 Then CT=1 Else CT=0 End if End Function

    D.Function CT(ByVal a As Integer) If a Mod 2=0 Then Return 1 Else Return 0 End if End Function


    正确答案:B
    解析:在此题中考查了函数的定义,及其有关操作,对于奇数的判断是用取模来判断的,奇数不能被2争取,或者说奇数除以2后的余数是1,而偶数能被2整数,即偶数除以2后的余数是0,因此判断语句应为IfaMod2=0ThenCT=0ElseCT=1;即当a为偶数时返回值是0,a为奇数时返回值是1,符合题意。

  • 第11题:

    单击命令按钮时,下列程序代码的执行结果为______。 Private Function FirProc (x As Integer,y As Integer,z As Integer) FirProc=2*x+y+3*z End Function Private Function SecProc(x As Integer,y As Integer,z As Integer) SecProc=FirProc(z,x,y)+x End Function Private Sub Command1_Click() Dim a As Integer Dim b As Integer Dim C As Integer a=2 b = 3 c = 4 Print SecProc(c,b,A) End Sub

    A. 21

    B.19

    C.17

    D.34


    正确答案:A

  • 第12题:

    单击命令按钮时,下列程序的执行结果是 Private Sub Command1_Click() Dim a As Integer, b As Integer, c As Integer a=3:b :4:c =5 Print SecProc ( c, b,A)End Sub Function FirProc(x As Integer, y As Integer, z As Integer) FirProc:2 * x + y + 3 * z+2 End Function Function SecProc( x As Integer, y As Integer, z As Integer) SecProc = FirProc ( z, x, y) + x + 7 End Function

    A.20

    B.25

    C.37

    D.32


    正确答案:C
    解析:此题程序代码中用了嵌套调用,我们对这样的问题要多加小心,不能掉以轻心,千万不要把实参和相对应的形参弄混淆。主调过程Command1_Click输出的是SecProc(c,b,a)的返回值,调用过程SecProc时,主调过程分别把实参c、b、a地址传给形参x、y、z,此时在过程SecProc中,SecProc;FirProc(a,c,B)+7。由此看出,程序段执行此语句时,将调用过程FirProc。把实参a,c,b的地址分别传给形参x、y、z,此时在过程FirProc中,FirProc=2*x+y+3*z+2,所以FirProe(a,c,b)=6+4+15+2=27,SecProc(a,c,b)=27+3+7=37。

  • 第13题:

    下列程序运行后,单击命令按钮,窗体显示的结果为( )。 Private Function pl(x As Integer,y As Integer,z As Integer) pl=2*x+y+3*z End Function Private Function p2(X As Integer,y As Integer,z As Integer) p2=p1(z,y,x)+x End Function Private Sub Commandl_Click()

    A.23

    B.19

    C.21

    D.22


    正确答案:A

  • 第14题:

    下列子过程语句中正确的是 A.Sub f1(By Val()As Integer) B.Sub f1(n()As Integer)As Integer C.Function f1(f1 As Integer)As Integer D.Function f1(By Val f As Integer)


    正确答案:D
    【解析】Sub过程定义的一般格式如下:
      [PrivateIPublicIFriend][Static]Sub 过程名[(参数表)]
      语句块
      [Exit Sub]
      [语句块]
      End Sub
      其中,Private|Public|Friend说明Sub过程的访问权限,如果没有Private|Public|Friend显式指定,则Sub过程按默认(公用的)访问权限定义。
      参数表含有在调用时要传递给该Sub过程的参数的类型和个数,多个变量则用逗号隔开。参数的格式为:
      [ByVal|ByRef]变量名[()][As数据类型]
      格式中[]里的内容表示可选,变量可以是简单变量或者数组。选项A)中参数没有参数名,所以是错误的;
      Sub过程没有返回值,所以选项B)是错误的。
      Function过程的定义的一般格式如下:
      [Public|Private|Friend][Static]Function过程名[(参数表)][As类型]
      [语句块]
      [过程名=表达式]
      [Exit Function]
      [语句块]
      End Function
      “As类型”是Function过程返回的值的数据类型,如果省略,则默认为Variant.Function函数中参数名不能与函数名相同,因此选项C)错误,选项D)中,省略了返回值类型,是正确的。

  • 第15题:

    单击命令按钮时,下列程序的执行结果为 Private Sub Command1_Click() Dim a As Integer,b As Integer,c As Integer a=2:b=3:C=4 Print P2(c,b,A)End Sub Private Function P1(x As Integer,y As Integer,z As Integer) P1=2 * X + y + 3 * z End Function Private Function P2(x As Integer,y As Integer,z As Integer) P2=P1(z,x,y) + X End Function

    A.21

    B.19

    C.17

    D.34


    正确答案:A
    解析:对于多个过程或函数依次调用和处理与简单过程调用处理一样,本题先调用函数P2,而函数P2又调用函数P1,结果返回的顺序是从P1到P2,P2计算后输出到调用的地方。

  • 第16题:

    下列过程语句中正确的是( )。

    A.Sub fl(By Val () As Integer)

    B.Sub fl(n() As Integer)As Integer

    C.Function fl(fl As Integer)As Integer

    D.Function fl(By Val f As Integer)


    正确答案:D
    解析:Sub过程定义的一般格式如下:[Private|Public|Friend][Static]Sub过程名[(参数表)]语句块[ExitSub][语句块]EndSub其中,Private|Public|Friend说明Sub过程的访问权限,如果没有Private|Public|Friend显式指定,则Sub过程按缺省(公用的)访问权限定义。参数表含有在调用时要传递给该Sub过程的参数的类型和个数,多个变量则用逗号隔开。参数的格式为:[ByVal|ByRef]变量名[()][As数据类型]格式中[]里的内容表示可选,变量可以是简单变量或者数组.选项A)中参数没有参数名,所以是错误的;因为Sub过程没有返回值,所以选项B)是错误的。Function过程的定义的一般格式如下:[Public|Private|Friend][Static]Function过程名[(参数表)][As类型][语句块][过程名=表达式][ExitFunction][语句块]EndFunction“As类型”是Function过程返回的值的数据类型,如果省略,则默认为Variant。Function函数中参数名不能与函数名相同,因此选项C)错误;选项D)中省略了返回值类型,是正确的。

  • 第17题:

    单击一次窗体之后,下列程序代码的执行结果为______。 Private Sub Command1_ Click() Dim a As Integer, b As Integer, c As Integer a = 1: b = 2: c = 4 Print Value(a, b,C)End Sub Function Num(x As Integer, y As Integer, z As Integer) Num = x * x + y * y + z * z End Function Function Value(x As Integer, y As Integer, z As Integer) Value = Num(x, y, z) + 2 * x End Function

    A.21

    B.23

    C.19

    D.35


    正确答案:B

  • 第18题:

    在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程: Private Sub Command1_Click () Dim a As Integer, b As Integer, c As Integer a = 1: b = 2: c = 3 Print fun2 (c, b,A)End Sub Private Function funl (x As Integer, y As Integer, z As Integer) fun1 = 2 * x + y + 3 * z End Function Private Function fun2(x As Integer, y As Integer, z As Integer) fun2 = fun1(z, x, y)+ x End Function程序运行后,单击命令按钮,则窗体上显示的内容是

    A.7

    B.14

    C.17

    D.30


    正确答案:B
    解析:对于多个过程或函数依次调用的处理和简单过程调用处理一样,本题先调用函数fun2,而函数fun2又调用函数fun1,结果返回的顺序是从fun1到fun2,fun2计算后输出到调用的地方。只要注意函数的调用关系依次处理即可解决此类问题。

  • 第19题:

    下面是求最大公约数的函数的首部( )。 Function fun(By Val x As integer.ByVal Y As Integer)As Integer 若要输出8、12、16这3个数的最大公约数,下面正确的语句是

    A. Print fun(8,12),fun(12,16),fun(16,8)

    B. Prilit fun(8,12,16)

    C. print fun (8,12),fun(12,16),fun(16)

    D. Print fun(8,fun(12,16))


    正确答案:D
    D) 【解析】函数过程在传递参数时,形参表与实参表中对应变量的名字不必相同,但参数的个数、对应位置和对应类型必须相同。本题中的fun函数有两个参数,任何对于fun的调用都必须传递实参为两个整型值;选项A)中得到3个结果,显然不是我们所需要的;选项D)中的函数嵌套调用能够求出3个数的最人公约数。

  • 第20题:

    素数的求法

    A.小范围内判断一个数是否为质数:

    function prime (n: integer): Boolean;

    var I: integer;


    正确答案:

     

    begin
    for I:=2 to trunc(sqrt(n)) do
    if n mod I=0 then begin
    prime:=false; exit;
    end;
    prime:=true;
    end;

  • 第21题:

    以下程序运行后,单击命令按钮,窗体显示的结果是 ______。 Private Function p1(x As Integer,y As Integel,z As Integer) p1=2*x+y+3*z End Function Private Function p2(x As Integer,y As Integer,z As Integer) p2=p1(2,y,x)+x End Function Private SubCommandl_Click() Dim a As Integer Dim b As Integer Dim c As Integer a=2:b=3:c=4 Print p2(c,b,A)

    End Sub

    A.19

    B.21

    C.22

    D.23


    正确答案:D
    解析:当程序执行到Print p2(c,b,a)语句时,首先调用函数过程p2,将实参c、b、a,的值4、3、2按顺序传递给p2的形参x、y、z,使形参x、y、z的值分别是4、3、2。当执行到函数过程p2中的语句p2=p1(z,y,x)+x时,又去调用函数过程p1,并将实参x、y、x的值2、3、4按顺序传递给形参x、y、z,使函数过程p1的形参x、y、z的值分别是2、3、4。于是执行p1中的语句p1=2*x+y+3*x=2*2+3+3*4=4+3+12=19。即函数过程p2中p1(2,y,x)的值为19,因此p2=p1(2,y,x)+x=19+4=23。该值返回给Command1_Click事件过程中的p2(c,b,a),所以窗体显示的值是23。

  • 第22题:

    下面是求最大公约数的函数的首部: Function gcd(ByVal X As Integer,ByVal y As Integer)As Integer 若要输出8、12、16这3个数的最大公约数,下面正确的语句是( )。

    A.Print gcd(8,12),gcd(12,16),gcd(16,8)

    B.Print gcd(8,12,16)

    C.Print gcd(8),gcd(12),gcd(16)

    D.Print gcd(8,gcd(12,16))


    正确答案:D
    D。【解析】GCD函数返回两个或多个整数的最大公约数,最大公约数是能分别将各个参数除尽的最大整数。其语法格戈为GCD(num1,num2,…),Num1,num2,…,为1~255个数值,如果参数为非整数,则截尾取整。所以本题正确的写法是9cd(8,gcd(12,16))。

  • 第23题:

    设有以下函数过程:

    Function fun(a As Integer,b As Integer)

    Dim c As Integer

    If a<b Then

    c=a:a=b:b=C

    End IF

    c=0

    Do

    c=c+a

    Loop Until c Mod b=0

    fun=c

    End Function

    若调用函数fun时的实际参数都是自然数,则函数返回的是( )。

    A.a、b的最大公约数

    B.a、b的最小公倍数

    C.a除以b的余数

    D.a除以b的商的整数部分


    正确答案:B

    B。【解析】本题考查了Do Loop循环,实现的是最小公倍数。本题中If语句实现了a和b交换。