niusouti.com
更多“下面程序段的时间复杂度是__________________。 for(i=0;i<n;i++) for(j=0;j<n;j++) A[i][j]=0;”相关问题
  • 第1题:

    以下程序的输出结果是 ( ) main( ) { int n[3] [3],i,j; for (i=0;i<3;i+ +) for(j=0;i<3;++) n[i][j]=i+j; for(i=0;i<2;i++) for(j=0,j<2;j++) n[i+1][j+1]+=[i][j]; printf("%d\n",n[1][j]); }

    A.14

    B.0

    C.6

    D.值不确定


    正确答案:C

  • 第2题:

    执行下面程序段,语句3的执行次数为______。for(i=0;ii;j++)state;A.n(n+2)/2B

    执行下面程序段,语句3的执行次数为______。 for(i=0;i<n-1;i++) for(j=n;j>i;j++) state;

    A.n(n+2)/2

    B.(n-1)(n+2)/2

    C.n(n+1)/2

    D.(n-1)(n+2)


    正确答案:B
    解析:本题考查如何衡量算法的复杂度,根据题目可以看出,两层循环每次执行的次数是不相等的,第一次循环执行了n次,第二次循环只执行了n-1次,直到最后一次循环,他执行了2次,这样就是一个等差数列的求和,可得到总的执行次数为(n-1)(n+2)/2。

  • 第3题:

    以下程序的执行结果是______。 main() { int i,j,m=O,n=0; for (i=0;i<2;i++) {for (j=0;j<2;j++) if(j>=i) m=1;n++; printf("%d\n",n); } }

    A.4

    B.2

    C.1

    D.0


    正确答案:C

  • 第4题:

    下面这个程序段的时间复杂度是( )。 for (i=1; i<n; i++) { y=y+1; for (j=0;j<=(2*n);j++) X++; }

    A.O(log2n)

    B.O(n)

    C.0(nlog2n)

    D.O(n2)


    正确答案:D
    解析:语句的频度指的是该语句重复执行的次数。一个算法中所有语句的频度之和构成了该算法的运行时间。在本例算法中,其中语句“y=y+1;”的频度是n-1,语句“x++;”的频度是(n-1)(2n+1)=2n2-n-1,则该程序段的时间复杂度是T(n)=n-1+2n2-n-1=O(n2)。

  • 第5题:

    有以下程序 main() { int n[3],i,j; for(i=0;i<3;i++)n[i]=0; for(i=0;i<2,i++) for(j=0;j<2;j++)n[j]=n[i]+1; printf("%d\n",n[1]); } 程序运行后的输出结果是( )

    A.2

    B.1

    C.0

    D.3


    正确答案:D

  • 第6题:

    有以下程序

    include<stdio.h>

    main( )

    {int n[2l,ij;

    for(i=0;i<2;i++)n[i]=0;

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

    for(j=0;j<2;j++)n[j]=n[i]+1;

    printf(”%d\n”,n[1]);

    }

    程序运行后的输出结果是________ 。


    正确答案:3
    3 解析:初始化后:
    N[0]=0,n[1]=0
    i=0,j=0,n[0]=n[0]+1=1
    j=1,n[1]=n[0]+1=1=2
    i=1,j=0,n[0]=n[1]+1=3
    j=1,n[1]=n[1]+1=3

  • 第7题:

    以下程序按下现指定的数据给x数组的下三角置数,并按如下形式输出,请填空。

    4

    3 7

    2 6 9

    1 5 8 10

    include <stdio.h>

    main()

    { int x[4][4],n=0,i,j;

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

    for(i=3;i>j;【 】) {n++;x[i][j]=【 】:}

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

    { for(j=0;j<=i;j++) printf("%3d",x[i][j]);

    printf("\n");

    }

    }


    正确答案:i- n
    i- n 解析:观察本题下三角数据可以发现,其数值是先按行(从第3行到第0行),然后按列(从第0列到第3列)对其进行1到10的赋值的,在程序的第—组嵌套for循环中,通过外循环来控制列的变化,从第0列到第3列,通过内循环来控制行的变化,从第3行到第j行,由于行变量i是从最大行逐渐递减的,所以本题第一空应填i-或与其等效的形式。在循环体中,用变量n来控制被赋的值1到10,所以本题第二个空应填n。

  • 第8题:

    下面程序的输出结果是()。include using namespace std;void main( )int i,j,m=0,n=0;

    下面程序的输出结果是( )。 #include <iostream> using namespace std; void main( ) int i,j,m=0,n=0; for(i=0;i<2;i++) for(j=0;j<2;j++) if(j> =i) m=1;n++; cout<<m<<endl; cout<<n;

    A.1 1

    B.1 4

    C.1 6

    D.0 2


    正确答案:A
    解析:注意整个二重循环作用的语句为:if(j=i)m=1;,而n++语句并不为二重循环控制。其实不论循环多少次,m、n的值总为1。

  • 第9题:

    下面程序的运行结果是

    #include<stdio.h>

    void delch(char *s)

    { int i,j;

    char *a;

    a=s;

    for(i=0,j=0;a[i]!=′\n′;i++)

    if(a[i]>=′0′ &&a[i]<=′9′)

    {s[j]=a[i]; j++;}

    s[j]=′\0′;}

    main()

    { char *item="a34bc";

    delch(item);

    printf("\n%s",item);}

    A.abc

    B.34

    C.a34

    D.a34bc


    正确答案:B
    解析:考查用指针引用字符串元素的方法。指针a通过数组元素下标来从头逐个地引用字符串item中的字符,判断不是0~ 9之间的数字时,就去掉这个字符,所以程序结束后,字符串item中就只剩下和两个字符了。

  • 第10题:

    下面这个程序段的时间复杂度是( )。 for (i=1; i<n; i++) { y=y+1; for (j=0;3<-(2*n);j++) x++; }

    A.O(log2n)

    B.O(n)

    C.O(nlog2n)

    D.O(n2)


    正确答案:D
    解析:语句的频度指的是该语句重复执行的次数。一个算法中所有语句的频度之和构成了该算法的运行时间。在本例算法中,其中语句“y=y+1;”的频度是n-1,语句“x++;”的频度是(n-1)(2n+1)=2n2-n-1。则该程序段的时间复杂度是T(n)=n-1+n2-n-1=O(n2)。

  • 第11题:

    试题13

    以下程序运行后的输出结果是______.

    #include <stdio.h>

    main()

    { int n[2], i, j;

    for(i=0; i<2;i++) n[i]=0;

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

    for(j=0; j<2; j++) n[j]=n[i]+1;

    printf(“%d\n”, n[1]);

    }


    正确答案:
    试题13分析
    for(i=0; i<2;i++)    n[i]=0;使得每个项的值赋为0。
    i=0,j=0,n[0]=n[0]+1=1;i=0,j=1,n[1]=n[0]+1=2;
    i=1,j=0,n[0]=n[1]+1=3;i=1,j=1,n[1]=n[1]+1=3;
    试题13答案
      3

  • 第12题:

    下面程序段的时间复杂度是() for(i=0;i<n;i++)  for(j=0;j<n;j++)  A[i][j]=0;


    正确答案:O(n2

  • 第13题:

    下面这个程序段的时间复杂度是( )。 for (i=1; i<n; i++) { y=y+3; for (j=0;j<=(2*n);j++) x++; }

    A.O(log2n)

    B.O(n)

    C.O(nlog2n)

    D.O(n2)


    正确答案:D
    解析:语句的频度指的是该语句重复执行的次数。一个算法中所有语句的频度之和构成了该算法的运行时间。在本例算法中,语句①的频度是n-1,语句②的频度是(n-1)(2n+1)-2n2-n-1。则该程序段的时间复杂度是T(n)=n-1+2n2-n-1=O(n2)。

  • 第14题:

    请补充函数fun(),该函数的功能是:按行统计N×N维矩阵元素中的最大值(均为整数),并把这些值按从小到大的顺序保存在数组b中。矩阵的维数在主函数中输入,并赋予随机数。

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

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

    试题程序:

    include<stdio.h>

    include<conio.h>

    include<stdlib.h>

    define N 20

    void fun(【 】)

    {

    int i j;

    int t;

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

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

    if(【 】)

    b[i]=a[i][j];

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

    {

    for(j=0;i<n;j++)

    if(【 】)

    {

    t=b[i];

    b[i]=b[j];

    b[j]=t;

    }

    }

    }

    main()

    {

    int a[N][N];

    int b[N];

    int n;

    int i,j;

    clrscr();

    printf("*****Input the dimension of array N*****\n");

    scanf("%d",&n);

    printf("*****The array *****\n");

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

    {

    for(j=0;i<n;j++)

    {

    a[i][j]=rand()%20;

    while(a[i][j]==0)

    a[i][j]=rand()%30;

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

    }

    printf(”\n\n”);

    }

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

    b[i]=0;

    fun(a,b,n);

    printf("***** THE RESULT *****\n");

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

    printf(“%d”,b[i]);

    }


    正确答案:int a[][N]int b[]int n b[i]a[i][j] b[i]b[j]
    int a[][N],int b[],int n b[i]a[i][j] b[i]b[j] 解析:第一空:根据主函数main()调用函数fun()的格式,可以知道函数fun()有3个参数,第一个参数是N×N整型二维数组,第二个参数是整型—维数组,第三个参数是整型变量。第二空:数组元素b[i]保存第i行的最大值,通过循环将第i行的各元素与b[i]进行比较,如果大于b[i],则将这个数赋给b[i].第三空:通过for循环嵌套,将数组b中的数按从小到大的顺序排列,依次将各元素与所有元素进行比较,如果有一个元素比当前元素大,就借助第三个变量交换这两个元素,最终使第一个元素保存数组中最小的数,最后一个元素保存数组中最大的数。

  • 第15题:

    下面程序段的时间复杂度为 ( ) for(i=0;i<m;i++) for(j=0;j<n;j++) A[i][j]=i*j;

    A.O(m2)

    B.O(n2)

    C.O(m*n)

    D.O(m+n)


    正确答案:C
    解析:此程序的时间复杂度即为程序中循环次数的时间耗费。由程序为嵌套循环,外层循环的时间复杂度T(n1)=m,内层循环的时间复杂度T(n2)=n,则此程序的时间复杂度T(n)=m*n,即为0(m*n)。

  • 第16题:

    有以下程序:include using namespace std;int main ( ){ int n[3],i,j,k = 2; for(i

    有以下程序: #include <iostream> using namespace std; int main ( ) { int n[3],i,j,k = 2; for(i = 0;i<k;i++) n[i] = O; for(i = O;i<k;i++) { for(j = O;j<k;j++) n[j] = n[i] + 1; } cout<<n [0 ] <<end1; return 0; } 上述程序运行后,输出结果是( )。

    A.0

    B.1

    C.2

    D.3


    正确答案:D
    解析:本题考核数组的定义、初始化及其使用。根据程序逐步分析:程序首先给数组n的所有元素赋初值0,然后执行一个嵌套的循环结构。嵌套循环的执行过程如下:①i=0时,j分别取值0、1,使得n[0]、n[1]的值分别变1、2,内层循环结束。②i=1时,对外层循环进行判断,符合循环条件,执行内层循环,j分别取值0、1,使得n[0]、n[1]的值变为3、3,退出内层循环。③i=2时,判断外层循环,不再符合循环条件,退出外层循环,执行cout语句,输出n[0]的值为3。

  • 第17题:

    有以下程序main(){ int n[3],i,j; for(i=0;i<3;i++) n[i]=0; for(i=0;i<2;i++) for(j=0;j<2;j++) n[j]=n[i]+1; printf( "%d\n",n[1]);}程序运行后的输出结果是A.2 B.1C.0 D.3


    正确答案:D
    初始时定义一个大小为3个一维整型数组,第一个for语句是对数组赋初值,每个值都为0。后面是一个for语句的嵌套调用,外层的循环变量i的取值为[0,2],内层循环变量的取值范围为[0,2]。最初外层的循环变量i=0,内层的循环变量j取值从0到2,计算n[j]=n[0]+1,得到n[0]=1,n[1]=1,n[2]=1。外层for语句的循环变量为1时,内层的循环变量j取值从0到2,计算n[j]=n[1]+1,得到n[0]=2,n[1]=2,n[2]=2。外层for语句的循环变量为2时,内层的循环变量j取值从0到2,计算n[j]=n[2]+1,得到n[0]=3,n[1]=3,n[2]=3。最后的输出结果为3。

  • 第18题:

    分析下列程序,其最终执行结果是______。 main() { int n[3],i,j,k; for(i=0;i<3;i++)n[i]=O; k=2; for(i=0;i<k;i++) for(j=0;j<k;j++) n[j]=n[i]-1; printf("%d\n",n[0]); }

    A.-2

    B.-1

    C.0

    D.-3


    正确答案:D
    解析:当i为0,内循环在j为0时,执行n[j]=n[i]-1;,即n[0]=n[0]-1, n[0]值变为-1:在j为1时,执行n[j]=n[i]-1;,即n[1]=n[0]-1,将-2赋给n[1]。当i为1时,内循环在j为0时,执行n[j]=n[i]-1;,即n[0]=n[1]-1,n[0]值变为-3;在j为1时,执行n[j]=n[i]-1;,即n[1]=n[1]-1,将-3赋给n[1];最后n[0]和n[1]的值均为-3。

  • 第19题:

    下面程序段的时间复杂度是(9)。for(i=0,k=0;<n;1++){ k+=A[i][j]; for(j=1;j<m;j++) A[i][j]=1}

    A.O(n)

    B.O(m+n+1)

    C.O(m+n)

    D.O(m*n)


    正确答案:D
    解析:时间复杂度是解决问题的时间和问题的规模之间的关系,即解决问题所耗费的时间随问题规模增长成怎样的增长对应关系。本题中最内部的循环的执行次数为m*n,所以整段程序的复杂度为O(m*n)。

  • 第20题:

    下列程序的时间复杂度为( )。 for (i=l;i<2n;i++) { y++; for(j=0;j<a3n;j++) x++; }

    A.0(n-1)

    B.O(2n)

    C.0(n2)

    D.O(log2n)


    正确答案:C
    解析:一个算法中所有语句重复执行的次数之和构成了该算法的运算时间。题中语句y++执行了2n-1次,语句x++执行了(2n-1)(3n+1)=6n2-n-1次,则该算法的时间复杂度T(n)=6n2-n-1=O(n2),

  • 第21题:

    下面的程序段运行后,输出结果是 int i,j,x=0; static int a[8][8]; for(i=0;i<3;i++) for(j=0;j<3;j++) a[i][j]=2*i+j; for(i=0;i<8;i++) x+=a[i][j]; printf("%d",x);

    A.9

    B.不确定值

    C.0

    D.18


    正确答案:C
    解析:本题主要考查的是用二维数组首地址和下标来引用二维数组元素的方法。通过分析可知,程序中的双重循环定义了一个如下的二维数组:

    由于数组的下标是从。开始的,所以二维数组元素a[i][j]表示的是二维数组a的第i+1行、第j+1列对应位置的元素。

  • 第22题:

    下面的程序段的时间复杂度为【】

    s=0;

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

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

    s=s+a[i][i];

    A.O(1)

    B.O(m+n)

    C.O(log2mn)

    D.O(m*n)


    正确答案:C
    [解析]一个算法在计算机运行时所耗费的时间用时间复杂度来度量.算法的时间复杂度是算法输入规模或问题规模的函数,一般不必算出精确值,更关心的是相应的数量级.算法的时间复杂度与算法中语句的执行次数有直接关系,而语句的执行次数又取决于问题规模n的大小.实际上求解时间复杂度的方法是算出算法中执行频度最大的那条语句的频度,取其数量级放入 O( )中.

  • 第23题:

    下列程序段的时间复杂度为()。for(i=0;i<m;i++)for(j=0;j<t;j++)e[i][j]=0;for(i=0;i<m;i++)for(j=0;j<t;j++)for(k=0;k<n;k++)c[i][j]_c[i][j]+a[i][k]×b[k][j];

    A.O(m×n×t)
    B.O(m+n+t)
    C.O(m×t+n)
    D.O(m+n×t)

    答案:A
    解析:
    在程序段中,有两段循环程序,第一段是一个双层嵌套循环,另一个是三层嵌套循环,所以基本操作是c[i][j]=c[i][j]+a[i][k]×b[k][j],此基本操作共执行m×t×n次。

  • 第24题:

    填空题
    下面程序段的时间复杂度是() for(i=0;i<n;i++)  for(j=0;j<n;j++)  A[i][j]=0;

    正确答案: O(n2
    解析: 暂无解析