江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
2015年3月全国计算机二级C语言选择第1套

1.算法的时间复杂度是指

 

A.设计该算法所需的工作量

 

B.执行该算法所需要的时间

 

C.执行该算法时所需要的基本运算次数

 

D.算法中指令的条数

 

2.设循环队列存储空间为Q(1:50),初始状态为front=rear=50。经过一系列入队和退队操作后,front=rear=25,则该循环队列中元素个数为

 

 

 

A.26

 

B.25

 

C.24

 

D.0或50

 

3.某棵树的度为4,且度为4、3、2、1的结点数分别为1、2、3、4,则该树中的叶子结点数为

 

A.11

 

B.9

 

C.10

 

D.8

 

4.设某二叉树的前序序列与中序序列均为ABCDEFGH,则该二叉树的后序序列为

 

A.HGFEDCBA

 

B.EFGHABCD

 

C.DCBAHGFE

 

D.ABCDEFGH

 

5.下列叙述中正确的是

 

A.二分查找法适用于任何存储结构的有序线性表

 

B.二分查找法只适用于顺序存储的有序线性表

 

C.二分查找法适用于有序循环链表

 

D.二分查找法适用于有序双向链表

 

6.下列序列中不满足堆条件的是

 

A. (98,95,93,96,89,85,76,64,55,49)

 

B.(98,95,93,94,89,85,76,64,55,49)

 

C.(98,95,93,94,89,90,76,64,55,49)

 

D.(98,95,93,94,89,90,76,80,55,49)

 

7.下面属于面向对象方法中对象基本特点的是

 

A.多态性

 

B.方法唯一性

 

C.可修改性

 

D.灵活性

 

8.下面可以作为软件需求分析工具的是

 

A.包图 

 

B.程序流程图

 

C.PAD图

 

D.数据流程图(DFD图)

 

9.数据库的数据模型分为

 

A.层次、关系和网状

 

B.网状、环状和链状

 

C.大型、中型和小型

 

D.线性和非线性

 

10.数据库系统的数据独立性是指

 

A.不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序

 

B.不会因为数据的变化而影响应用程序

 

C.不会因为存储策略的变化而影响存储结构

 

D.不会因为某些存储结构的变化而影响其他的存储结构

 

11.以下叙述正确的是

 

A.C程序由函数组成,可以不包含main函数

 

B.每个C程序文件中的main函数都应当放在最前面

 

C.每个C程序文件都应当包含一个main函数

 

D.每个C程序都只能有一个main函数

 

12.以下叙述错误的是

 

A.计算机可以直接识别由十六进制代码构成的程序

 

B.可以连续执行的指令的集合称为"程序"

 

C."程序"是人与计算机"对话"的语言

 

D.计算机可以直接识别由0和1组成的机器语言代码

 

13.以下与数学表达式 0<x<5且x≠2 不等价的C语言逻辑表达式是

 

A.(0<x<5) && (x!=2)

 

B.0<x && x<5 && x!=2

 

C.x>0 && x<5 && x!=2

 

D.(x>0 && x<2) || (x>2 && x<5)

 

14.以下选项中与 ( !a== 0 )的逻辑值不等价的表达式是

 

A.( a== !0 )

 

B.a

 

C.(a>0 || a<0)

 

D.(a!= 0 )

 

15.变量math和engl中存放了两门课的成绩。若两门课成绩均在60分以上(含60),则显示"pass";有一门低于60分则显示"fail",以下不能实现上述功能的程序段是

 

A. if(math<60)

           if(engl<60)

              printf("fail\n");

          else

 

             printf("pass\n");

 

B.if(math<60)

              printf("fail\n");

        else

          if(engl>=60)

             printf("pass\n");

          else

 

              printf("fail\n");

 

C.if ((math<60) ||(engl<60))

            printf("fail\n");

        else

 

            printf("pass\n");

 

D.if ((math>=60) && (engl>=60))

           printf("pass\n");

        else

 

           printf("fail\n");

 

16.设有以下程序段

main( )

{  int  x[M][N];

      ...

   Arrlet(x);

     ...

}

 

则作为函数Arrlet的形参以下表示形式非法的是

 

 

 

A.int x[M][ ]

 

B.int (*x)[N]

 

C.int x[ ][N]

 

D.int x[M][N]

 

17.有以下程序

#include  <stdio.h>

void  fun( int n )

{

  if( n/2 )  fun(n/2);

  printf("%d",n%2 );

}

main()

{   fun( 10 );    printf("\n");   }

 

 

程序运行后的输出结果是

 

A.0101

 

B.1000

 

C.1100

 

D.1010

 

18. 有以下程序

#include   <stdio.h>

void  fun(char  *a,char  *b)

{  char  *s=a;

   while(*s) s++;

   s--;

   while(s>=a)

   { *b=*s; s--; b++; }

   *b='\0';

}

main()

{  char  s1[]="abc",s2[6];

   fun(s1,s2);

   puts(s2);

 

 

}

 

程序运行后的输出结果是

 

A.cbaabc

 

B.abc

 

C.cba

 

D.abccba

 

19.有以下程序

#include   <stdio.h>

main( )

{  char  b[4][10];    int  i;

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

        scanf( "%s", b[i] );

   for( i=3; i>=0; i-- )

        printf( "%s ", b[i] );

   printf( "\n" );

}

 

 

执行时若输入:  Peach flower is pink.<回车>  则输出结果是

 

A.Peachflower is pink.

 

B.pink. is flower Peach

 

C.Peachflowerispink.

 

D.Pink is flower peach.

 

20.有以下程序

#include  <stdio.h>

int *  f(int  *s)

{  s[1] +=6;

   *s=7;

   s+=2;

   return  s;

}

main( )

{  int  a[5]={1,2,3,4,5}, *p=a; 

   p= f(p); 

   printf( "%d,%d,%d\n", a[0], a[1], *p );

 

 

}

 

 

程序运行后的输出结果是

 

A.9,8,9

 

B.7,8,7

 

C.7,8,3

 

D.1,2,1

 

21.设有定义

    char  s[81];  int  i=0;

 

 

 

以下不能将一行不超过80个字符带有空格的字符串正确读入的语句或语句组是

 

A.scanf("%s",s);

 

B.while((s[i++]=getchar())!='\n');s[i]='\0';

 

C.gets(s);

 

D.do{ scanf("%c",&s[i]); }while(s[i++]!='\n'); s[i]='\0';

 

22.以下叙述中错误的是(  )。

A.C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令

B.C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件

C.用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中

D.C语言源程序经编译后生成后缀为.obj的目标程序

23.以下选项中,合法的一组C语言数值常量是(  )。

A.12. 0Xa23 4.5e0

B.028 .5e-3 -0xf

C..177 4e1.5 0abc

D.0x8A 10,000 3.e5

24.下选项中不合法的标识符是(  )

A.&a

B.FOR

C.print

D. 00

25.若有代数式 (其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是(  )

A.sqrt(fabs(pow(n,x)+exp(x)))

B.sqrt(fabs(pow(n,x)+pow(x,e)))

C.sqrt(abs(n^x+e^x))

D.sqrt(fabs(pow(x,n)+exp(x)))

26.若有定义:double a=22;int i=0,k=18;,则不符合C语言规定的赋值语句是(  )

A.i=(a+k)<=(i+k);

B.i=a%11;

C.a=a++,i++

D.i=!a;

27.有以下程序:

#include  <stdio.h>

main()

{  int s,t,A=10; double B=6;

  s=sizeof(A); t=sizeof(B);

  printf("%d,%d\n",s,t);

}

在VC6.0平台上编译运行,程序运行后的输出结果是(  )。

A.10,6

B.4,4

C.2,4

D.4,8

28.有以下程序:

#include  <stdio.h>

main()

{   char  a,b,c,d;

   scanf("%c%c",&a, &b);

   c=getchar();    d=getchar();

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

}

当执行程序时,按下列方式输入数据(从第1列开始,<CR>代表回车,注意:回车也是一个字符)

12<CR>

34<CR>

则输出结果是(  )。

A.12

34

B.12

C.1234

D.12

3

29.下关于逻辑运算符两侧运算对象的叙述中正确的是(  )。

A.可以是任意合法的表达式

B.只能是整数0或非0整数

C.可以是结构体类型的数据

D.只能是整数0或1

30.有以下程序:

#include  <stdio.h>

main()

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

  if(a=1)  b=1;c=2;

  else    d=3;

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

}

程序输出(  )。

A.1,1,2,0

B.0,0,0,3

C.编译有错

D.0,1,2,0

31.有以下程序:

#include  <stdio.h>

main()

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

   switch (x)

   { case   1:

    switch(y)

    { case   0:  a++;  break;

      case   1:  b++;  break;

      }

     case 2:  a++;  b++;  break;

     case 3:  a++;  b++;

  }

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

}

程序的运行结果是(  )。

A.a=2,b=2

B.a=2,b=1

C.a=1,b=1

D.a=1,b=0

32.以下程序段中的变量已正确定义:

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

      for( k=1; k<3; k++ ); printf("*" );

程序段的输出结果是(  )。

A.**

B.****

C.*

D.********

33.有以下程序段:

#include  <stdio.h>

int  i, n;

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

{  n = rand() % 5;

  switch (n)

  { case 1:

case 3:  printf("%d \n", n);  break;

case 2:

case 4:  printf("%d \n", n);  continue;

case 0:  exit(0);

  }

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

}

以下关于程序段执行情况的叙述,正确的是(  )。

A.for循环语句固定执行8次

B.当产生的随机数n为4时结束循环操作

C.当产生的随机数n为1和2时不做任何操作

D.当产生的随机数n为0时结束程序运行

34.有以下程序:

#include  <stdio.h>

int f(int x);

main()

{ int n=1,m;

 m=f(f(f(n))); printf("%d\n",m);

}

int f(int x)

{ return x*2; }

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

A.8

B.2

C.4

D.1

35.下叙述中错误的是(  )

A.可以给指针变量赋一个整数作为地址值

B.函数可以返回地址值

C.改变函数形参的值,不会改变对应实参的值

D.当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL

36.设已有定义:float  x;,则以下对指针变量p进行定义且赋初值的语句中正确的是(  )。

A.int  *p=(float)x;

B.float  *p=&x;

C.float  p=&x;

D.float  *p=1024;

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

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}};

38.有以下程序:

#include  <stdio.h>

void fun( int  a[], int  n)

{  int   i, t;

  for(i=0; i<n/2; i++)  { t=a[i];  a[i]=a[n-1-i];  a[n-1-i]=t; }

}

main()

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

  fun(k,5);

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

  printf("\n");

}

程序的运行结果是(  )。

A.321678

B.876543

C.1098765

D.345678

39.有以下程序:

#include  <stdio.h>

#define   N    4

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

{ int  i;

  for (i=0; i<N; i++)   b[i] = a[i][i] - a[i][N-1-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<N; i++)   printf("%d,", y[i]);    printf("\n");

}

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

A.-3,-1,1,3,

B.-12,-3,0,0,

C.0,1,2,3,

D.-3,-3,-3,-3,

40.设有定义:char  s[81];  int  i=0;,以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是(  )。

A.gets(s);

B.while((s[i++]=getchar())!='\n');s[i]='\0';

C.scanf("%s",s);

D.do{ scanf("%c",&s[i]); }while(s[i++]!='\n'); s[i]='\0';

1.C  2.D  3.A  4.A  5.B  6.A  7.A  8.D  9.A  10.A  11.D  12.A  13.A  14.A  15.A  16.A  17.D  18.C  19.B  20.C  21.A  22.A  23.A  24.A  25.A  26.B  27.D  28.D  29.A  30.C  31.B  32.C  33.D  34.A  35.A  36.B  37.D  38.A  39.A  40.C