itgle.com

下面是一段Pascal程序: for h:=1 tO n-1 dO begin x:=A[h+1]; k:=h; while (k>=1) and (A[k]>x) do begin A[k+1):=A[k]; k:=k-1 end; A[k+1]:=x end; 假设在程序开始执行时,数组A[1..n)是一组随机整数。下列答案中,哪一个最好的描述了最差情况下的程序执行时间(运行时间阶数)?( )A.0(nlog2n)B.O(n)C.0(log2n)D.O(n2)

题目

下面是一段Pascal程序: for h:=1 tO n-1 dO begin x:=A[h+1]; k:=h; while (k>=1) and (A[k]>x) do begin A[k+1):=A[k]; k:=k-1 end; A[k+1]:=x end; 假设在程序开始执行时,数组A[1..n)是一组随机整数。下列答案中,哪一个最好的描述了最差情况下的程序执行时间(运行时间阶数)?( )

A.0(nlog2n)

B.O(n)

C.0(log2n)

D.O(n2)


相似考题
更多“下面是一段Pascal程序: for h:=1 tO n-1 dO begin x:=A[h+1]; k:=h; while (k>=1) and (A[k]>x) do begin A[k+1):=A[k]; k:=k-1 end; A[k+1]:=x end; 假设在程序开始执行时,数组A[1..n)是一组随机整数。下列答案中,哪一个最好的描述了最差情况下的程序执行时间(运行时间阶数)?( )A.0(nlog2n)B.O(n)C.0(log2n)D.O(n2)”相关问题
  • 第1题:

    有如下程序,该程序的执行结果为______。 Dim k As Integer n=5 m=1 k=1 Do While k <= n m=m*2 k=k+1 Loop Print m

    A.1

    B.5

    C.32

    D.40


    正确答案:C

  • 第2题:

    下列程序的运行结果是 Private Sub Form_Click() Dim k As Integer n=5 m=1 k=1 Do m=m+2 k=k+1 Loop Until k>n Print m End Sub

    A.1

    B.12

    C.11

    D.32


    正确答案:C
    解析:本题主要是对Do...Loop Until循环语句的考查。当Loop Until后的条件不成立时,即退出循环。该题在k为1、2、3、 4、5时,都执行了循环语句,故一共执行了五次,同时m=m+2也执行了五次,最后m的值增加了10,故运行结果为11。

  • 第3题:

    以下程序的输出结果是【】。 include unsigned fun (unsigned num) {unsigned k=1; do{

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

    include<iostream.h>

    unsigned fun (unsigned num)

    {unsigned k=1;

    do{k*=num%10;num/=10;} while(num);

    return k;

    }

    void main( )

    { unsigned n=26;

    cout <<fun(n) <<end1


    正确答案:12
    12 解析:函数有一个形参num,循环前变量k置1,循环中,表达式num%10是取num的个位,将num的个位值累乘于k中,然后num除以10。循环直至num为0结束,这是逐一求出num十进制表示的各位数字,并累乘于变量k的循环。函数最后返回k。函数fun的功能是求整数的各位十进数字积。

  • 第4题:

    有以下程序段

    s=1.0;

    for(k =1;k<=n;k++) s=s+1.0/(k*(k=1));

    printf("%f\n",s);

    请填空,使以下程序段的功能与上面的程序段完全相同。

    s=1.0; k=1;

    while( 【 9 】).

    { s=s+1.0/(k*(k+1)); k=k+1;}

    printf( "%f\n",s);


    正确答案:
    【答案】k<=n
    【知识点】while语句与for语句互化
    【解析】while语句的条件即为for语句中三个表达式中的第二个表达式。

  • 第5题:

    在窗体上画一个名称为CoilTlilandl的命令按钮,然后编写如下事件过程: Private Sub command1 Click() Dim m As Integer, i As Integer, x(3)As Integer For i=0 To 3:x(i)=i:Next i For i = 1 To 2: Call sub1(x,i):Next i For i = 0 To 3: Print x(i);: Next i End Sub Private Sub sub1(a()As Integer,k As Integer) Dim i As Integer Do a(k)=a(k)+a(k+1) j = j + 1 Loop While j < 2 End Sub 程序运行后,单击命令按钮,则窗体上显示的内容是

    A.0 3 7 5

    B.0 1 2 3

    C.3 2 4 5

    D.0 5 8 3


    正确答案:D
    解析:数组也可以作为函数或者过程的参数,使用方法是直接使用数组名加括号,也可以直接使用数组名,采用sub1(x)和sub1(x())的调用形式都正确。变量i的作用只控制循环次数。

  • 第6题:

    运行下列程序,结果是( )。 PrivateSub Command32_click f0=1:fl=1:k=1Do While k<=5f=f0+f1 f0=fl fl=f k=k+1 Loop MsgBox”f=”&f End Sub

    A.f=5

    B.f=7

    C.f=8

    D.f=13


    正确答案:D
    循环次数比较少,可以采用逐次循环的本办法来做。

  • 第7题:

    下列程序段的执行结果为______ 。 Dim A(4) N= 3 A(1) =1 For K=0 To N-1 For L=1 To K+1 X=K+2 -L A(X)=A(X)+A(X-1) If K<N-1 Then Exit For Print A(X); Next L Next K

    A. 1 2 1

    B.1 2 3

    C.2 4 6

    D.1 3 1


    正确答案:A

  • 第8题:

    在下面程序运行后,输出结果为 ______。includevoid count(int x[],int n,int &y

    在下面程序运行后,输出结果为 ______。 #include<iostream.h> void count(int x[],int n,int &y){ int k; y=0; for(k=0:k<n;k++) if(x[k]<0) y++; } void main(){ int b[]={2,1,-8,-3,7,2,4,6,0,-13}; int x; count(b,10,x); cout<<“x”<<x<<end1; }

    A.x=3

    B.x=5

    C.出错

    D.x=0


    正确答案:A

  • 第9题:

    阅读下列FORTRAN程序:
    INTEGER X(7)
    DATA X/4,5,7,8,10,12,11/
    DO 10 K=1,7
    IF(MOD(X(K),2).NE.0)THEN
    S=A+X(K)
    N=N+1
    END IF
    10 CONTINUE
    T=S/N
    WRITE(*,20)S,T
    20 FORMAT(2X,3F6,1)
    END
    程序运行后的输出结果是:
    (A)12.0 7.7(B)47.0 6.7(C)34.0 8.5(D)57.0 11.4


    答案:A
    解析:

  • 第10题:

    阅读下列FORTRAN 程序:
    MQIUH=N(5)+N(10)
    WRITE(*,’(2X,15)’)MQIUH
    END
    FUNCTION N(K)
    N=0
    DO 10 J=1,k
    N=N+J
    10 CONTINUE
    RETURN
    END
    程序运行后的结果是:
    (A)65 (B)85
    (C)90 (D)70


    答案:D
    解析:

  • 第11题:

    若人群中某疾病发生的阳性人数X服从二项分布,从该人群中随机抽取n个人,则阳性人数X不小于k人的概率为()

    • A、P(X≥k)
    • B、P(X≥k+1)
    • C、P(X≤k)
    • D、P(X≤k-1)

    正确答案:A

  • 第12题:

    单选题
    阅读下列程序  N=0  DO 10 K=1,3  N =N+1  M=K*N  10 CONTINUE  WRITE(*,’(1X,2I3)’)M,K  END  程序运行结果是()
    A

     9  4

    B

     9  3

    C

     12  4

    D

     12  3(#^)


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

  • 第13题:

    有以下程序段,且变量已正确定义和赋值

    for(s=1.0, k=1; k<=; k++) s=s+1.0/(k*(k+1));

    printf("s=%f\n\n", s);

    请填空,使下面程序段的功能与之完全相同

    s=1.0; k=1;

    while(【 】) { s=s+1.0/(k*(k+1));【 】; }

    prinff("s=%f\n'n", s);


    正确答案:(10)k=n  或  n>=k  (11)K++
    (10)k=n  或  n>=k  (11)K++ 解析:本题考查的知识点是:while语句和for语句。
     while语句和for语句的作用都是循环控制语句的执行,两者之间是可以互相转换的。将while(EXP)转换为for语句可以写成for(;EXP;);将for(EXP1;EXP2;EXP3)转换为while语句可以写成:EXP1;while(EXP2){… EXP3;}。故本题的两个空分别应填写for语句的第2和第3个表达式。即K=n或n>=K和k++。当然也可写成与之等价的其他形式。

  • 第14题:

    以下程序的输出结果是 ______。includedefine SQR(x)x*xmain((){ int a,k=3;a=++SQR(K

    以下程序的输出结果是 ______。#include<stdio.h>#define SQR(x)x*xmain((){ int a,k=3; a=++SQR(K+1); printf("%d\n",A) ;}

    A.8

    B.9

    C.17

    D.20


    正确答案:B
    解析:本题宏替换中遇到形参x以实参k+1代替,其他字符不变。SQR(k+1)展开后应为字符串k+1*k+1。

  • 第15题:

    以下程序的输出结果是_______。includedefine SQR(x)x*xmain(){int a;k=3; a=++SQR(k+

    以下程序的输出结果是_______。 #include<stdio.h> #define SQR(x)x*x main() { int a;k=3; a=++SQR(k+1); printf("%d\n",a) ; }

    A.8

    B.9

    C.17

    D.20


    正确答案:B
    解析:本题宏替换中遇到形参x以实参k+1代替,其他字符不变。SQR(k+1)展开后应为字符串k+1*k+1。

  • 第16题:

    以下程序的输出结果是______。includedefme SQR(x)x*xmain(){int a,k=3; a=++SQR(k+1)

    以下程序的输出结果是______。 #include<sulio.h> #defme SQR(x)x*x main() { int a,k=3; a=++SQR(k+1); printf("%d\n",a) ; }

    A.8

    B.9

    C.17

    D.20


    正确答案:B
    解析:本题宏替换中遇到形参x以实参k+l代替,其他字符不变。SQR(k+1)展开后应为字符串k+l*k+l。

  • 第17题:

    下面的算法是计算不带节点的单链表长度,其中能正确执行的是______。

    A.Function Length(L:Link) integer begin p:=L; j:=0; while p↑.next≠NIL DO [p:=p↑.next; j:=j+1 ] return(j) end;

    B.Function Length(L:Link) integer begin p:=L; k:=0; while p≠NIL DO [p:=p↑.next; k:=k+1) return(k) end;

    C.Function Length(L:Link)integer begin p:=L;k:=0; repeat k:=k+1; p=p↑.next until p=NIL return(k-1) end;

    D.Function Length(L:Link)integer begin p:=L↑.next; k:=1; while p≠NIL DO [k:=k+1; p:=p↑.next] return(k) end;


    正确答案:B

  • 第18题:

    下面程序的运行结果是#include "stdio.h" void fun(int k,int *p) { int a,b; if(k==1|| k==2) *p=1; else { fun(k-1,&a); fun(k-2,&b); *p=a+b; } }main(){ int x; fun(6,&x); printf("%d\n",x);}


    正确答案:8
    本题主要考查函数的递归调用。在本题中,程序首先定义了一个无返回类型的fun函数,该函数带有一个整型变量的形参和一个指针型的变量形参。从函数体中我们可以看出,该递归函数的出口是形参k的值等于1或2,如果运行到函数出口,则指针变量形参p的值等1。
    在主函数中,首先定义了一个整型变量x,然后调用fun函数,传递的实参分别为6和变量x的地址,然后程序运行fun函数,在fun函数中,首先定义了两个整型变量a和b,然后判断形参变量k的值是否到达函数出口,这时,k的值为6,没有到达出口,然后程序分别递归执行fun(5,&a)和fun(4,&b)。从程序中可以看出,p的值为分别调用两个函数的p值的和。
    首先执行fun(5,&a)时,k=5,没有到达出口,又进行一次递归,分别执行fun(4,&a)和fun(3,&b),由于都没达到出口,分别执行fun(3,&a)和fun(2,&b),fun(2,&a)和fun(1,&b),由于fun(2,&a)和fun(1,&b)返回的p值都为1,那么fun(3,&a)返回p的值为2,fun(4,&a)返回的p值就等于fun(3,&a)和fun(2,&b)之和,为3,同理可以得出fun(5,&a)返回的p值为5,fun(6,&a)返回的p值为8。因此,最后题目要求输出的结果为8。

  • 第19题:

    在窗体上画一个命令按钮,其名称为Command1,然后编写如下事件过程: Private Sub Coinmand1 Click( ) Dim a$,b$,c$,k% a="ABCD" b="123456" c="" k=1 Do While k<=Len(a)Or k<=Len(b) If k<=Len(a)Then c=c&Mid(a,k,1) End If If k<=Len(b)Then c=c&Mid(a,k,1) End If k=k+1 Loop Print c End Sub 运行程序,单击命令按钮,输出结果是( )。

    A.123456ABCD

    B.ABCD123456

    C.D6C584A321

    D.A1B2C3D456


    正确答案:D
    D。【解析】Mid函数用于提取字符串中的指定位数,函数调用格式为Mid(string,start[,length]),其中start为必要参数,为Long型,为被取出部分的首字符的位置。如果start超过string的字符数,Mid返回空串。length可选参数为返回的字符数,如果省略或length超过文本的字符数,将返回字符串中从start到尾端的所有字符。Len函数的作用是返回串的长度。本题中a串长4,b串长6,每次循环将a、b的第k个字符取出连在一起给串c,k从1开始,当k=5时,将b中k位置的字符依次插入串C中。

  • 第20题:

    有以下程序段,且变量已正确定义和赋值

    for(s=1.0,k=1;k<=n;k++) s=s+1.0/(k*(k+1));

    printf("s=%f\n\n",s);

    请填空,使下面程序段的功能为完全相同

    s=1.0;k=1;

    while(_[10]_______){ s=s+1.0/(k*(k+1)); _[11]_______;}

    printf("s=%f\n\n",s);


    正确答案:

    k<=n     k++ 

  • 第21题:

    以下子例行程序用于实现向一维数组下标为P的数组元素处插入一个整数X
    SUBROUTINE INSERT(B,N,P,X)
    INTEGER B(N),X,P
    DO 20 K=N-1,P,-1
    B(K+1)=______
    20 CONTINUE
    B(P)=X
    END
    为使程序完整,应在______处放入( )。

    A.X
    B.K
    C.B.(P)
    D.B.(K)

    答案:D
    解析:

  • 第22题:

    阅读下列FORTRAN77程序:
    INTEGER A(4,5)
    DATA A/5*1,5*2,5*3,5*4/
    M=0 DO 10 K=1,4
    10 M=M+A(K,K+1)
    WRITE(*,*)M
    END
    上述程序运行后,输出的M值为( )。

    A.8
    B.9
    C.10
    D.11

    答案:C
    解析:
    A的值为



    K=1时,M=0+A(1,2)=1;K=2时,M=1+A(2,3)=3;依此类推

  • 第23题:

    单选题
    若某人群某疾病发生的阳性数X服从二项分布,则从该人群中随机抽出n个人,阳性数X不少于k人的概率为()。
    A

    P(k+1)+P(k+2)+…+P(n)

    B

    P(0)+P(1)+…+P(k)

    C

    P(0)+P(1)+…+P(k+1)

    D

    P(k)+P(k+1)+…+P(n)

    E

    P(1)+P(2)+…+P(k)


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