下面代码的功能是计算S=1-1/2+1/3-1/4+1/5-1/6+……+1/99-1/100的和,划线处应选择__________。 Dim i%, sum!, k% k = 1 For i = 1 To 100 sum = ______________ k = -k Next MsgBox(sum)A.k / iB.sum + k / iC.sum -k / iD.-k / i

题目

下面代码的功能是计算S=1-1/2+1/3-1/4+1/5-1/6+……+1/99-1/100的和,划线处应选择__________。 Dim i%, sum!, k% k = 1 For i = 1 To 100 sum = ______________ k = -k Next MsgBox(sum)

A.k / i

B.sum + k / i

C.sum -k / i

D.-k / i


相似考题
更多“下面代码的功能是计算S=1-1/2+1/3-1/4+1/5-1/6+……+1/99-1/100的和,划线处应选择__________。 Dim i%, sum!, k% k = 1 For i = 1 To 100 sum = ______________ k = -k Next MsgBox(sum)”相关问题
  • 第1题:

    阅读下面的程序段:

    sum=0

    for i=1 to 3

    for j=i to 4

    for k=j to 5

    sum=sum+1

    next k

    next j

    next i

    执行上面的三重循环后,sam的值为______。


    正确答案:28
    28 解析:本题考查循环的知识。这类问题循环体中只有一条语句,就是sum=sum+1,这样的话问题就变成了判断这条语句共执行多少次,也就是最内层循环一共会执行多少次。可以这样分析:当i=1,j=1时,内循环执行5次;当i=1,j=2时,内循环执行4次;当i=1,j=3时,内循环执行3次;当i=1,j叫时,内循环执行2次,这样的话外循环第一次时内循环共执行5+4+3+2=14次;当 i=2时,,j从2开始循环,那么内循环共执行4+3+2=9次;当i=3时,j从3开始循环,那么内循环共执行3+2=5次,所以总的执行次数为14+9+5=28次。

  • 第2题:

    阅读下面的程序段:

    sum=0

    for i=1 to 3

    for j=i to 4

    for k=j to 5

    next j

    next i

    执行上面的三重循环后,sum的值为( )。


    正确答案:28
    28 解析: 本题考查循环的知识。这类问题循环题中只有一条语句,就是sum=sum+1,这样的话问题就变成了判断这条语句共执行多少次,也就是最内层循环一共会执行多少次。可以这样分析:当i=1,j=1时,内循环执行5次,当i=1,j=2时,内循环执行4次……当i=1,j=4时,内循环执行2次,这样的话外循环第一次时内循环共执行5+4+3+2=14次:当i=2时,i从2开始循环,那么内循环共执行4+3+2=9次;当i=3时,j从3开始循环,那么内循环共执行3+2=5次,所以总的执行次数为14+9+5=28次。

  • 第3题:

    设有如下程序:Private Sub Command1 Click( ) Dim sum AS Double,x As Double sum=0 n=0 For i=1 To 5 x=n/i n=n+1 sum=sum+x Next i End Sub 该程序通过For循环来计算一个表达式的值,这个表达式是______。

    A.1+1/2+2/3+3/4+4/5

    B. 1+1/2+1/3+1/4+1/5

    C. 1/2+2/3+3/4+4/5

    D. 1/2+1/3+1/4+1/5


    正确答案:C
    解析: 当i=1时,sum=0+0/1;当i=2时,sum=0+0/1+1/2;当i=3时,sum=0+0/1+1/2+2/3;当i=4时,sum=0+0/1+1/2+2/3+3/4;当i=5时,sum=0+0/1+1/2+2/3+3/4+4/5,即For循环是用来计算表达式“1/2+2/3+3/4+4/5”的。

  • 第4题:

    下列语句段中不是死循环的是()。

    A、intI=100;while(1){I=I0+1;if(I=20)break;}

    B、intI;sum=0;for(I=1;;I++)sum=sum+1;

    C、intk=0;do{++k;}while(k>=0);

    D、ints=3379;while(s++%2+3%2)s++;


    参考答案:A

  • 第5题:

    设有如下程序: Private Sub Command1_ Click() Dim sum As Double, x As Double sum=0 n=0 For i=1 To 3 x=n/i n=n+1 sum=sum+x Next i End Sub 该程序通过For循环来计算sum的值,sum值的精确结果是( )。

    A.1+1/2+2/3

    B.1+1/2+1/3+1

    C.1/2+2/3

    D.1/2+1/3


    正确答案:C
    解析:第一次循环时n、sum均为0,所以sum值为0,第二次循环时n为1、i为2,所以sum值为1/2,第三次循环时n为2、i为3,所以sum值为1/2+2/3。

  • 第6题:

    阅读以下说明和C语言程序,将应填入(n)处的字句写在对应栏内。

    【说明】

    计算n的合数。一个整数n可以有多种划分,使其划分的一列整数之和为n。例如,整数5的划分为:

    5

    4 1

    3 2

    3 1 1

    2 2 1

    2 1 1 1

    1 1 1 1 1

    共有7种划分。这种划分的程序如下所示。

    【程序】

    include <stdio.h>

    int n[1000],m,k;

    void output sum()

    {

    int j;

    for(j=0;n[j]!=0;j++)

    printf("%d\t",n[j]);

    printf("\n");

    }

    void sum(int i)

    if(m-n[i]<n[i])

    { m=m-n[i];

    (1)

    i++;

    n[i+1]=0;

    }

    else

    {

    (2)

    m-=n[i];

    i++;

    }

    if(m!=n[i])

    sum(i);

    else

    output_sum();

    if(n[i]>1)

    {

    n[i]--;

    (3)

    }

    else

    {

    while((n[i]==1)&&(i>O))

    {

    i--;

    (4)

    }

    if(i!=0)

    {

    (5)

    sum(i);

    }

    }

    }

    void main()

    {

    int i;

    scanf("%d",&n[0]);

    m=k=n[0];

    for(i=1;i<=k;i++)

    n[i]=0;

    while(n[0]!=1)

    {

    n[0]--;

    i=0;

    sum(0);

    m=k;

    }

    }


    正确答案:(1)n[i+1]=m; (2)n[i+1]=n[i]; (3)sum(i); (4) m+=n[i]; (5)n[i]--;
    (1)n[i+1]=m; (2)n[i+1]=n[i]; (3)sum(i); (4) m+=n[i]; (5)n[i]--; 解析:本题考查C语言中计算n合数方法的实现。
    题目要求计算n的合数,我们首先来了解一下什么是n的合数。在正整数n的所有不同的划分中,将最大加数n1不大于m的划分个数记作q(n,m)。可以建立q(n,m)的如下递推关系。
    (1)q(n,1)=1,n1
    当最大数n1不大于1时,任何正整数只有一种划分形式,就是全1。
    (2)q(n,m)=q(n,n),mn
    最大加数n1实际上不能大于n。因此,q(1,m)=1。
    (3)q(n,n)=1+q(n,n-1)
    正整数n的划分由n1=n的划分和n1≤n-1的划分组成。
    (4)q(n,m)=q(n,m-1)+q(n-m,m),n>m>1
    正整数n的最大加数n1不大于m的划分由n1=m的划分和n1≤m-1的划分组成。要想求出所有解,只有递归到最底层即全为1为止。
    知道了上述特性,下面我们来看代码。在代码中首先声明一个数组和两个全局变量 k,m。结合程序可以看出,其中数组n[i]中存放的是当前划分的最大加数,而m中存放的是当前被划分的数。程序代码中有三个函数,一个是主函数、一个output_sum()函数和一个sum()函数,函数output_sum()的功能很简单,就是输出一次划分结果,在sum()函数中被调用。
    经过分析不难发现,函数sum()的作用是实现整数的划分。在函数体中,首先是一个条件判断语句,其作用是判断当前被划分的数m是否小于当前最大加数的两倍,如果条件成立,说明数被划分为两个数后,其最大加数大于另一个数,而另一个数应该存放在数组中。此时执行语句m=m-n[i]来求出另一个数,接下来应该是保存这个数到数组中的下个位置,第(1)空就用来完成这个任务,因此,答案为n[i+1]=m。
    第(2)空所在的位置是条件不成立的情况下运行的语句,条件不成立,说明数被划分为两个数后,其最大加数小于另一个数,数可以有更大的最大加数,因此,将当前的最大加数保存到数组中的下个位置,此空答案为n[i+1]=n[i]。
    第(3)空也在一个条件选择语句下面,此条件语句用于判断当前最大加数是否大于1,如果大于1,则需要接着划分,因此要调用函数sum(),其参数是i,所以此空答案为sum(i)。
    第(4)空是条件不成立即当前最大加数为1的情况下执行的语句,当最大加数为1时,说明递归到了最底层,此时,递归应该往回走了,这需要还原当前最大划分数m(为这个数的其他划分做准备),因此,这个空的答案为m+=n[i]。
    第(5)空是在条件i!=0为真的情况下执行的语句,如果条件为真,说明递归还没有回到最上层,应该求当前被划分数在当前最大加数变小后的其他划分情况,因此,此空答案为n[i]--。

  • 第7题:

    下列各循环语句中,不是死循环的是( )。

    A.int i=100; while(1){ i=i%100+1; if(i==20) break; }

    B.int i,sum=0; for(i=1;;i++) sum=sum+1;

    C.int k=0; do{ ++k; }while(k>=0);

    D.int s=3379; while(s++%2+3%2) s++;


    正确答案:A
    解析:分析各个选项。选项A中,当变量i的值等于20时,会执行break;语句,即退出整个while循环体。所以选项A的循环语句不是死循环。其他各个选项的循环语句中,没有循环退出点,所以都是死循环。

  • 第8题:

    请补充main函数,该函数的功能是:把1~100间的所有素数保存在数组aa中,然后输出这些素数并计算它们的和。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。

    试题程序:

    include<stdio.h>

    main()

    {

    int n, i, j, k, flag, sum;

    int aa [50];

    sum=O;

    k=O;

    clrscr ();

    for (i=2; i<100; i++)

    {

    【 】;

    for (j=2; j<i&&flag; j++)

    if (i%j==O)

    {

    【 】;

    }

    if (flag)

    {

    sum+=i;

    【 】;

    }

    }

    printf("\n*** prime number ***\n");

    for (i=0; i<k; i++)

    {

    if (i%10==0)

    printf ("\n");

    printf ("%4d", aa [i]);

    }

    printf ("\nsum=%d", sum);

    }


    正确答案:flag=1 flag=0 aa[k+++]=i
    flag=1 flag=0 aa[k+++]=i 解析:第一空:由后面的if句可以看出,当nag为1时,当前数是素数,所以此处先假设当前数为素数,即置flag为1,再进行判断,如果不是素数,则再将fflag清零。第二空:如果一个数能被除了1和其自身之外的数整除,即余数为0,则这个数不是素数。如果当前数不是素数,则将flag清零。第三空:如果当前数是素数,则将它保存在数组bb中。

  • 第9题:

    下列程序运行后的输出结果是______。Private Sub f(k,s) s = 1 for j = 1 To k s=s*j Next jEnd SubPrivate Sub Command1_ Click () Sum = 0 for i = 1 To 3 Call f(i, s) Sum = Sum + s Next i Print Sum End Sub

    A.0

    B.3

    C.6

    D.9


    正确答案:D
    解析:本题重点是在于过程的调用过程中,虚实参数的传送问题,变量s按址传送。子过程m求n! sum的计算过程为“1!+2!+3!=1+2+6=9”。

  • 第10题:

    下面程序运行时,单击窗体后,窗体上显示的结果是( )。 Private Sub Form_Click Dim I As Integer Dim sum As Long Dim t1 As Long t1=1:sum=0 For 1=1 To 3 t1=t1*I sum=sum+t1 Next I Print sum End Sub

    A.3

    B.9

    C.5

    D.6


    正确答案:B

  • 第11题:

    以下程序运行后,消息框的输出结果是( )。 OPTION BASE 1 PRIVATE SUB COMMAND1_CLICK( ) DIM A(10) , P(3) AS INTEGER K=5 FOR I=1 TO 10 A(I) = I NEXT I FOR I=1 TO 3 P(I)=A(I*I) NEXT I FOR I=1 TO 3 K=K+P (I) ~ 2 NEXT I MSGBOX K END SUB

    A.33

    B.28

    C.35

    D.37


    正确答案:A
    解析:本题有三个循环结构,第一个用于给数组A赋值,第二个用于给数组P赋值,数组P与A的对应关系是:P(1)=A(1)=1、P(2)=A(4)=4、P(3)=A(9)=9,第三个用于计算变量K=5+1*2+4*2+9*2=33。

  • 第12题:

    下列程序运行后的输出结果是______。

    Private Sub f(k,s)

    s=1

    For j=1 To k

    s=s*j

    Next

    End Sub

    Private Sub Command1_Click()

    Sum=0

    For i=1 To 3

    Call f(i,s)

    Sum=Sum+s

    Next

    Print Sum

    End Sub


    正确答案:9
    9 解析:本题考查的重点是在子过程的调用过程中,虚实参数的传送问题,变量s按十传送。子过程f()求n!,sum的计算过程为1!+2!+3!=1+2+6=9

  • 第13题:

    下列程序用来计算1+2+…n,当和大于100时停止计算,请填空。

    Private Sub Form_Click()

    Dim n as integer,s as integer,I as integer,k as integer

    s=0

    k=0

    n=inputbox(″请输入n的值)

    For i=1 to 100

    k=k+1

    s=s+I

    【 】

    Next i

    Print s

    End Sub


    正确答案:if s>100 then exit for
    if s>100 then exit for 解析:依题意,用变量S来记录1到n的累加和,当累加和S大于100时停止计算,故加入退出循环条件"if s>100 then exit for"

  • 第14题:

    下面程序:________Option Base 1Private Sub Command1_Click() Dim a(10),p(3)As Integer Dim i,k As Integer k=5 For i=1 To 10 a(i)=i Next For i=1 To 3 p(i)=a(i*i) Next For i=1 To 3 k=k+p(i)*2 Next Print kEnd Sub运行后的输出结果为________。

    A.33

    B.28

    C.35

    D.37


    正确答案:A
    解析:此题中共定义了两个数组:a(i),p(i),共用到三次For循环:
      第一个For语句是对数组a(i)赋值,a(1)到a(10)的值分别为1到10;
      第二个For语句是对数组p(i)赋值,p(1)=a(1)=1,p(2)=a(4)=4,p(3)=a(9)=9;
      第三个For语句是对k的值循环相加,三次循环的结果分别为:7,15,33。

  • 第15题:

    现有以下语句: i=1; for (;i<=100;i++) sum+=i;

    A.for(i-1;;i++) { sum+--i; if(i==100) break; }

    B.for(i=1;i<=100;) { sum+=i; i++; }

    C.i=1; for(;i<=100;) { sum+=-i; }

    D.i=1; for(;;) { sum+=i; if(i==100) break; i++; }


    正确答案:D

  • 第16题:

    有如下程序,可以得到0到100之间所有偶数之和。 DIM I AS INTEGER DIM SUM AS INTEGER SUM = 0 FOR I =0 TO 100 STEP 2 SUM = SUM + I NEXT I DEBUG. PRINT I DEBUG. PRINT SUM 程序运行后,变量I和SUM的值是( )。

    A.100和2450

    B.102和2550

    C.104和2650

    D.106和2850


    正确答案:B
    解析:该程序完成0到100之间所有偶数的求和操作。当把100加入变量SUM后,SUM的值为2550,而此时I再加2,值为102,超出循环终值,结束循环。

  • 第17题:

    在窗体上画一个名称为 Command1的命令按钮,然后编写如下事件过程: Private Sub Command1_Click() Dim a(4)As Integer, x As Integer, sum As Integer n = 4: sum = 0 a (1) = 1 For k = 0 To n - 1 For i = 1 To k + 1 x = k + 2 - i a(x)= a(x)+ a(x - 1) If x < n - k Then Exit For sum = sum + a(x) Next i Next k Print sum End Sub 程序运行后,单击命令按钮,则窗体上显示的内容是

    A.5

    B.6

    C.8

    D.11


    正确答案:D
    解析:上述程序在双层循环内有一个判断条件,分析其计算过程时比较麻烦,读者要仔细分析。变量x的计算过程为:x=1、2、3、2、1、4、3、2、1,表达式n-k的计算过程为:n-k=4、3、2、2、2、1、1、1、1。其中有14、23、21这些条件成立时跳出内部循环,其他内循环都将数组元素值相加起来,即sum=1+2+1+3+3+1=11。

  • 第18题:

    有如下函数过程: Function lj(x As Integer) As Long Dim s As Long Dim i As Integer s=0 For i = 1 To x s=s+ i Next i 1j= s End Function在窗体上添加一个命令按钮,名为Command1, 编写事件过程调用该函数: Private Sub Command1 Click() Dim i As Integer Dim sum As Long For i = 1 To 5 sum = sum + 1j(i) Next i Print sum End Sub

    A. 25

    B.35

    C.45

    D.55


    正确答案:B

  • 第19题:

    设有如下程序: Private Sub Cimmandl_Click. Dim sum As Double, x As Double Sum=0 n =0 For i =1 To 5 x =n/i n =n +1 sum =sum +x Next i End Sub 该程序通过For 循环来计算一个表达式的值,这个表达式是 A.1+1/2+2/3+3/4+4/5 B.1+1/2+1/3+1/4+1/5 C.1/2+2/3+3/4+4/5 D.1/2+1/3+1/4+1/5


    正确答案:C

  • 第20题:

    下面是打印输出所有和为10000的连续整数(如:1998,1999,2000,2001,2002)的程序,请在每条横线处填写适当语句,使程序的功能完整。

    注意:请勿改动main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。

    public class Sum10000{

    public static void main(String args[ ]){

    int i;

    int j;

    int k;

    int sum;

    for(i=1;i<=10000;______________){

    sum=0;

    j=i;

    __________________;

    while(sum<10000)

    {

    ______________

    if(sum==10000) {

    for(k=i;k<=j;k++)

    System.out.println(k+ "");

    System.out.println("********");

    }

    }

    }

    }


    正确答案:i++ sum+=i; sum+=++j;
    i++ sum+=i; sum+=++j; 解析:本题主要考查for循环语句、while循环语句。解答本题的关键是熟练使用for循环语句、while循环语句的使用。在本题中,for(i=1;i=10000;i++)语句中的i++是用来使循环变量递增1,sum+=i;语句的功能是用来累加循环变量i,sum+=++j;语句的功能是用来累加循环变量j。

  • 第21题:

    在窗体中添加1个命令按钮(其Name属性为Command1)和1个标签(其Name属性为Lable1),然后编写如下代码: Private Sub Commandl_Cliek() Dim arrayl(10, 10)As Integer Dim i, j, Sum AsInteger Sum=0 For i=1 To 10 Forj=1 To 10 arrayl(i, j)=i+j Nextj Next i End Sub 此程序的功能是求数组arrayl主对角线元素的和,并把结果显示在标签中,为实现此功能,省略号处的程序段应该是 ( )

    A.For i=1 To 10 For j=1 To 10 If i=j Then Sum = Sum+ arrayl (i,j) End If Next j Next i Labelt. Caption=Sum

    B.For i=l TO 10 Forj=1 To 10 If i= =j Then Sum=Sum+array1 (i,j) End If Next j Next i Labell. Caption=Sum

    C.For i=1 To 10 For j=1 To l0 If i=j Then Sum=Sum+arrayl (i,j) End If Next i Next j Lahell. Caption=Sum

    D.For i=1 To 10 For j=1 To l0 If i=j Then Sum=arrayl (i,j) End If Next j Next i Labell. Caption=Sum


    正确答案:A
    解析:选项B中条件表达式i= =j有误,在VB中表示i等于j,应写成i=j。排除选项B。选项C中的For......Next语句使用有误,内层应该是Next j,外层为Next i。选项D中的求和语句有误。应为Sum= Sum+array1(i,j)。只有A项是正确的。

  • 第22题:

    在窗体上画一个命令按钮,然后编写如下程序: Option Base 1 Private Sub Command1 Click() Dim Arr1(12)As Integer, Arr2(3)As Integer Dim Sum As Integer Sum = 2 For i=1 To 12 Arrl(i)= i Next i For i=1 To 3 Arr2(i)= Arrl(i*i) Next i For i = 1 To 3 Sum = Sum + Arr2(i) Next i Print Sum End Sub 程序运行后,单击命令按钮,在窗体上的输出结果为

    A.16

    B.24

    C.32

    D.36


    正确答案:A
    解析:本题中定义了两个一维数组,分别为Arr1和Arr2,由于使用了OptionBase1语句,因此其大小分别为10和3,接着执行3个For循环。在第1个循环中,对Arr1数组赋初值,每个元素的值与其下标相同,即Arrl(1)=1,Arrl(2)=2……。在第2个循环中,为Arr2数组的3个元素赋值,这3个值分别为Arrl数组第1、3、9个元素的值,即Art2(1)=1、Arr2(2)=4、Arr2(3)=9。在第3个循环中,计算数组Arr2中各元素的和,并将它赋给变量Sum。各元素的和为1+4+9=14,但由于变量Sum的初值为2,因此最后的输出结果为16。

  • 第23题:

    下列语句段中不是死循环的是( )。

    A.int i=100 While (1) { i=i%100+1 if(i==20) break; }

    B.int i sum=O; for (i=l;;i++) sum=sum +l;

    C.int k=0; do { ++K }while(k<=O);

    D.int s=3379; while (s+ +%2+3%2)s++;


    正确答案:A

  • 第24题:

    若变量inti,intsum=0,要求程序段完成求1加到100的和的,能完成此操作的程序段不正确的是()

    • A、for(i=1;i<=100;i++)sum+=i;
    • B、for(i=1;i<=100;i++)sum=i;
    • C、for(i=1;i<=100;i++)sum=sum+i;
    • D、for(i=0;i<=100;i++)sum+=i;

    正确答案:B