niusouti.com

如下程序段: for(i=1;i<=n-1;i++) for(j=i+1;j<=n;j++) x=x+1; 其中语句x=x+1执行的语句频度为()。A.n*nB.n*(n-1)/2C.n*(n+1)/2D.n*(n-1)

题目

如下程序段: for(i=1;i<=n-1;i++) for(j=i+1;j<=n;j++) x=x+1; 其中语句x=x+1执行的语句频度为()。

A.n*n

B.n*(n-1)/2

C.n*(n+1)/2

D.n*(n-1)


相似考题
更多“如下程序段: for(i=1;i<=n-1;i++) for(j=i+1;j<=n;j++) x=x+1; 其中语句x=x+1执行的语句频度为()。”相关问题
  • 第1题:

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

    int n=0;

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

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

    n++;


    正确答案:6
    6 解析:当i=1时,内循环中的i的值为1,n目加一次,n=1;当i=2时,内循环中的j的值为i和2,n自加两次,n=3,当i=3时,内循环中的i的值为1、2、3,n自加三次,n=6。

  • 第2题:

    以下程序的输出结果是 ( ) 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

  • 第3题:

    下面程序的功能是:对字符串从小到大进行排序并输出,请填空。

    #include "string.h"

    #include "stdio.h"

    sort(char *a[],int n)

    { int i,j;

    char *p;

    for(j=1;j<=n-1;j++)

    for(i=0; 【15】 ;i++)

    if( 【16】 >0)

    { p=a[i];

    a[i]=a[i+1];

    a[i+1]=p;}}

    main()

    { int i;

    char *book[]={"itisme","itisyou","howareyou","fine","goodnight","goodbye"};

    sort( 【17】 );

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

    printf("%s\n",book[i]);}


    正确答案:
    i<n-j;strcmp(a[i],a[i+1]);book,6

  • 第4题:

    本程序用冒泡法对数组a[]的元素从大到小排序,请在程序空白处填空。 void bubble(int a[],int n) {int i,j,max,temp; max=n-1; do{j=0; for(i=0;i<max;i++) if(a[i]<a[i+1]) {temp=a[i];a[i]=a[i+1];a[i+1]=temp; j=i; } max=j; }while(( )); }


    正确答案:max>0
    max>0 解析:本题是典型的冒泡排序题,每一次for循环将从数组a中找出剩下数中的最大的值放在这些数的最前端,若数组a中有n个数,则完成数组排序共需n-1次循环。令max=n-1,每次循环后i值增1,imax条件不足,即n-1次循环后,此时i=j=max=0,循环结束。

  • 第5题:

    阅读下列函数说明和C代码,填入(n)处。

    [说明]

    以下C语言程序实现了生成从里到外是连续的自然数排列的回旋矩阵,矩阵形式如下:

    7 6 5 16

    8 1 4 15

    9 2 3 14

    10 11 12 13

    程序的变量说明如下:

    x1:矩阵上边界;

    x2:矩阵下边界;

    y1:矩阵左边界;

    y2:矩阵右边界;

    s:数组元素升降标记,s等于1为升,s等于-1为降;

    a[]:存放矩阵元素的数组。

    仔细阅读C语言程序源码,将(n)处的语句补充完整。(注:每处仅一个语句)

    [C程序]

    include<stdio.h>

    void main ( )

    {

    const int N=20;

    int i=0,j=0,a[N][N],n;

    int m,x1,x2,y1,y2,s;

    while (1)

    {

    Printf ("\ninput matrix row N( N>=2): ");

    scanf ("%d",&n);

    printf ("\n");

    if (n>=2)

    break;

    }

    m=n*n;

    x1=0; y1=0; x2=n; y2=n;

    if(n%2==0)

    {j=n-1; y2=n-1; s=1;}

    else

    {i=n-1; y1=1; s=-1; }

    while (1)

    {

    if (s==1)

    {

    for (i; i<x2; i++) a[i][j]=m--;

    i--;

    j--;

    (1)

    for (j;j>=y1;j--) a[i][j]=m--;

    j++;

    i--;

    y1++;

    (2)

    }

    else

    {

    for (i;i>=x1;i--)

    a[i][j]=m--;

    i++;

    j++;

    (3)

    for (j;j<y2;j++)

    (4)

    (5)

    i++;

    (6)

    S=i;

    }

    if (m<1) break;

    }

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

    {

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

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

    printf ("\n");

    }

    printf ("\n");

    }


    正确答案:(1)x2--; (2)s=-1; (3)x1++; (4)a[i][j]=m--; (5)j--; (6)y2--;
    (1)x2--; (2)s=-1; (3)x1++; (4)a[i][j]=m--; (5)j--; (6)y2--; 解析:自然数排列的回旋矩阵是一个经典程序设计题目。本题中生成的是一个从里到外是连续的自然数排列的回旋矩阵。仔细阅读代码,能够发现(1)处应该为矩阵下边界递减;(2)处应该为数组元素递减状态,即为降;(3)处应该为矩阵上边界递增;(4)处应该为存放矩阵元素的数组中的数据递减;(5)处应该为数组元素的列序号递减,即j--;(6)矩阵右边界递减。

  • 第6题:

    有如下程序段,设n为3的倍数。则语句③的执行频度为______。 Lnt i,j ; ① for(i=i;i<n; i++){ ② if(3*i<=n){ ③ for(j=3*i;j<n;j++){

    ④ x++;y=3*x+2; } } }

    A.n(n+1)/6

    B.n(n-1)/6

    C.n2/6

    D.(n+1)(n-1)/6


    正确答案:B
    解析:取n=3,此时,语句③仅执行1次,注意,执行了一次,而不是一次也没执行。据此,只有选项B符合。
      再取n=6,此时,语句③执行次数为:4+1=5,选项B正好符合。故可判断答案为B。

  • 第7题:

    有以下程序main(){ int x[]={1,3,5,7,2,4,6,0},i,j,k; for(i=0;i<3;i++) for(j=2;j>=i;j--) if(x[j+1]>x[j]) { k=x[j]; x[j]=x[j+1]; x[j+1]=k; } for (i=0;i<3;i++) for(j=4;j<7-i;j++) if(x[j]>x[j+1]) { k=x[j]; x[j]=x[j+1]; x[j+1]=k; } for (i=0;i<8;i++) printf("%d",x[i]); printf("\n");}程序运行后的输出结果是A.75310246 B.01234567 C.76310462 D.13570246


    正确答案:A
    for(i=0;i<3;i++)
         for(j=2;j>=i;j--)
            if(x[j+1]>x[j]){  k=x[j];x[j]=x[j+1];x[j+1]=k;}
    此段程序的作用是将数组x[0]~x[3]中的数由大到小进行排列,运行此段程序后,x[]中的值变为x[]={7,5,3,1,2,4,6,0}
    for(i=0;i<3;i++)
        for(j=4;j<7-i;j++)
            if(x[j]>x[j+1]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}
    此段程序的作用是将数组x[4]~x[7]中的数由小到大进行排列,运行此段程序后,x[]中的值变为x[]={7,5,3,1,0,2,4,6},最后通过一个循环将X[]中的数依次输出。

  • 第8题:

    下列程序的时间复杂度为( )。 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),

  • 第9题:

    以下非法的赋值语句是

    A.n=(i=2,++i);

    B.j++;

    C.++(i+1);

    D.x=j>0;


    正确答案:C
    解析:自加或自减运算的操作数不能是表达式。

  • 第10题:

    下面的程序段执行后,X的结果为______。 X=0 For I=1 to 5 For j=I to 5 X=X+1 Next j Next I Print x

    A. 5

    B.10

    C.15

    D.20


    正确答案:C

  • 第11题:

    有以下程序:main(){int x[]={1,3,5,7,2,4,6,0},i,j,k;for(i=0;i<3;i++)for(j=2;j>=i;j--)if(x[j+

    有以下程序: main() { int x[]={1,3,5,7,2,4,6,0},i,j,k; for(i=0;i<3;i++) for(j=2;j>=i;j--) if(x[j+1]>x[j]) { k=x[j]; x[j]=x[j+1]; x[j+1]=k; } for(i=0;i<3;i++) for(j=4;j<7-i;j++) if(x[j]>x[j+1]) { k=x[j]; x[j]=x[j+1]; x[j+1]=k; } for(i=0;i<8;i++) printf("%d",x[i]); printf("\n"); } 程序运行后的输出结果是( )。

    A.75310246

    B.1234567

    C.76310462

    D.13570246


    正确答案:A
    解析:主函数中定义了一个整型数组x,并初始化。接着执行了一个二重for循环,在该二重循环的作用是将数组的前4个元素按从大到小排序,接着用了一个二重循环(也是冒泡算法)将数组的后4个元素按从小到大的顺序排序,故最后依次输出数组的个元素的值为75310246,所以,4个选项中选项A符合题意。

  • 第12题:

    以下不符合C语言语法的赋值语句是()。

    • A、n=(i2,i++);
    • B、x=y>0;
    • C、++(i+1);
    • D、j++;

    正确答案:C

  • 第13题:

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

    int sum=0;

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

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

    sum++;


    正确答案:

  • 第14题:

    执行下面程序段,语句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。

  • 第15题:

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

    int sum=0;

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

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


    正确答案:6
    6

  • 第16题:

    以下非法的赋值语句是( )。

    A.n=(i=2,++i);

    B.j++;

    C.++(i+1);

    D.x=j>0;


    正确答案:C
    解析:常量和表达式是不能被赋值的。选项A为复合表达式,首先计算(i=2,++i)的值,然后赋值给n,故选项A正确;选项B为简单自加运算,因为运算改变了变量j的内容,所以也算一种赋值语句,故选项B正确;选项c在表达式++(i+1);中,(i+1)不是变量,该表达式的值为常量,而在++运算中,其运算对象必须为变量,故选项C错误:选项D将逻辑表达式j>0的值赋给x,是合法的赋值语句。所以应当选择C。

  • 第17题:

    有以下程序 main() { int x[]={1,3,5,7,2,4,6,0},i,j,k; for(i=0;i<3;i++) for (j=2;j>=i;

    有以下程序

    main( )

    { int x[ ]={1,3,5,7,2,4,6,0},i,j,k;

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

    for (j=2;j>=i;j--)

    if(x[j+1]>x[j]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}

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

    for(j=4;j<7-i;j++)

    if(x[j+1]>x[j]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}

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

    if(x[j]>x[j+1]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}

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

    printf("\n");

    }

    程序运行后的输出结果是:

    A.75310246

    B.1234567

    C.76310462

    D.13570246


    正确答案:A
    解析:程序运行的输出结果是75310246。

  • 第18题:

    有以下程序:main(){int i, j, x=0; for(i=0; i<2; i++) { x++; for( j=0; j<=3; j++) { if(j%2) continue; x++; } x++; } printf("x=%d\n", x);}程序执行后输出结果是( )。

    A.x=4

    B.x=8

    C.x=6

    D.x=12


    正确答案:B
    解析:外循环的循环变量i从0递增到1会循环2次,内循环的循环变量j从0递增到3会循环4次。但是内循环中有一条if语句,每当j%2为真,即j为奇数时会跳过下面的x++;语句,所以4次内循环只有2次执行到x++;语句,再加上外循环中包含的2条x++语句,所以每次外循环会使x自增4次,2次外循环下来x的值为8。故应该选择B。

  • 第19题:

    以下非法的赋值语句是( )

    A.n=(i=2,++i)

    B.j++

    C.++(i+1)

    D.x=j>0


    正确答案:C

  • 第20题:

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

    A. x=4

    B.x=8

    C.x=6

    D.x=12


    正确答案:B
    当i=0时,i<2成立,执行第一个for循环x自加为1,接着执行第二个for循环;j=0时j<=3成立,此时if不成立,执行x++后,x为2;接着j=1时,i<=3成立,继续循环,此时if成立,continue是跳出本次循环,继续下一次循环,不再执行x++了;接着j=2时,j<=3成立,此时if不成立,执行其后的语句;当j=4时,退出第二个循环,接着执行循环外部的x++,x为4;当i=1时,i<2成立,执行第一个循环,x=5,此时接着执行循环外部的语句,即第二个循环;j=0时j<3成立,此时if不成立,x++后,x为6,接着j为1时,j<=3成立,继续循环,此时if成立,不再执行x++了;接着J=2时,j<=3成立,此时if不成立,执行其后的x++,x为7;i=3时,j<=3成立,此时if成立,不再执行其后的语句了;当j=4时,退出第二个循环,执行循环外部的语句,最终x为8,故选B选项。

  • 第21题:

    下列的程序段执行后,x的值为______。Private Sub Command1_Ciick() x =0 for i =1 To 10 for j = i To 10 x=x+1 Next j Next i Print xEnd Sub

    A.50

    B.55

    C.5

    D.105


    正确答案:B
    解析:本题的难点是嵌套循环的循环次数。由于内层的初值为外层循环的循环变量,循环次数为“10+9+8+7+6+5+4+3+2+1=55”。

  • 第22题:

    以下非法的赋值语句是

    A.n=(i=2, i++)

    B.i++

    C.x=j>0

    D.++(i+1)


    正确答案:D

  • 第23题:

    执行下列语句后,变量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。

  • 第24题:

    单选题
    设语句x++的时间是单位时间,则以下语句的时间复杂度为()。 for(i=1;i<=n;i++) for(j=i;j<=n;j++) x++;
    A

    O(1)

    B

    O(2n2

    C

    O(n)

    D

    O(3n3


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