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

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

  • 第2题:

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

    int sum=0;

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

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


    正确答案:6
    6

  • 第3题:

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

    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。

  • 第4题:

    有如下程序段,设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。

  • 第5题:

    己知int i,x[3][4];,则不能将x[1][1]的值赋给变量i的语句是______。

    A.i=*(*(x+1)+1)

    B.i=*(*(x+1))

    C.i=x[1][1]

    D.i=*(x[1]+1)


    正确答案:B

  • 第6题:

    下列程序段中循环体的执行次数是______。 int x=-12; while (x=0) x=x+1;

    A.While循环执行12次

    B.循环体语句执行一次

    C.循环是死循环

    D.循环体语句一次也不执行


    正确答案:D

  • 第7题:

    有以下程序: 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选项。

  • 第8题:

    本题的功能是用冒泡法对数组元素arr[]={30,1,-9,70)进行从小到大排列。冒泡法排序是比较相邻的两个元素的大小,然后把小的元素交换到前面。

    public class javal{

    public static void main(String[]args){

    int i,j;

    int arr[]={30,1,-9,70);

    int n= ;

    for(i=0;i<;n-1;i++){

    for(j=i+1;j<;n;j++){

    if(arr[i]>;arr[j]){

    int temp=arr[i];

    }

    }

    }

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

    System.out.print(arr[i]+"");

    }

    }


    正确答案:
    第1处:arr.length第2处:arr[]=arr[j]第3处:arr[j]=temp【解析】第1处从下面的循环结构可看出n的值应为数组的大小;第2处和第3处是借助临时变量把小的元素交换到前面。

  • 第9题:

    下面的程序段执行后,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

  • 第10题:

    以下非法的赋值语句是

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

    B.i++

    C.x=j>0

    D.++(i+1)


    正确答案:D

  • 第11题:

    以下程序的定义语句中,x[1]的初值是 [9] ,程序运行后输出的内容是 [10] 。include main(

    以下程序的定义语句中,x[1]的初值是 [9] ,程序运行后输出的内容是 [10] 。

    include <stdio.h>

    main()

    { int x[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;

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

    { p[i]=&x[2*i+1];

    printf("%d",p[i][0]);

    }

    printf("\n");

    }


    正确答案:

    在主函数中根据整型数组x[]的定义可知,x[1]的初值等于2。在for循环语句中;当i=0时,p[0]=&x[1],p[0][0]=2;当i=1时,P[1];&x[3],p[1][0]=4;当i=2时,p[2]=及x[5],p[2][0]=6;当i=3时,p[3]=&x[7], p[3][0]=8,所以程序输出的结果为2、4、6、8。

  • 第12题:

    单选题
    设语句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
    解析: 暂无解析

  • 第13题:

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

    #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

  • 第14题:

    本程序用冒泡法对数组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,循环结束。

  • 第15题:

    阅读下列函数说明和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)矩阵右边界递减。

  • 第16题:

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

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

    B.j++

    C.++(i+1)

    D.x=j>0


    正确答案:C

  • 第17题:

    若有说明语句:int i,x[3][4];,则不能将x[1][1]的值赋给变量i的语句是(37)。

    A.i=*(*(x+1)+1)

    B.i=x[1][1]

    C.i=*(*(x+1))

    D.i=*(x[1]+1)


    正确答案:C
    解析:本题考查对数组元素的相关操作。题目中给出的是一个二维数组x[3][4],数组名为x,取数组第一行第一列元素的几种方法分别是*(x[1]+1)、x[1][1]、*(*(x+1)+1)、*(x+1)[1]等。

  • 第18题:

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

  • 第19题:

    以下非法的赋值语句是

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

    B.j++;

    C.++(i+1);

    D.x=j>0;


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

  • 第20题:

    下列的程序段执行后,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”。

  • 第21题:

    有以下程序: void sott(int a[], int n) { int i, j, t; for(i=0; i<n-1; i++) for(j=i+1; j<n; j++) if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;) } main() {int aa[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, I; sort(aa+2, 5); for (i=0; i<10; i++)printf("% d", aa[i]); printf("\n"); } 程序运行后的输出结果是______。

    A.1, 2, 3, 4, 5, 6, 7, 8, 9, 10,

    B.1, 2, 7, 6, 3, 4, 5, 8, 9, 10,

    C.1, 2, 7, 6, 5, 4, 3, 8, 9, 10,

    D.1, 2, 9, 8, 7, 6, 5, 4, 3, 10,


    正确答案:C
    解析:aa+2=aa[2],因此sort(aa+2,5)是从aa[2]开始,依次与后面的元素进行比较,将当前值小于其后一项的值进行互换,循环5次。

  • 第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题:

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

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

    正确答案:C

  • 第24题:

    单选题
    有以下程序段,若变量已正确定义并赋值  if(a>b)printf(x=%d,,x);  else printf(y=%d,,y);  if(a<=b)i++;  else j++; 则与此程序段功能相同的选项是(  )。
    A



    if(a>b)
    {
     printf(x=%d,,x);
     j++
    }
    else
    {
     printf(y=%d,,y);
     i++
    }

    B



    if(a>b)
    {
     printf(x=%d,,x);
     i++
    }
    else
    {
     printf(y=%d,,y);
     j++
    }

    C



    if(a<=b)
    {
     printf(x=%d,,x);
     i++
    }
    else
    {
     printf(y=%d,,y);
     j++
    }

    D



    if(a>=b)
    {
     printf(x=%d,,x);
     i++
    }
    else
    {
     printf(y=%d,,y);
     j++
    }


    正确答案: A
    解析:
    程序段执行过程为:如果a>b,输出x,否则输出y;如果a<=b,i加1,否则j加1。A项如果a>b,输出x且j加1,否则输出y且i加1,与题目中功能相同,A项正确。B项如果a>b,输出x且i加1,否则输出y且j加1,与题目中功能不相同,B项错误。C项如果a<=b,输出x且i加1,否则输出y且j加1,与题目中功能不相同,C项错误。D项判断条件为a>=b,多了a=b,D项错误。答案选择A选项。