参考答案和解析
正确答案:C
更多“从四个选项中选出下面程序段的计算结果() sum:=0;i:=0;j:=1;  while i5 do  begin    i:=i+1;j:=j*i;  sum:=sum+j;    end;  writeln(sum);A、15B、120C、153D、33”相关问题
  • 第1题:

    ( 7 )执行下列语句后,变量 sum 的值是 ___________ 。

    int sum=0;

    for(int i=1;i<=3;i++)

    for(int j=1;j<=i;j++)

    sum++;


    正确答案:

  • 第2题:

    阅读下面的程序段:

    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次。

  • 第3题:

    执行下列语句,变量sum的值是______。

    int sum=0;

    for(inti=1;i<=3;i++)

    for(intj=1;j<=i;j++) sum++;


    正确答案:6
    6

  • 第4题:

    下列程序段的输出结果是【】。 include void main() {inti=10,sum=0;do{sum=+sum+i;i=i

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

    include<iostream.h>

    void main()

    {int i=10,sum=0;

    do

    {

    sum=+sum+i;

    i=i-2;

    }while(i>=2);

    cout<<sum<<end1;

    }


    正确答案:30
    30

  • 第5题:

    阅读以下说明和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]--。

  • 第6题:

    下列程序执行后的结果是______。

    public class ex24

    {

    public static void main(String[] args)

    {

    int j=10;

    a1: for(int i=3;i>0;i--)

    {

    j-=i;

    int m=l;

    a2: while (m<j)

    {

    if (i<=m)

    continue a1;

    j/=m++;

    }

    }

    System.out.println(j);

    }

    }

    下列嵌套的循环程序执行后,结果是______。 public class ax25 { public static void main(String[] args) { int sum=0; for(int i=0;i<=5;i++) { for(int j=10;j>3*i;j--) { sum+=j*i; } } System.out.println(sum); } }

    A.136

    B.127

    C.147

    D.153


    正确答案:C

  • 第7题:

    下列程序运行后的输出结果是______。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”。

  • 第8题:

    执行下列程序,其输出为( )。 int Sum,j; Sum=0; j=0; do{ j++; for(int i=5:i>j;i--). Sum=Sum+(i+j); {while(j<11=; } }

    A.45

    B.50

    C.60

    D.65


    正确答案:C

  • 第9题:

    以下能够正确计算1+2+3+…+10的程序是

    A.Private sub Command1_Click( ) sum=0 For 1=1 To 10 Sum=sum+1, Next I Print Sum End Sub

    B.Private sub Command1_Click( ) Sum=0,I=1 Do While l<=10 Sum=Sum+1 I=I+1 Print Sum End Sub

    C.Private Sub command1_click( ) Sum=0:I=1 Do Sum=Sum+1 I=I+1 Loop While I<10 Print Sum End Sub

    D.Private Sub command1_Click( ) Sum=0:I=1 Do Sum=Sum+1 l=I+1 Loop Until I<10 Print Sum End Sub


    正确答案:A
    解析:A选项进行10次循环,分别将1至10累加给Sum,故正确。选项B缺少Loop关键词,否则也是正确的。选项C与D由于受条件“Iclo'’限制,Do循环只能进行一次。

  • 第10题:

    以下程序输出结果是 ______。includevoid main(){ int a[3][3]={1,3,5,7,9,10,13,1

    以下程序输出结果是 ______。 #include<iostream.h> void main(){ int a[3][3]={1,3,5,7,9,10,13,15,17},sum=0,i,j; for(i=0;i<3:i++) for(j=0;j<3;j++){ a[i][j]=i+j; if(i= =j)sum=sum+a[i][j]; } cout<< "sue="<<sum; }

    A.15

    B.25

    C.6

    D.9


    正确答案:C

  • 第11题:

    以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素值之和。(本程序中二阶矩阵用一维数组来表示。)

    例如,矩阵为:

    3 0 0 3

    2 5 7 3

    1 0 4 2

    则所有靠外侧的各元素值之和为3+0+0+3+2+3+1+0+4+2=18。

    add(int m,int n,int arr[])

    { int i,j,sum=0;

    for(i=0;i

    for(j=0;j<N;J++)

    sum=sum+ (7) ;

    for(j=0;j

    for(i=1; (8) ;i++)

    sum=sum+arr[i*n+j];

    return(sum);

    }


    正确答案:
    3.(7) arr[i*n+j](或者arr[i*10+j])

     (8) i<M-1(或者I<=M-2)

  • 第12题:

    单选题
    从四个选项中选出下面程序段的计算结果() sum:=0;i:=0;j:=1;  while i<5 do  begin    i:=i+1;j:=j*i;  sum:=sum+j;    end;  writeln(sum);
    A

    15

    B

    120

    C

    153

    D

    33


    正确答案: A
    解析: 暂无解析

  • 第13题:

    设有命令按钮Command1的单击事件过程,代码如下: Private Sub Command1 Click() Dim a(3,3)As Integer For i=1 To 3 For j=1 To 3 a(i,j)=i*j+i Next j Next i Sum=0 For i=1 To 3 Sum=Sum+a(i,4-i) Next i Print Sum End Sub 运行程序,单击命令按钮,输出结果是______。

    A.20

    B.7

    C.16

    D.17


    正确答案:C
    解析:第3个For语句是用来打计算a(1,3)、a(2,2)及a(3,1)这三个数组元素的和。由第1、2这两个嵌入的For语句知,a(1,3)=1*3+3=6;a(2,2)=2*2+2=6;a(3,1)=3*1+1=4。故最后Sum的值应为6+6+4=16。

  • 第14题:

    阅读下面的程序段:

    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次。

  • 第15题:

    以下程序的输出结果是【 】。include main() {int i,j,sum; for(i=3;i>=-1;i-) (sum=0; fo

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

    include<stdio.h>

    main()

    {int i,j,sum;

    for(i=3;i>=-1;i-)

    (sum=0;

    for(j=1;j<=i;j++) sum+=i*j;

    }

    printf("%d\n,sum);

    }


    正确答案:√
    1 解析:本题考查的是for循环嵌套。外循环i变量从3递减到1,内循环变量j在每轮外循环的作用下从1递增到i,并在每轮外循环结束时,通过内循环求得sum的值,但由于外循环体的第一条语句是将变量sum初始化为0,所以每轮外循环结束时求得的sum值均被下一轮外循环执行时重新初始化为0,只有在最后一轮,当i=1时,内循环求得stan=1,跳出内循环,i的值减1变为0,不满足i>=1这个条件,结束外循环,此时输出sum的值为1。

  • 第16题:

    已知在4行3列的全局数组score(4,3)中存放了4个学生3门课程的考试成绩(均为整数),现需要计算每个学生的总分,某人编写程序如下: Option Base 1 Private Sub Command1_Click() Dim sum As Integer sum=0 For i=1 To 4 For j=1 To 3 sum=sum+score(i,j) Next j Print "第" &i& "个学生的总分是:";sum Next i End Sub 运行此程序时发现,除第1个人的总分计算正确外,其他人的总分都是错误的,程序需要修改。下列修改方案中正确的是( )。

    A.把外层循环语句For i=1 To 4 改为 For i=1 To 3 内层循环语句For j=1 To 3改为For j=1 To 4

    B.把sum=0移到For i=1 To 4和For j=1 To 3之间

    C.把sum=sam+score(i,j)改为sum=sum+score(j,i)

    D.把sum=sum+score(i,j)改为sam=score(i,j)


    正确答案:B
    解析:本题考查的考点是有关循环求和和二维数组的。本题要对二维数组的每行进行累加求和,每计算新的一行就应该将累加和变量sum清零,否则上一行的累加计算结果将会在下一行继续累加,造成结果不正确。

  • 第17题:

    以下程序的输出结果是#include <stdio.h>main(){ int i,j,sum; for(i=5;i>=1;i--) { sum=0; for(j=i;j<=i;j++) sum+=i*j; } printf("%d\n",sum);}


    正确答案:√
    本题考查对程序运行结果的计算。本程序的目的是输出sum的值,在输出sum值之前,需要进行一个for循环,该循环内部有一个for子循环。外层for语句的循环变量i的初始值为5,循环条件为i>=1,循环变量增值为-1。外层for语句每循环一次,都会将sum值重新赋0,所以,只要计算最后一次循环结束后sum的值作为输出即可。当i=1时,外层for语句进行最后一次循环,sum的值由内层for语句决定。内层for语句循环变量为j,初始值为j=i,循环条件为j<=i,循环变量增值为+1,由此可见,内层for语句只运行一次,结果就是sum=i*j。当i=1时,j=1,sum=1。

  • 第18题:

    以下能够正确计算1+2+3+…+10的程序是

    A.Private Sub Command1_Click() Sum=0 ForI=1 To 10 Sum=Sum+I Next I Print Sum End Sub

    B.Private Sub Command1_Click() Sum=0,I=1 Do While I<=10 Sum=Sum+I I=I+1 Print Sum End Sub

    C.Private Sub Command1_Click() Sum=0: I=1 Do Sum=Sum+I I=I+1 Loop While I<10 Print Sum End Sub

    D.Private Sub Command1_Click() Sum=0: I=1 Do Sum=Sum+I I=I+1 Loop Until I<10 Print Sum End Sub


    正确答案:A
    解析:本题考查For循环与 Do循环控制语句。A选项进行10次循环,分别将1之10累加给Sum,故正确。选项B缺少Loop关键词,否则也是正确的。选项C与D由于受条件“lclo”限制,Do循环只能进行一次。

  • 第19题:

    下面程序用于计算矩阵的两条对角线上的元素之和。补充下列语句,实现该功能。

    include<iostream.h>

    void main(){

    int a[3],[3]={9,8,7,6,5,4,3,2,1};

    int sum1=0,sum2=0,i,j;

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

    for(j=0;j<3;j++)

    if(i==j)sum1+=a[i][j];

    for(i=0;i<3:i++)

    for(j=2;【 】;j--)

    if(i+j==2)sum2+=a[i][j];

    }


    正确答案:j>=0
    j>=0

  • 第20题:

    在窗体中添加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项是正确的。

  • 第21题:

    下面程序的运行结果是()。include void main(){static int a[][4]={ 1,2,3,4,5,6,7,

    下面程序的运行结果是( )。#include <iostream.h>void main(){static int a[][4]={ 1,2,3,4,5,6,7,8,9,10,11,12};int i, j, sum=0;for(i=0;i<3;i++)for(j=0;j<4;j++)if(j>i)sum+=a[i][j];cout<<sum<<end1;}

    A.24

    B.30

    C.36

    D.40


    正确答案:C

  • 第22题:

    执行下列语句后,变量sum的值是【 】。

    int sum=0;

    for(int i=1;i<=3;i++)

    for(int j=1;j<=i;j++)

    sum++;


    正确答案:6
    6 解析:本题考查的知识点是:for循环的嵌套。题目中外循环会循环3次,每次循环变量i的值分别为1、2、3。而内循环会循环i次,故3次执行内循环,循环的次数分别为1、2、3次。那么,sum总共被增1了6次。故最终sum的值为6。

  • 第23题:

    单选题
    从四个选项中选出下面程序段实现的计算公式()  sum:=0;i:=0;  repeat  sum:=sum+i;    i:=i+2;  until i>10;  writeln(‘sum=’,sum:6:4);
    A

    2+4+6+…+10

    B

    2+4+6+…+12

    C

    2+4+6+…+8

    D

    1+3+5+7+…+9


    正确答案: B
    解析: 暂无解析