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

25

1.设循环队列为Q(1:m),其初始状态为front=rear=m。经过一系列入队与退队运算后,front=20,rear=15。现要在该循环队列中寻找最小值的元素,最坏情况下需要比较的次数为

A.5

B.6

C.m-5

D.m-6

2.某二叉树的前序序列为ABCDEFG,中序序列为DCBAEFG,则该二叉树的后序序列为

A.EFGDCBA

B.DCBEFGA

C.BCDGFEA 

D.DCBGFEA

3.下列叙述中正确的是

A.在链表中,如果每个结点有两个指针域,则该链表一定是非线性结构

B.在链表中,如果有两个结点的同一个指针域的值相等,则该链表一定是非线性结构

C.在链表中,如果每个结点有两个指针域,则该链表一定是线性结构

D.在链表中,如果有两个结点的同一个指针域的值相等,则该链表一定是线性结构

4.下列叙述中错误的是

A.在带链队列中,队头指针和队尾指针都是在动态变化的

B.在带链栈中,栈顶指针和栈底指针都是在动态变化的

C.在带链栈中,栈顶指针是在动态变化的,但栈底指针是不变的

D.在带链队列中,队头指针和队尾指针可以指向同一个位置

5.软件生命周期中,确定软件系统要做什么的阶段是

A.需求分析

B.软件测试

C.软件设计

D.系统维护

6.下面对软件测试和软件调试有关概念叙述错误的是

A.严格执行测试计划,排除测试的随意性

B.程序调试通常也称为Debug

C.软件测试的目的是发现错误和改正错误

D.设计正确的测试用例

7.下面属于系统软件的是

A.财务管理系统

B.编译软件

C.编辑软件Word

D.杀毒软件

8.将E-R图转换为关系模式时,E-R图中的实体和联系都可以表示为

A.属性

B.键

C.关系

D.域

9.有两个关系R与S如下,由关系R和S得到关系T,则所使用的操作为

A.并

B.自然连接

C.笛卡尔积

D.交

10.在数据管理的三个发展阶段中,数据的共享性好且冗余度最小的是

A.人工管理阶段

B.文件系统阶段

C.数据库系统阶段

D.面向数据应用系统阶段

11.以下叙述中错误的是

A.书写风格良好的程序执行效率高

B.书写风格良好的程序易读性好

C.C程序可以在一行上写多条语句

D.C程序允许将一条语句分写在多行上

12.在C语言中,以下选项中不能正确表示10×1000 之值的是

A.1.0E4.0

B.1.E4

C.10E3

D.1.0e4

13.设有定义int a=0,b=1,c=1;

以下选项中表达式值与其它三个不同的是

A.b=a==c

B.a=b=c

C.a=c==b

D.c=a!=c

14.设有两行定义语句:

    int   scanf;

    float  case;

  则以下叙述正确的是

A.第2行语句不合法

B.两行定义语句都合法

C.第1行语句不合法

D.两行定义语句都不合法

15.设有定义: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);

16.设有定义int a,b;  float x,y; 则以下选项中对语句所作的注释叙述错误的是

A.scanf("%d%d%f",&a,&b);     /* 多余的格式符%f完全不起作用 */

B.scanf("%d%d",&a,&b,&x);    /* 多余的输入项不能获得输入数据 */

C.scanf("%d%f%d",&a,&b,&x);  /* 输入项与格式符类型不匹配变量bx得不到正确的输入数据 */

D.scanf("Input:%d%d",&a,&b); /* 格式串中允许加入格式符以外的字符串 */

17.有如下程序

#include

main()

{

    int a = 0, b = 1;

    if (++a == b++)

        printf("T");

    else

        printf("F");

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

    printf("\n");

}

程序运行后的输出结果是

A.Ta=1,b=2

B.Fa=1,b=2

C.Ta=0,b=1

D.Fa=0,b=2

18.有如下程序

#include

main()

{

    int i = 1;

    for (printf("%d", i); i<4; i++)

        printf("%d", i);

    printf("\n");

}

程序运行后的输出结果是

A.1123

B.123

C.0123

D.001

19.有如下程序

#include

main()

{

    char ch = 'A';

    while (ch < 'D')

    {

        printf("%d", ch - 'A');

        ch++;

    }

    printf("\n");

}

程序运行后的输出结果是

A.012

B.ABC

C.abc

D.123

20.有如下程序

#include

main()

{

    if ('\0' == 0) putchar('X');

    if ('0' == 0)  putchar('Y');

    if ('a' > 'b') putchar('Z');

    printf("\n");

}

程序运行后的输出结果是

A.X

B.XYZ

C.YZ

D.Y

21.有如下程序

#include

main()

{

    char ch = 'M';

    while (ch != 'K')

    {

        ch --;

        putchar(ch);

    }

    printf("\n");

}

程序运行后的输出结果是

A.LK

B.MN

C.OP

D.MM

22.有以下程序段

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

        if(a>b) a=b;

        if(a>c) a=c;

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

    该程序段的功能是

A.输出abc中的最小值

B.输出abc中的最大值

C.输出a的原始值

D.输出a、b、c中值相等的数值

23.以下关于函数的叙述中正确的是

A.函数形参的类型与返回值的类型无关

B.函数必须要有形参

C.函数必须要有返回值

D.函数调用必须传递实参

24.设有定义:int a,b[10],*c=NULL,*p;,则以下语句错误的是

A.p=a;

B.p=b;

C.p=c;

D.p=&b[0];

25.有以下程序

      #include

      void fun(int *x,int s,int e)

       {  int i,j,t;

          for(i=s,j=e; i

             { t=*(x+i);  *(x+i)=*(x+j); *(x+j)=t;}

       }

      main()

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

         fun(m,0,3); fun(m+4,0,5); fun(m,0,9);

         for(k=0; k<10;k++)

            printf("%d",m[k]);

      }  

程序的运行结果是

A.4567890123

B.3210987654

C.9876543210

D.0987651234

26.设有n个数按从大到小的顺序存放在数组x中,以下能使这n个数在x数组中的顺序变为从小到大的是

A.for(i=0;i

{   t=x[i];

    x[i]=x[n-i-1];

    x[n-i-1]=t;

}

B.for(i=0;i

{   t=x[i];

    x[i]=x[n-i-1];

    x[n-i-1]=t;

}

C.for(i=0;i

{   t=x[i];

    x[i]=x[n-i+1];

    x[n-i+1]=t;

}

D.for(i=0;i

{   t=x[i];

    x[i]=x[n-i-1];

    x[n-i-1]=t;

}

27.设有一个M*N的矩阵已经存放在一个M行N列的数组x中,且有以下程序段

       sum=0;

       for(i=0;i  sum+=x[i][0]+x[i][N-1];

       for(j=1;j

以上程序段计算的是

A.矩阵所有靠边元素之和 

B.矩阵所有不靠边元素之和

C.矩阵所有元素之和

D.矩阵两条对角线元素之和

28.有以下程序

    #include

    main()

    {  int s[3][2]={ 1,2,3,4,5,6},*ps[3],k;

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

         {  ps[k]=s[k];

            printf("%d ",*(ps[k]+1));

         }

    } 

程序的运行结果是

A.2 4 6

B.1 3 5

C.1 2 3

D.4 5 6

29.设有以下定义

       char s1[]="0123";

       char s2[]={'0','1','2','3'};

则以下叙述正确的是

A.数组s1的长度大于s2的长度

B.数组s1和s2的长度相同

C.数组s1的长度小于s2的长度

D.数组s1和s2完全等价

30.以下能正确进行字符串赋值的语句组是

A.char *ch; ch="abc";

B.char ch[ ]={'a','b','c'};

C.char ch[3]="abc";

D.char ch[4]; ch="abc";

31.有以下程序

     #include

     int fun(char *s)

     {  char *p=s;

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

         return(p-s);

     }

     main()

     {   char *p="01234";

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

     } 

程序的运行结果是

A.6

B.5

C.4

D.3

32.有以下程序

      #include

      main()

      {   char *mm[4]={"abcd","1234","mnop","5678"};

          char **pm=mm;

          int i;

          for(i=0; i<4; i++) printf("%s",pm[i]+i);

          printf("\n");

      }

    程序的运行结果是

A.abcd234op8

B.abcd1234mnop5678

C.a2o8

D.a1m5

33.有以下程序

      #include

      void fac2(int );

      void fac1(int n)

      {   printf("*");

          if(n>0) fac2(n-1);

       }

      void fac2(int n)

      {   printf("#");

          if(n>0) fac2(--n);

      }

      main()

       {  fac1(3); }

 程序的运行结果是

A.*###

B.*##*

C.**##

D.*#*#

34.有以下程序

      #include

      int fun(int n)

      {  static int t=1;   int i=1;

         for( ; i<=n; i++)  t*=i;

         return t;

      }

      main()

      {  int t=1,i;

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

            t+=fun(i);

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

      }

程序的运行结果是

A.15

B.11

C.8

D.4

35.有以下程序

      #include

      #include

      #include

      main()

      {   char *p1,*p2;

          p1=p2=(char *)malloc(sizeof(char)*10);

          strcpy(p1,"malloc");

          strcpy(p2,p1+1);

          printf("%c%c\n",p1[0],p2[0]);

      }

程序的运行结果是

A.aa

B.ma

C.am

D.mm

36.设有定义struct { int n; float x;} s[2],m[2]={{10,2.8},{0,0.0}};

    则以下赋值语句中正确的是

A.s[0]=m[1];

B.s=m;

C.s.n=m.n;

D.s[2].x=m[2].x;

37.有以下程序

      #include

      struct S{ int a; int *b;};

      main()

      {   int x1[ ]={3,4},x2[ ]={6,7};

          struct S x[ ]={1,x1,2,x2};

          printf("%d,%d\n",*x[0].b,*x[1].b);

      }

程序的运行结果是

A.3,6

B.1,2

C.4,7

D.变量的地址值

38.有以下程序

      #include

      #include

      typedef struct {

         char name[10];

         char sex;

         int age;} STU;

      void fun(STU *t)

      {  strcpy((*t).name,"Tong");

        (*t).age++;

      }

      main()

      {   STU s[2]={"Hua",'m',18,"Qin",'f',19};

          fun(s+1);

          printf("%s,%d,%s,%d\n",s[0].name,s[0].age,s[1].name ,s[1].age );

      }

程序运行后的输出结果是

A.Hua,18,Tong,20

B.Hua,18,Qin,19

C.Tong,19,Qin,19

D.Hua,19,Tong,19

39.以下不属于C语言位运算符的是

A.!

B.|

C.^

D.~

40.有以下程序段

      FILE *fp;

      if( (fp=fopen("test.txt""w")) == NULL)

        {   printf("不能打开文件");

            exit(0);}

      else

           printf("成功打开文件");

若指定文件test.txt不存在且无其他异常则以下叙述错误的是

A.输出"不能打开文件!"

B.输出"成功打开文件!"

C.系统将按指定文件名新建文件

D.系统将为写操作建立文本文件

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