更多“设有程序段 i=1; while (i<=n) i=i*2; 上”相关问题
  • 第1题:

    下列程序段的时间复杂度为()。i=0,s=0;while(sn){s=s+i;i++;}

    A、O(n1/2)

    B、O(n1/3)

    C、O(n)

    D、O(n2)


    参考答案:A

  • 第2题:

    以下能够正确计算n!的程序是

    A.Private Sub Command1 Click() n=5:x=1 Do x=x * I I=I + 1 Loop While I < n Print x End Sub

    B.Private Sub Command1_Click() n=5:X=1:I=1 Do X=X*I I=I + 1 Loop While I <n Print x End Sub

    C.Private Sub Command1_Click() n=5:X=1:I=1 Do X=X * I I=I + 1 Loop While I<=n Print X End Sub

    D.Private Sub Command1_Click() n=5:X=1:I=1 Do x=x * I I=I + 1 Loop While I>n Print X End Sub


    正确答案:C
    解析:n!=1×2×3×…×(n-1)×n,由于是累乘,因此x和i的初值都必须为1;其次就是循环执行条件的确定,由于使用的是While型循环,表示在满足条件时执行循环体中的代码,这里满足执行循环的条件应该是i=n。

  • 第3题:

    下列程序段的运行结果是:Private Sub Command1_Click() Dim n AS Integer I =21: n = 3 do while I>n I=I- n Loop Print IEnd Sub在窗体上打印的结果是______。

    A.3

    B.5

    C.6

    D.8


    正确答案:A
    解析:while型循环的条件为假时离开循环,即i=3时就离开,最后打印的i值为3。

  • 第4题:

    以下能够正确计算n! 的程序是( )。

    A.Private Sub Command1_Click( ) n=5:x=l Do x=x*i i=i+1 Loop While i < n Print x End Sub

    B.Private Sub Command1_Click( ) n=5:x=1:i=1 Do x=x*i i=i+1 Loop While i < n Print x End Sub

    C.Private Sub Command1_Cliek( ) n:5:x=1:i=1 Do x=x* i i:i+1 Loop While i < = n Print x End Sub

    D.Private Sub Command1_Cliek( ) n=5:x:1:i=1 Do x=x*i i=j+1 Loop While i > n Print x End Sub


    正确答案:C
    解析:本题考查DoLoop语句的用法。首先是执行循环体,再确定循环执行的条件,这里满足执行循环的条件应该是i=n,选项A和B的循环条件都是in,少了i=n的一次循环,实际上只执行了n-1次;而选项D则从i>n时才开始执行,不合题意。

  • 第5题:

    以下能够正确计算n!的程序是

    A.Privas Sub Command1_Click() n=5:x=1 Do x=x*i i=i+1 Loop While i<n Print x End Sub

    B.Private Sub Command1_Click() n=5:x=1:i=1 Do x=x*i i=i+1 Loop While i<n Print x End Sub

    C.Private Sub Command1_Click() n=5:x=1:i=1 Do x=x*i i=i+1 Loop while i<=n Print x End Sub

    D.Private Sub Command1_Click() n=5:x=1:i=1 Do x=x*i i=i+1 Loop While i>n Print x End Sub


    正确答案:C
    解析:本题主要考查Do循环控制结构。只有C项符合题意。A中i一开始未被赋值,默认为0;B项中由于“in”的条件使得 Do循环比应有循环次数少循环一次;选项D由于“i>n”这一条件,使得控制语句只能循环一次。

  • 第6题:

    下列程序段的运行结果是( )。 Sub sele() Dim n As Integer i=21: n=3 Do While i > n i=i-n Loop Print i End Sub

    A.2

    B.4

    C.5

    D.3


    正确答案:D
    解析:该程序段的执行如下:第1次循环后:i=i-n=18;第2次循环后:i=i-n=15;第3次循环后:i=i-n=12;第4次循环后:i=i-n=9;第5次循环后:i=i-n=6;第6次循环后;i=i-n=3;此时循环条件不成立,退出循环。

  • 第7题:

    设有下面的循环: i=0 While i<=1 i=i + 3 Print i Wend则运行后的输出结果是A.1B.2C.3D.4

    设有下面的循环: i=0 While i<=1 i=i + 3 Print i Wend则运行后的输出结果是

    A.1

    B.2

    C.3

    D.4


    正确答案:C
    解析:本题中考查了While…Wend循环语句,条件是I=1,当运行一次之后,I=I+3,I变为3了,不满足条件了,所以在运行中,只运行了一次就停止了,最终输出结果为3。

  • 第8题:

    下面程序段的时间复杂度为()。 i=1; while(i<=n)i=i*3;

    • A、O(n)
    • B、O(3n)
    • C、O(log3n)
    • D、O(n3

    正确答案:C

  • 第9题:

    若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是()

    • A、for(i=1,p=1;i<=5;i++)p*=i
    • B、for(i=1;i<=5;i++){p=1;p*=i;}
    • C、i=1;p=1;while(i<=5){p*=i;i++;}
    • D、i=1;p=1;do{p*=i;i++;}while(i<=5)

    正确答案:B

  • 第10题:

    若变量已正确定义,以下不能正确计算1+2+3+4+5的程序段是()。

    • A、i=1;s=1;do{s=s+i;i++;}while(i<5);
    • B、i=0;s=0;do{i++;s=s+i;}while(i<5);
    • C、i=1;s=0;do{s=s+i;i++;}while(i<6);
    • D、i=1;s=0;do{s=s+i;i++;}while(i<=5);

    正确答案:B

  • 第11题:

    单选题
    设有程序段 i=1; while (i<=n) i=i*2; 上面程序段的时间复杂度为()。
    A

    O(n)

    B

    O(log n)

    C

    O( nlog n)

    D

    O(n2)


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

  • 第12题:

    单选题
    下面程序段的时间复杂度为()。 i=1; while(i<=n)i=i*3;
    A

    O(n)

    B

    O(3n)

    C

    O(log3n)

    D

    O(n3


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

  • 第13题:

    以下能够正确计算n!的程序是

    A.Private Sub Command1_Chck( ) n=5:x=1 Do x=x*i i=i+1 Loop While i<n Print x End Sub

    B.Private Sub Command1_Click( ) n=5:x=1:i=l Do x=x*i i=i+1 Loop While i<n Print x End Sub

    C.Private Sub Command1_Click( ) n=5:x=1:i=l Do x=x*i i=i+1 Loop While i<=n Print x End Sub

    D.Private Sub Command1_Click( ) n=5:x=1:i=l Dox=x*i i=i+1 Loop While i>n Print x End Sub


    正确答案:C
    解析:A中i一开始末被赋值,默认为0;B项中由于“in”的条件使得Do循环比应有循环次数少循环一次;选项D由于“i>n”这一条件,使得控制语句只能循环一次。

  • 第14题:

    设变量已正确定义,则以下能正确计算n!的程序段是______。

    A.f=0; for(i=1; i<=n; i++)f*=i;

    B.f=1; for(i=1; i<n; i++)f*=i;

    C.f=1; for(i=n; i>1; i++)f*=i;

    D.f=1; for(i=n; i>=2; i--)f*=i;


    正确答案:D
    解析:A选项,将f赋值为0,结果得到0,因为0乘任何数都为0;B选项,in,计算的是(n-1)!,C选项将陷入死循环。

  • 第15题:

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

  • 第16题:

    下列程序段的运行结果是( )。 Subsele() Dim n As Integer i=21:n=3 Do While i>n i=i-n Loop Print i End Sub

    A.2

    B.4

    C.5

    D.3


    正确答案:D
    解析:该程序段的执行如下:第1次循环后:i=i-n=18;第2次循环后:i=i-n=15:第3次循环后:i=i-n=12;第4次循环后:i=i-n=9第5次循环后:i=i-n=6;第6次循环后:i=i-n=3;此时循环条件不成立,退出循环。

  • 第17题:

    如下程序段的输出结果是。i=1DO WHILE i<10i=i+2END DO? i


    正确答案:11
    该程序开始时,变量i被初始化为1,如果变量i小于10,则将变量i加2,反复循环直到变量i不小于10循环结束,这时显示i的值。从这样的执行流程可以知道,i依次取值为1、3、5、7, 9, 11最后一次取值为11时结束循环,因此这时i的值为11。

  • 第18题:

    以下能够正确计算n!的程序是______。

    A.Private Sub Commeadl_Click() n=5: x=1 Do x=x*i i=i+1 Loop While i<n Print x End Sub

    B.Private Sub Command1_Click() n=5: x=1: i=1 Do x=x*i i=i+1 Loop While i<n Print x End Sub

    C.Private Sub Command1_Click() n=5: x=1: i=1 Do x=x*i i=i+1 Loop Whilei<=n Print x End Sub

    D.Private Sub Commsndl_Click() n=5: x=1: i=1 Do x=x*i i=i+1 Loop While i>n Print x End Sub


    正确答案:C
    解析:选项A中变量i没有赋初值操作,其一直保持0值,所以始终为0;选项B中循环条件“i>n”错误,计算一次后就退出循环,导致计算结果不正确;选项D的计算过程中,第1次计算时“1>4”的条件不处理,退出Do循环,其结果为1;选项C的计算结果为5!。

  • 第19题:

    若变量已正确定义,要求程序段完成5!的计算,不能完成此操作的程序段是 ______。

    A.for (i=1,p=1; i<=5; i+ +)p* = i;

    B.for (i=1;i<=5; i+ +) {p=1;p*=i;}

    C.i=1;p= 1;while( i<=5) { p* =i;i+ +; }

    D.i=1;p=1;do{ p*=i;i+ +; } while (i<=5);


    正确答案:B
    解析:选项B中每次执行循环体都要执行p=1,无法保存上次的运算结果,执行完while循环后p=5。

  • 第20题:

    下面程序段的时间复杂度是() i=1; while(i<=n)    i=i*3;


    正确答案:O(log3n)

  • 第21题:

    以下能正确计算1×2×3×…×10的程序段是()。

    • A、do{i=1;s=1;
    • B、do{i=1;s=0;s=s*i;s=s*i;i++;i++;}while(i<=10);}while(i<=10);
    • C、i=1;s=1;
    • D、i=1;s=0;do{s=s*i;do{s=s*i;i++;i++;}while(i<=10);}while(i<=10);

    正确答案:C

  • 第22题:

    单选题
    若要实现total=1+2+3+4+5求和,以下程序段错误的是(  )。
    A



    int i=1,total=1;
    while(i<5)
    {
     total+=i;
     i+=1;
    }

    B



    int i=1,total=0;
    while(i <=5)
    {
     total+=i;
     i+=1;
    }

    C



    int i=0,total=0;
    while(i <5)
    {
     i+=1;
     total+=i;
    }

    D



    int i=0,total=0;
    while(i <=5)
    {
     total+=i;
     i+=1;
    }


    正确答案: A
    解析:
    A项执行过程为:i=1,total=1,判断while循环条件1<5成立,total=1+1,i=2;判断循环条件执行函数体,直到i=4,total=1+1+2+3+4,i=5;i=5循环条件不成立,退出循环,A项不能实现题目要求,错误。B项执行过程:i=1,total=0,1<=5成立,total=0+1=1,i=2;直到i=5,total=1+2+3+4+5,i=6;i=6条件不成立,退出循环,程序正确。C项执行过程:i=0,total=0,0<5成立,i=1,total=1;直到i=5,total=1+2+3+4+5;i=5条件不成立,退出循环,程序正确。D项执行过程:i=0,total=0,0<=5成立,total=0,i=1;直到i=5,total=1+2+3+4+5,i=6;i=6条件不成立,退出循环,程序正确。答案选择A选项。

  • 第23题:

    单选题
    以下程序段中,循环次数不超过10的是(  )。
    A

    int i=10;do{i=i+1;}while(i<0);

    B

    int i=int i=5;do{i+=1;}while(i>0);

    C

    int i=1;do{i+=2;}while(i!=10);

    D

    int i=6;do{i-=2;}while(i!=1);


    正确答案: C
    解析:
    A项,执行循环体i=i+1,判断条件i<0不成立,退出循环,循环次数为1,a项正确。b项执行一次循环体后i=6,判断条件为i>0,由于执行循环体时i始终在增加,i>0一直成立,程序陷入无限循环,循环次数大于10,B项错误。C项执行循环体一次后i=3,判断条件为i!=10,由于循环体中i每次增加2,所以永远不可能等于10,故程序会陷入无限循环,循环次数大于10,C项错误。D项执行循环体一次后i=4,判断条件为i!=1,由于循环体中i每次减少2,所以永远不可能等于1,故程序会陷入无限循环,循环次数大于10,D项错误。答案选择A选项。

  • 第24题:

    填空题
    下面程序段的时间复杂度是() i=1; while(i<=n)    i=i*3;

    正确答案: O(log3n)
    解析: 暂无解析