二级C语言备考7

一、单选   共40题 (共计40分)

第1题 (1.0分)        题号:7098        难度:中        第1章

下列叙述中正确的是

A:一个算法的空间复杂度大,则其时间复杂度也必定大

B:一个算法的空间复杂度大,则其时间复杂度必定小

C:一个算法的时间复杂度大,则其空间复杂度必定小

D:算法的时间复杂度与空间复杂度没有直接关系

答案:D

第2题 (1.0分)        题号:6792        难度:中        第2章

有C语言表达式 2*3+4+15%3 ,关于其执行顺序,以下叙述正确的是

A:先执行2*3得6,再执行6+4得10,再执行15%3得0,最后执行10+0得10

B:先执行2*3得6,再执行15%3得5,最后执行6+4+5得15

C:先执行15%3得0,再执行2*3得6,最后执行6+4+0得10

D:先执行15%3得3,再执行4+3得7,再执行2*3得6,最后执行6+7得13

答案:A

第3题 (1.0分)        题号:6072        难度:较易        第2章

若有定义:int  a,b,c; 以下程序段的输出结果是

          a=11;  b=3;  c=0;

          printf("%d\n",c=(a/b,a%b));

A:2

B:0

C:3

D:1

答案:A

第4题 (1.0分)        题号:6708        难度:中        第2章

设有定义:double  x=2.12;,以下不能完整输出变量x值的语句是

A:printf("x=%5.0f\n",x);

B:printf("x=%f\n",x);

C:printf("x=%lf\n",x);

D:printf("x=%0.5f\n",x);

答案:A

第5题 (1.0分)        题号:7070        难度:较易        第2章

以下选项中合法的标识符是

A:1_ _

B:1月1日

C:1_1

D:_11

答案:D

第6题 (1.0分)        题号:6045        难度:中        第3章

设有定义: double  x=5.16894;,则语句 printf("%lf\n ",(int)(x*1000+0.5)/1000.);的输出结果是

A:5.16900

B:5.16800

C:0.00000

D:输出格式说明符与输出项不匹配,产生错误信息

答案:A

第7题 (1.0分)        题号:7165        难度:中        第3章

若有以下程序段

    double x=5.16894;

    printf("%f\n",  (int)(x*1000+0.5)/(double)1000  );

则程序段的输出结果是

A:5.17

B:5.175

C:5.169

D:5.168

答案:C

第8题 (1.0分)        题号:6044        难度:较易        第3章

有以下程序

#include   

main( )

{  int  x = 0x9;

   printf("%c\n", 'A'+x);

}

程序运行后的输出结果是

A:I

B:J

C:K

D:H

答案:B

第9题 (1.0分)        题号:7048        难度:中        第4章

有以下程序

#include

main()

{  int a=1,b=2,c=3,d=0;

   if (a==1 && b++==2)

if (b!=2||c--!=3)

printf("%d,%d,%d\n",a,b,c);

      else  printf("%d,%d,%d\n",a,b,c);

   else  printf("%d,%d,%d\n",a,b,c);

}

程序运行后的输出结果是

A:1,3,2

B:1,3,3

C:1,2,3

D:3,2,1

答案:B

第10题 (1.0分)        题号:7106        难度:中        第4章

若有以下程序

    #include

    main()

    {  int a=1,b=2,c=3,d=4, r=0;

       if (a!=1) ; else r=1;

       if (b==2)  r+=2;

       else;  if (c!=3)  r+=3;

       else;  if (d==4)  r+=4;

       printf("%d\n", r);

    }

则程序的输出结果是

A:10

B:7

C:6

D:3

答案:B

第11题 (1.0分)        题号:6405        难度:易        第4章

若变量已正确定义,在if (W) printf("%d\n" ,k ); 中,以下不可替代W的是( ).

A:a<>b+c

B:ch=getchar()

C:a==b+c

D:a++

答案:A

第12题 (1.0分)        题号:6180        难度:中        第4章

有下列程序

#include  

main()

{ int a=0,b=0,c=0;

  if (a++ || b++ && ++c)

    printf("%d,%d,%d\n", a, b, c);   

  else

    printf("%d,%d,%d\n", a, c, b);

}

程序执行后的输出结果是().

A:1,1,0

B:1,1,1

C:1,0,0

D:1,0,1

答案:D

第13题 (1.0分)        题号:6047        难度:中        第5章

有以下程序

#include   

main( )

{  int  a=-2, b=2;

   for(; ++a && --b;)

         ;

   printf("%d,%d\n", a,b);

}

程序运行后的输出结果是

A:0,1

B:0,0

C:1,-1

D:0,2

答案:A

第14题 (1.0分)        题号:7345        难度:中        第5章

有以下程序

#include

main()

{  int a=-1, b=-1;

   while(++a)

       ++b;

   printf("%d,%d\n", a,b);

}

程序的运行结果是

A:0,-1

B:0,0

C:-1,-1

D:结果不确定

答案:A

第15题 (1.0分)        题号:6409        难度:中        第5章

有以下程序

    #include    

    main()

    {  int  x,a=1,b=1;

       while(1)

       {  scanf("%d",&x);

          if(x>0) { a*=x;  break; }

          if(x<0) { b*=x;  continue; }

          printf("%d,%d\n",a,b);

       }

    }

程序运行时输入:-1 -2 0 1 2 <回车>,则输出结果是( ).

A:1.2

B:2.2

C:-1.1

D:-2.1

答案:A

第16题 (1.0分)        题号:6325        难度:中        第5章

有如下程序

#include  

main()

{

    int i;

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

        putchar('9' - i % 2);

}

程序运行后的输出结果是().

A:98989

B:98765

C:9''8''7''6''5'

D:98989'

答案:A

第17题 (1.0分)        题号:6913        难度:中        第5章

若有定义语句:

    char  s[10]="1234567\0\0";

则strlen(s)的值是

A:7

B:8

C:9

D:10

答案:A

第18题 (1.0分)        题号:6078        难度:中        第5章

有以下程序

#include   

main( )

{  int  i;

   char  c;

   scanf("%c", &c);

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

   {

        if (i > c) continue;

        printf("%d,", i);

   }

}

执行时输入:0<回车>后,则输出结果是

A:5

B:0,0,0,0,0,

C:0,1,2,3,4,

D:0,1,

答案:C

第19题 (1.0分)        题号:6664        难度:中        第6章

有如下程序

#include

#include

main()

{

    printf("%d\n", strlen("0\n011\1"));

}

程序运行后的输出结果是

A:6

B:8

C:9

D:4

答案:A

第20题 (1.0分)        题号:6821        难度:较易        第6章

以下数组定义中错误的是().

A:int  x[2][3]={1,2,3,4,5,6};

B:int  x[][3]={0};

C:int  x[][3]={{1,2,3},{4,5,6}};

D:int  x[2][3]={{1,2},{3,4},{5,6}};

答案:D

第21题 (1.0分)        题号:6694        难度:中        第6章

有如下程序

#include

main()

{

    char name[10] = {'S', 'T', 'R', 'I', 'N', 'G'};

    name[3] = 'E'; name[5] = 0;

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

}

程序运行后的输出结果是

A:STRENG  

B:STRIEG

C:STREN

D:STREN0

答案:C

第22题 (1.0分)        题号:7117        难度:较易        第6章

若有以下程序

     #include

     main()

     {  int  i,j=0;

        char  a[]="How are you!";

        for (i=0; a[i]; i++)

           if (a[i] != ' ')  a[j++]=a[i];

        a[j]='\0';     

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

     }

则程序的输出结果是

A:Hay!

B:Howareyou

C:Howareyou!

D:How are you!

答案:C

第23题 (1.0分)        题号:7235        难度:较易        第6章

以下叙述中正确的是

A:字符串常量"str1"的类型是:字符串数据类型

B:有定义语句: char str1[] = "str1"; ,数组str1将包含4个元素

C:下面的语句用赋初值方式来定义字符串,其中,'\0'是必须的

   char str1[] = {'s', 't', 'r', '1', '\0'};

D:字符数组的每个元素可存放一个字符,并且最后一个元素必须是'\0'字符

答案:C

第24题 (1.0分)        题号:6088        难度:中        第6章

有以下程序

#include  

main( )

{  char  w[20], a[5][10]={"abcde", "fghij", "klmno", "pqrst", "uvwxy"};

   int  i;

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

       w[i] = a[i][i];

   w[5]= '\0';

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

}

程序运行后的输出结果是

A:ejoty

B:afkpu

C:agmsy

D:eimqu

答案:C

第25题 (1.0分)        题号:6803        难度:中        第7章

有如下程序

#include  

int  sum_mod(int a, int b)

{

    return a + b % 2;

}

main( )

{

    int  i;

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

        printf("%d", sum_mod(i, 4));

    printf("\n");

}

程序运行后的输出结果是

A:12345

B:01234

C:45678

D:43210

答案:B

第26题 (1.0分)        题号:6823        难度:中        第7章

有以下程序:

#include  

#define   N    4

void  fun(int  a[][N], int  b[])

{int  i;

 for (i=0; i

}

main()

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

 fun (x, y);

 for (i=0; i

}

程序运行后的输出结果是().

A:-3,-1,1,3,

B:-12,-3,0,0,

C:0,1,2,3,

D:-3,-3,-3,-3,

答案:A

第27题 (1.0分)        题号:7085        难度:中        第7章

有以下程序

     #include

     void  fun(int  *a, int  n) /* fun函数的功能是将a所指数组元素从大到小排序 */

     {  int   t, i, j;

        for (i=0; i

          for (j=i+1; j

            if (a[i]

     }

     main()

     {  int   c[10]={1,2,3,4,5,6,7,8,9,0},i;

        fun(c+4, 6);

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

        printf("\n");

     }

程序的运行结果是

A:1,2,3,4,9,8,7,6,5,0,

B:0,9,8,7,6,5,1,2,3,4,

C:0,9,8,7,6,5,4,3,2,1,

D:1,2,3,4,5,6,7,8,9,0,

答案:A

第28题 (1.0分)        题号:7358        难度:难        第7章

有以下程序

#include

void  f(int  x[], int  n)

{  if ( n> 1)

   {  printf("%d,", x[n-1]);

      f(x, n-1);

   }

   else

      printf("%d,", x[0]);

}

main()

{   int  z[6] = {1,2,3,4,5,6};

    f(z,6);      printf("\n");

}

程序的运行结果是

A:6,5,4,3,2,1,

B:6,1,

C:2,3,4,5,6,1,

D:1,2,3,4,5,6,

答案:A

第29题 (1.0分)        题号:7184        难度:中        第7章

有以下程序

#include

fun( int a, int b )

{  

    int  static  m=0, i=2;

    i=i+m+1;   

    m=i+a+b;

    return  m;

}

main()

{  

    int  k=4, m=1, p;

    p=fun( k, m);

    printf("%d,",p);

    p=fun( k, m);

    printf("%d\n",p);

}

程序运行后的输出结果是

A:8,17

B:7,16

C:8,8

D:7,17

答案:A

第30题 (1.0分)        题号:6534        难度:中        第7章

若有以下程序

    #include  

    int fun (int  x)

    {   int  y;

        y = x++;

        return   y;

    }

    main()

    {  int  k;

       for(k=0; k<3; k++) { printf ( "%d,", fun(k)+k); k++; }

    }

执行后的输出结果是().

A:1,5,

B:0,6,

C:0,4,

D:1,7,

答案:C

第31题 (1.0分)        题号:7024        难度:较易        第8章

若有定义语句:

    int a[2][3],*p[3];

则以下语句中正确的是

A:p=a;

B:p[0]=a;

C:p[0]=&a[1][2];

D:p[1]=&a;

答案:C

第32题 (1.0分)        题号:6082        难度:中        第8章

有以下程序

#include  

int  fun( int *b,  int  n )

{   int  i, r=1;

    for( i=0; i<=n; i++ ) r=r*b[i];

    return  r;

}

main()

{   int  x, a[]={2,3,4,5,6,7,8,9 };

    x=fun( a,3 );

    printf("%d\n", x);

}

程序运行后的输出结果是

A:24

B:720

C:120

D:6

答案:C

第33题 (1.0分)        题号:6635        难度:较难        第8章

若有说明和语句:char  str[]="Hello", *p;  p=str;,则此时*(p+5)中的值为

A:\0'

B:o'

C:o'的地址

D:不确定的值

答案:A

第34题 (1.0分)        题号:7205        难度:较难        第8章

有以下程序

#include

int  fun( char  s[] )

{  

    char  *p = s;

    while( *p != 0 )  p++;

    return ( p-s );

}

main()

{  

    printf("%d\n", fun("0ABCDEF") );  

}

程序运行后的输出结果是

A:1

B:6

C:7

D:0

答案:C

第35题 (1.0分)        题号:7030        难度:中        第8章

下列函数的功能是

void fun(char  *a,char  *b)

{  

    while((*b=*a)!='\0')  

    { a++; b++;}  

}

A:将a所指字符串赋给b所指空间

B:使指针b指向a所指字符串

C:将a所指字符串和b所指字符串进行比较

D:检查a和b所指字符串中是否有'\0'

答案:A

第36题 (1.0分)        题号:6697        难度:中        第8章

有如下程序

#include

int sum(int* array, int len)

{

    if (len == 0)

        return array[0];

    else

        return array[0] + sum(array+1, len-1);

}

main()

{

    int array[5] = {1,2,3,4,5};

    int res = sum(array, 4);

    printf("%d\n", res);

}

程序运行后的输出结果是

A:15

B:10

C:8

D:1

答案:A

第37题 (1.0分)        题号:6129        难度:中        第9章

有以下程序

#include   

struct tt

{ int x;  struct tt  *y; } s[2]={ 1,0,2,0};

main( )

{  

   struct tt  *p=s;

   p->y=s;

   printf("%d",++p->x);

}

程序运行后的输出结果是

A:2

B:0

C:1

D:3

答案:A

第38题 (1.0分)        题号:6479        难度:较难        第9章

设有定义:

        typedef  struct data1{int  x, y;}   data2;

        typedef  struct {float  x, y;}   data3;

则以下不能作为类型名使用的是( ).

A:data1

B:data2

C:data3

D:struct data1

答案:A

第39题 (1.0分)        题号:6481        难度:易        第9章

以下选项中,不能定义结构体变量std的是

A:struct { int num; char name[12];} PER;

        PER  std;

B:#define PER  struct

        PER{ int num; char name[12];}std ;

C:typedef  struct { int num; char name[12];} PER;

        PER std;

D:struct PER { int num; char name[12];} ;

        struct PER  std;

答案:A

第40题 (1.0分)        题号:6519        难度:易        第10章

若以"a+"方式打开一个已存在的文件,以下叙述正确的是().

A:文件打开时,原有文件内容不被删除,可以进行添加和读操作

B:文件打开时,原有文件内容不被删除,位置指针移到文件开头,可以进行重写和读操作

C:文件打开时,原有文件内容不被删除,位置指针移到文件中间,可以进行重写和读操作

D:文件打开时,原有文件内容被删除,只可进行写操作

答案:A

二、程序填空   共1题 (共计18分)

第1题 (18.0分)        题号:310        难度:中        第1章

/*-------------------------------------------------------

【程序填空】

---------------------------------------------------------

题目:给定程序中,函数fun的功能是:对形参ss所指字符串数组中的M个字符串按长度由

      短到长进行排序。ss所指字符串数组中共有M个字符串,且串长小于N。

-------------------------------------------------------*/

#include    

#include    

#define    M    5

#define    N    20

void fun(char  (*ss)[N])

{  

        int  i, j, k, n[M];     

        char  t[N];

        for(i=0; i

                n[i]=strlen(ss[i]);

        for(i=0; i

        {

                k=i;

/***********SPACE***********/

                for(j=【?】; j

/***********SPACE***********/

                if(n[k]>n[j])  【?】;

                if(k!=i)

                {  

                        strcpy(t,ss[i]);

                        strcpy(ss[i],ss[k]);

/***********SPACE***********/

                        strcpy(【?】);

                        n[k]=n[i];

                }

        }

}

main()

{  

        char  ss[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"};

        int  i;

        printf("\nThe original strings are :\n");

        for(i=0; i

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

        printf("\n");

        fun(ss);

        printf("\nThe result :\n");

        for(i=0; i

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

}

答案:

=======(答案1)=======

i + 1

=======(答案2)=======

k=j

=======(答案3)=======

ss[k],t

三、程序改错   共1题 (共计18分)

第1题 (18.0分)        题号:58        难度:中        第7章

/*-------------------------------------------------------

【程序改错】

---------------------------------------------------------

题目:下列给定程序中,函数fun的功能是:求k!(k<13),所求阶乘的值作为函数值返回。

例如:若k=10,则应输出3628800。

-------------------------------------------------------*/

#include  

#include  

long fun(int k)

{

/***********FOUND***********/

        if k>1

                return(k*fun(k-1));

        return 1;

}

void main()

{

        int k=10;

        system("CLS");

        printf("%d!=%ld\n ",k,fun(k));

}

答案:

=======(答案1)=======

if(k>1)

=========或=========

if(1

四、程序设计   共1题 (共计24分)

第1题 (24.0分)        题号:791        难度:中        第1章

/*---------------------------------------------------------------------

【程序设计】

-----------------------------------------------------------------------

题目:请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子

      (不包括1与自身)之和。规定n的值不大于1000。

例如:若主函数从键盘给n输入的值为856,则输出为sum=763。

注意:请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入

      所编写的若干语句。

--------------------------------------------------------------------*/

#include  

#include

int fun(int n)

{

/**********Program**********/

/**********  End  **********/

}

main()

{

        int  n,sum;

        printf("Input  n:");

        scanf("%d", &n);

        sum=fun(n);

        printf("sum=%d\n", sum);

        system("pause");

}

答案: int s=0,i;

for(i=2;i<=n-1;i++)                                                                  /*将n减1累加*/

if(n%i==0)

s+=i;

return s;

你可能感兴趣的:(算法,数据结构,c++)