设a、b都是自然数,为求a除以b的余数,某人编写了以下函数: Eunction fun(a As Integer,b As Integer) While a>b a=a—b Wend fun=a End Function 在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是( )。A.把a=a-b改为a=b-aB.把a=a-b改为a=a\bC.把While a>b改为While a%bD.把While a>b改为While a>=b

题目

设a、b都是自然数,为求a除以b的余数,某人编写了以下函数: Eunction fun(a As Integer,b As Integer) While a>b a=a—b Wend fun=a End Function 在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是( )。

A.把a=a-b改为a=b-a

B.把a=a-b改为a=a\b

C.把While a>b改为While a%b

D.把While a>b改为While a>=b


相似考题
更多“设a、b都是自然数,为求a除以b的余数,某人编写了以下函数: Eunction fun(a As Integer,b As Integer) While ab a=a—b Wend fun=a End Function 在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是( )。A.把a=a-b改为a=b-aB.把a=a-b改为a=a\bC.把While ab改为While a%bD.把While ab改为While a=b”相关问题
  • 第1题:

    ( 25 )设有以下函数过程

    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

  • 第2题:

    有人编写了如下程序:

    Private Sub Form_Click()

    Dim s As Integer,x As Integer

    s=0

    x=0

    Do While s=10000

    x=x+1

    s=s+x^2

    Loop

    Pdnt s

    End Sub

    上述程序的功能是:计算s=1+22+32+…+n2+…,直到s>10000为止。程序运行后,发现得不到正确的结果,必须进行修改。下列修改中正确的是

    A.把x=0改为x=1

    B.把Do While s=10000改为Do While s<=10000

    C.把Do While s=10000改为Do While s>10000

    D.交换x=x+l和s=s+x^2的位置


    正确答案:B
    解析:直到s>10000时终止,即:s<=10000时继续,因此本题答案为B)。

  • 第3题:

    设a、b都是自然数,为求a除以b的余数,某人编写了以下函数:

    Function fun(a As Integer,b As Integer)

    While a>b

    a=a-b

    Wend

    fun=a

    End Function

    在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是

    A.把a=a-b改为a=b-a

    B.把a=a-b改为a=a\b

    C.把While a>b改为While a<b

    D.把While a>b改为While a>=b


    正确答案:D
    解析:当a=b时,余数应该为0,而不是a,程序执行结果会跳出循环使fun=a,应该继续循环,正确答案为D)。

  • 第4题:

    下面函数的功能应该是:删除字符串str中所有与变量ch相同的字符,并返回删除后的结果,例如:若str=”ABCDABCD”,ch=”B”,则函数的返回值为:”ACDACD”

    Function delchar(str As String,ch As String)As String

    Dim kAs Integer,temp As String,ret As String

    ret=””

    For k=1 To Len(str)

    temp=Mid(str,k,1)

    If temp=ch Then

    ret=ret&temp

    End If

    Next k

    delchar=ret

    End Function

    但实际上函数有错误,需要修改,下面的修改方案中正确的是( )。

    A.把ret=ret&temp改为ret=temp

    B.把If temp=ch Then改为Iftemp<>ch Then

    C.把delchar=ret改为delchar=temp

    D.把ret=””改为temp=””


    正确答案:B
    解析:Mid函数用于提取字符串中的指定位数。Len函数的作用是返回串的长度。本题中,Fork=1 To Len(str),语句的作用是每次循环提取str串中的一个字符,语句temp=Mid(str,k,1)的作用是将提取的字符存入字符变量temp中,然后将temp和用户欲删除的字符做比对,若不同,则将此字符插入的字符串ret的末尾。循环结束ret中保存的就是不包含用户欲删除字符的字符串,也就是题目要求的字符串了。所以选B。

  • 第5题:

    有如下函数过程: Function fun1(ByVal x As Integer,ByVal y As Integer) As Integer Do While y<>0 reminder=x Mod y x=y y=reminder Loop fun1=x End Function 在下列按钮单击事件中调用该函数,则该程序的运行结果是( )。 Private Sub Command1_Click() Dim a AS Integer Dim b As Integer a=100 b=25 x=fun1(a,B) Print x End Sub

    A.0

    B.25

    C.50

    D.100


    正确答案:B
    解析:可以通过两种方式来传递参数,即按值传递参数和按地址传递参数。按值传递参数时,传递的只是变量的副本。如果过程改变了这个值,则所作变动只影响副本而不会影响变量本身。用ByVal关键字指出参数是按值来传递的。按地址传递参数使过程用变量的内存地址去访问实际变量的内容,在将变量传递给过程时,通过过程可永远改变变量值。默认时是按地址传递参数。题中fun1函数的参数都是核值传送的,函数使用“过程名=表达式”的形式获得函数的返回值,如题中“fun1=x”语句。调用函数“x=fun1(a,B)”后,x=25。

  • 第6题:

    某人为计算n!(0<n<=12)编写了下面的函数过程:

    Private Function fun(n As Integer)As Long

    Dim P As Long

    P=1

    For k=n-1 To 2 Step-1

    P=P*k

    Next k

    fun=P

    EndFunction

    在调试时发现该函数过程产生的结果是错误的,程序需要修改。下面的修改方案中有3种是正确的,错误的方案是

    A.把P=1改为P=n

    B.把For k=n-1 To 2 Step-1改为For k=1 To n-l

    C.把For k=n-1 T02 Step-1改为Fork=1 To n

    D.把For k=n-1 To 2 Step-l改为FOr k=2 To n


    正确答案:B
    解析:题f中的错误在于求n!,却少乘了n,选项B也犯了同样的错误,所以答案选B。

  • 第7题:

    设有以下函数过程: 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交换。

  • 第8题:

    有如下函数: Function fun(a As Integer,n As Integer)As Integer Dim m AS Integer While a>=n a=a-n:m=m+1 Wend Fun=m End Function 该函数的返回值是。 A.a乘以n的乘积 B.a加n的和 C.a减n的差 D.a除以n的商(不含小数部分)


    正确答案:D

  • 第9题:

    有如下函数过程。 Function Fun( By Val x As Integer,By Val y As Integer) As Integer Do While y <> 0 reminder = x Mod y xmy y = reminder Loop Fun = x End Function 以下调用函数的事件过程,该程序的运行结果是 Private Sub CommandT_Click( ) Dim a As Integer,b As Integer a = 100:b =25 x =Fun(a,B)Print x End Sub

    A.0

    B.25

    C.50

    D.100


    正确答案:B
    解析:函数的参数传递分为按值传递和按地址传递。按值传递是指,实参直接将值传递给形参,形参不改变实参的值;按地址传递是指,实参将变量的地址传递给形参。在调用函数时要注意参数的传递方式,不同的传递方式,语句执行结果不同。

  • 第10题:

    单击命令按钮时,下列程序的运行结果为

    Private Sub Command1_Click()

    Print Fun(23, 18)

    End Sub

    Public Function Fun(m As Integer, n As Integer) As Integer

    Do While m <> n

    Do While m > n: m=m - n: Loop

    Do While m < n: n=n - m: Loop

    Loop

    Fun=m

    End Function

    A.0

    B.1

    C.3

    D.5


    正确答案:B
    解析:此题程序代码中,被调过程采用了Do While...Loop的嵌套语句结构,主调过程只调用了一次被调过程 ,Print Fun(23, 18) 语句表明,程序最后输出的只是被调过程的返回值。主调过程在调用被调过程Fun时,把数值23,18分别传给形参m和n,从被调过程中的循环语句来看,因为此时m的值大于n的值,所以执行语句m = m - n,m值变为5,然后循环调用,直到m=n,而由语句Fun = m可看出,此过程的返回值就是m的值,即为1。

  • 第11题:

    设a、b都是自然数,为求a除以b的余数,某人编写了以下函数:

    Eunction fun(a As Integer,b As Integer)

    While a>b

    a=a—b

    Wend

    fun=a

    End Function

    在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是( )。

    A.把a=a-b改为a=b-a

    B.把a=a-b改为a=a\b

    C.把While a>b改为While a%b

    D.把While a>b改为While a>=b


    正确答案:B
    B。【解析】求余运算符为“\”。

  • 第12题:

    有人编写了如下程序:

    Private Sub Form. Click( )

    Dim s As Integer,x As Integer

    s=0

    x=0

    Do While S=1000

    x=x+l

    s=s+x^2

    Loop

    Print s

    End Sub

    上述程序的功能是:计算s=1+22+32+…+n2+…,直到s>10000为止。程序运行后,发现得不到正确的结果,必须进行修改。下列修改中正确的是( )。

    A.把x=0改为x=1.

    B.把Do While s=10000改为Do While s<=10000

    C.do="" while="" s="">10000

    D.交换x=x+1和s=s+x^2的位置


    正确答案:B
    B。【解析】本题考查简单的循环问题,DoWhile(条件)表示当条件为真时,循环才能执行,针对于本题中只有'-5s=10000是循环才能够进行执行,而程序的功能是计算s=1+22+32+…+100002,所以当s<=10000时执行才能实现此功能,所以答案选择B。

  • 第13题:

    ( 29 )设 a 、 b 都是自然数,为求 a 除以 b 的余数,某人编写了以下函数:

    Function fun(a As Integer,b As Integer)

    While a>b

    a=a-b

    Wend

    fun=a

    End Function

    在调试时发现函数是错误的。为使函数能产生正确的返回值,应做的修改是

    A )把 a=a-b 改为 a=b-a

    B )把 a=a-b 改为 a=a\b

    C )把 While a>b 改为 While a<b

    D )把 While a>b 改为 While a>=b


    正确答案:B

  • 第14题:

    有一个数列,它的前3个数为0,1,1,此后的每个数都是其前面3个数之和,即

    0,1,1,2,4,7,13,24,……

    要求编写程序输出该数列中所有不超过1000的数。

    某人编写程序如下:

    Private Sub Form_Click()

    Dim i As Integer,a As Integer,b As Integer

    Dim C As Integer,d As Integer

    a=0:b=1:c=1

    d=a+b+C

    i=5

    While d<=1000

    Print d;

    a=b:b=C:C=d

    d=a+b+c

    i=i+1

    Wend

    End Sub

    运行上面的程序,发现输出的数列不完整,应进行修改。以下正确的修改是

    A.把While d<=1000改为While d>1000

    B.把i=5改为i=4

    C.把i=i+1移到While d<=1000的下面

    D.在i=5的上面增加一个语句:Print a;b;c;


    正确答案:D
    解析:根据题意,输出内容不完整,当前循环体只打印出初始值计算后的结果值。为了显示完整,需在进入循环体前打印初始值,因此本题答案为D)。

  • 第15题:

    Fibonacci数列的规律是:前2个数为1,从第3个数开始,每个数是它前2个数之和,即1,1,2,3,5,8,13,2l,34,55,89,…某人编写了下面的函数,判断大于1的整数X是否是Fibonacci数列中的某个数,若是,则返回True,否则返回False。

    Function Isfab(x As Integer)As Boolean

    Dim a As Integer,b As Integer,c As Integer,flag As Boolean

    flag=False

    a=1:b=1

    Do While X<b

    c=a+b

    a=b

    b=c

    If x=b Then flag=True

    Loop

    Isfab=flag

    End Function

    测试时发现对于所有正整数x,函数都返回False,程序需要修改。下面的修改方案中正确的是( )。

    A.把a=b与b=c的位置互换

    B.把c=a+b移到b=c之后

    C.把Do While x<b改为Do While x>b

    D.把If x=b Then flag=True改为If x=a Then flag=True


    正确答案:C
    解析:本题中程序思路是利用for循环求得斐波那契数列,然后和x比对,若x是斐波那契数列中的值,则返回布尔值True,若不是则返回false。题目源程序中循环条件是x<b,又因为a、b初始值都是1,而x是正整数,所以不论x取何值,循环都不会执行。

  • 第16题:

    单击命令按钮时,下列程序的运行结果为 Private Sub Command1_Click() Print Fun(23,18) End Sub Public Function Fun(m As Integer,n As Integer)As Integer Do While m<>n Do While m>n:m=m-n:Loop Do While m<n:n=n-m:Loop Loop Fun=m End Function

    A.0

    B.1

    C.3

    D.5


    正确答案:B
    解析:此题程序代码中,被调过程采用了Do While…Loop的嵌套语句结构,主调过程只调用了一次被调过程,Print Fun(23,18)语句表明,程序最后输出的只是被调过程的返回值。主调过程在调用被调过程Fun时,把数值23,18分别传给形参m和n,从被调过程中的循环语句来看,因为此时m的值大于n的值,所以执行语句m=m-n,m值变为5,然后循环调用,直到m=n,而由语句Fun=m可看出,此过程的返回值就是m的值,即为1。

  • 第17题:

    有人编写了如下程序: Private Sub Form. Click( ) Dim s As Integer,x As Integer s=0 x=0 Do While S=1000 x=x+l s=s+x^2 Loop Print s End Sub 上述程序的功能是:计算s=1+22+32+…+n2+…,直到s>10000为止。程序运行后,发现得不到正确的结果,必须进行修改。下列修改中正确的是( )。

    A.把x=0改为x=1.

    B.把Do While s=10000改为Do While s<=10000

    C.把Do While S=10000改为Do While s>10000

    D.交换x=x+1和s=s+x^2的位置


    正确答案:B
    B。【解析】本题考查简单的循环问题,DoWhile(条件)表示当条件为真时,循环才能执行,针对于本题中只有-5s=10000是循环才能够进行执行,而程序的功能是计算s=1+22+32+…+100002,所以当s<=10000时执行才能实现此功能,所以答案选择B。

  • 第18题:

    为计算a“的值,某人编写了函数power如下:

    Private Function power(a As Integer,n As Integer)As Long

    Dim P As Long

    P=a

    For k=l T0 n

    P=P * a

    Next k

    poWer=P

    End Function

    在调试时发现是错误的,例如Print power(5,4)的输出应该是625,但实际输出是3125。程序需要修改。下面的修改方案中有3个是正确的,错误的一个是

    A.把For k=1 To n改为For k=2 To n

    B.把P=P*a改为P=p^n

    C.把Fork=1 To n改为For k=1 To n-1

    D.把P=a改为P=1


    正确答案:C
    解析:计算an应该循环n次,所以此处k的取值应为1 to n,而非n-1。

  • 第19题:

    有如下函数过程: Function Fun(By Val x As Integer,By Val y As Integer)As Integer Do While Y<>0 reminder=x Mod y x=y y=reminder Loop Fun=x End Function 以下调用函数的事件过程,该程序的运行结果是 Private Sub Command7_Click() Dim a As Integer,b As Integer a=100:b=25 x=Fun(a,B) Print x End Sub

    A.0

    B.25

    C.50

    D.100


    正确答案:B
    解析:函数的参数传递分为按值传递和按地址传递两种。按值传递是指实参直接将值传递给形参,形参不改变实参的值;按地址传递是指实参将变量的地址传递给形参。在调用函数时要注意参数的传递方式,不同的传递方式使得语句执行结果不同。

  • 第20题:

    某人设计了下面的函数fun,功能是返回参数a中数值的位数: Function fun(a AS Integer)AS Integer Dim n% N=1 While a\10>=0 N=n+l:a=a\l0 Wend Fun=n End Function 在调用该函数时发现返回的结果不正确,函数需要修改,下面的修改方案中正确的是。 A.把错句n=1改为n=0 B.把循环条件a\l0>=0改为a\l0>0 C.把语句a=a\l0改为a=a Mod 10 D.把语句fun=n改为fun=a


    正确答案:A

  • 第21题:

    有一个数列,它的前3个数为0,1,1,此后的每个数都是其前面3个数之和,即0,1,1,2,4,7,13,24,… 要求编写程序输出该数列中所有不超过1000的数。 某人编写程序如下: Private Sub Form. Click( ) Dim i As Intender,a As Integer,b As Integer Dim C As Integer,d As Integer a=0:b=1:c=1 d=a4-b4-c i=5 While d<=1C00 Print d; a=b:b=c:c=d d=a+b+c i=i+1 Wend End Sub 运行上面的程序。发现输出的数列不完整,应进行修改。以下正确的修改是( )。

    A.把While d<=1000改为while d>1000

    B.把i=5改为i=4

    C.把i=i+1移到While d<=1000的下面

    D.在i=5的上面增加一个语句:Print a;b;C;


    正确答案:D
    D。【解析】本题程序中分别用a、b、c、d代表l、2、3、4项,从第5项开始输出d的值,同时使用前3项的结果得出第4项的值,在程序中只输出了d的值即指输出了计算出的第4项的值,所以数列不完整。程序中需要在i=5的上面添加Printa;b;c;语句,此时数列才会输出完整。

  • 第22题:

    Fibonacci数列的规律是:前2个数为1,从第3个数开始,每个数是它前2个数之和,即1,1,2,3,5,8,13,21,34,55,89,…某人编写了下面的函数,判断大于1的整数X是否是Fibonacci数列中的某个数,若是,则返回True,否则返回False。

    Function Isfab(x As Integer)As Boolean

    Dim ii As Integer,b As Integer,C As Integer,flag As Boolean

    flag=False

    a=1:b=1

    Do While x<b

    c=a+b

    a=b

    b=c

    If x=b Then flag=True

    Loop

    Isfab=flag

    End Function

    测试时发现对于所有正整数X,函数都返回False,程序需要修改。下面的修改方案中正确的是( )。

    A.把a=b与b=C的位置互换

    B.把c=a+b移到b=C之后

    C.把Do While xb

    D.把If x=b Then flag=True改为If x=a Then flag True


    正确答案:C
    C。【解析】本题中程序思路是利用for循环求得斐波那契数列,然后和x比对,若x是斐波那契数列中的值,则返回布尔值Frue,若不是则返回false。题目源程序中循环条件是x<b,又因为a、b初始值都是1,而X是正整数,所以不论X取何值,循环都不会执行。

  • 第23题:

    有如下函数过程: Function Fun (By Val x As Ingeger, ByVal y As Integer)As Integer Do While…y<>0 reminder=x Mod y x=y y=reminder Loop Fun=x End Function 以下是调用该函数的事件过程,该程序的运行结果是 Private Sub Command1_Click() Dim a As Integer Dim b As Integer a=100:b=25 x=Fun(a,b)Print x End Sub

    A.0

    B.25

    C.50

    D.100


    正确答案:B
    解析:本题的难点是子函数调用过程。子函数Fun的功能是求x和y的公约数,由“欧几里德”求最大公约数的算法可知,当余数r为0时,x为x和y的最大公约数。变量,的值通过子函数名Fun返回。