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

26

1.设数据元素的集合D={ 1,2,3,4,5 },则满足下列关系R的数据结构中为线性结构的是

A.R={ (1,2), (3,4), (5,1) }

B.R={ (1,3), (4,1), (3,2), (5,4) }

C.R={ (1,2), (2,3), (4,5) }

D.R={ (1,3), (2,4), (3,5) }

2.下列叙述中正确的是

A.链表结点中具有两个指针域的数据结构可以是线性结构,也可以是非线性结构

B.线性表的链式存储结构中,每个结点必须有指向前件和指向后件的两个指针

C.线性表的链式存储结构中,每个结点只能有一个指向后件的指针

D.线性表的链式存储结构中,叶子结点的指针只能是空

3.一个栈的初始状态为空。现将元素A,B,C,D,E依次入栈,然后依次退栈三次,并将退栈的三个元素依次入队(原队列为空),最后将队列中的元素全部退出。则元素退队的顺序为

A.ABC

B.CBA

C.EDC

D.CDE

4.某二叉树的中序序列为DCBAEFG,后序序列为DCBGFEA,则该二叉树的深度(根结点在第1层)为

A.5

B.4

C.3

D.2

5.软件生命周期是指

A.软件产品从提出、实现、使用、维护到停止使用退役的过程

B.软件的需求分析、设计与实现

C.软件的开发与管理

D.软件的实现和维护

6.某系统结构图如下图所示

该系统结构图的深度是

A.1

B.2

C.3

D.4

7.下面属于应用软件的是

A.学生成绩管理系统

B.UNIX操作系统

C.汇编程序

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.选择结构是根据不同的条件执行不同分支中的语句

D.循环结构是根据条件决定是否重复、重复执行多少次循环体语句

12.以下能正确表述算式 sin(2πr+30°)的C语言表达式是

A.sin(2*3.14*r+3.14*30/180.0)

B.sin(2*π*r+ 30 )

C.sin(2*3.14*r+ 30 )

D.sin(2*3.14*r+30*3.14/360.0)

13.设有定义int x=11,y=12,z=0;以下表达式值不等于12的是

A.z=(x==y)

B.(z=x,y)

C.z=(x,y)

D.(z,x,y)

14.以下可以将任意一个两位整数n的个位数与十位数对换的表达式为

A.(n-n/10*10)*10+n/10

B.n-n/10*10+n/10

C.n/10+(n-n/10)

D.(n-n/10)*10+(n/10)

15.设有以下程序段

        int y;

        y=rand() % 30+1;

则变量y的取值范围是

A.0<y≤30

B.0≤y≤30

C.1<y<30

D.1<y≤30

16.以下程序段中,循环次数不超过10的是

A.int i=10;  do{ i=i+1;} while(i<0);

B.int i=5;   do{ i+=1;} while(i>0);

C.int i=1;   do{ i+=2;} while(i!=10);

D.int i=6;   do{ i-=2;} while(i!=1);

17.有以下程序

    #include <stdio.h>

    main()

    {

       int x;

       scanf("%d",&x);

       if(x>10) printf("1");

       else if(x>20) printf("2");

       else if(x>30) printf("3");

    }

若运行时输入35<回车>则输出结果是

A.1

B.2

C.3

D.123

18.若要实现total=1+2+3+4+5求和,以下程序段错误的是

A.int  i=1,total=1;

while(i<5)

{   total+=i;

    i+=1;

}

B.int  i=1,total=0;

while(i<=5)

{  total+=i;

   i+=1;

}

C.int  i=0,total=0;

while(i<5)

{  i+=1;

   total+=i;

}

D.int  i=0,total=0;

while(i<=5)

{  total+=i;

   i+=1;

}

19.有以下程序

    #include <stdio.h>

    main()

    {

       int  i=1,k=0;

       for(  ;  i<6 ; )

       {   switch(i%3)

              {  case 0: k++;

                 case 1: k++; break;

                 case 2: k++; continue;

              }

            i+=1;

       }

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

    }

程序的运行情况是

A.形成无限循环

B.输出6

C.输出5

D.输出4

20.以下不能输出小写字母a的选项是

A.printf("%c\n","a");

B.printf("%c\n",'A'+32);

C.putchar(97);

D.putchar('a');

21.有以下程序段

    char c1,c2,c3;

    scanf("%c%c%c",&c1,&c2,&c3); 

若要给c1、c2、c3分别输入字母A、B、C,则以下对输入形式的描述正确的是

A.字母A、B、C之间不能有分隔符

B.字母A、B、C之间可以用空格分隔

C.字母A、B、C之间可以用回车符分隔

D.字母A、B、C之间可以用Tab键分隔

22.有以下程序段

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

        if(a<b) a==b;

        if(a<c) a==c;

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

该程序段的功能是

A.输出a的原始值

B.输出abc中的最大值

C.输出a、b、c中的最小值

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

23.以下程序的功能是通过调用calc函数把所求得的两数之和值放入变量add并在主函数中输出。

    #include <stdio.h>

    void calc(float x,float y, float *sum)

    {   ________ = x+y;   }

    main()

    {   float x,y,add;

        scanf("%f%f",&x,&y);

        calc(x,y,&add);

        printf("x+y=%f\n",add);

    }

calc函数中下划线处应填入的是

A.*sum

B.sum

C.&sum

D.add

24.有以下程序

    #include <stdio.h>

    main()

    { char a[4][4]={' '};

      int i,j;

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

      {  a[i][0]=a[i][3]='#';

         for(j=1; j<3; j++)

         {  a[0][j]=a[3][j]='#';

            if((i!=0)&&(i!=3)) a[i][j]='o';

          }

      }

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

      {  for(j=0; j<4;j++)

                    printf("%2c",a[i][j]);

         printf("\n");

       }

    }

程序的运行结果是

A.# o o #

# o o #

B.# # # #

# o o #

C.# o o #

# # # #

D.# # # #

# # # #

25.设有函数定义void sub(int k,char ch){ } 则以下对函数sub的调用语句中正确的是

A.sub(1,97);

B.sub(2,'97');

C.n=sub(3,'a');

D.sub(4,"a");

26.有以下程序

    #include <stdio.h>

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

    {  int i;

       for(i=s; i>=n; i--)

            *(x+i+3) = *(x+i);

    }

    main()

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

       fun(m,10-4,3); 

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

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

      }

程序的运行结果是

A.0123453456

B.0123456345

C.0123456666

D.0123454569

27.若有定义语句int m[ ][3]={1,2,3,4,5,6,7};则与该语句等价的是

A.int m[ ][3]={{1,2,3},{4,5,6},{7}};

B.int m[ ][3]={{1,2},{3, 4 },{5, 6,7}};

C.int m[ ][3]={{1,2,3},{4,5},{6,7}};

D.int m[ ][3]={{1},{2,3,4},{5,6,7}};

28.设有以下说明和语句int  x[3][4],(*p)[4]; p=a;则与表达式*(*p+2) 等价的选项是

A.a[0][2]

B.*(a+2)[0]

C.(*a+2)[0]

D.a[2][0]

29.以下不能将键盘输入的字符串This is a string<回车>读入到str中的程序段是

A.char str[80];  scanf("%s",str) ;

B.char str[80];  int i=0;  while((str[i++]=getchar())!='\n');  str[i]=0;

C.char str[80];  gets(str);

D.char str[80], *ps=str;  do{ scanf("%c",ps); } while(*ps++ !='\n'); *(ps)=0;

30.有以下程序

    #include <stdio.h>

    main()

    {  char s[10]="verygood", *ps=s;

       ps+=4;

       ps="nice";

       puts(s);

    }

程序的运行结果是

A.verygood

B.verynice

C.nicegood

D.nice

31.有以下程序

    #include <stdio.h>

    int fun(char *s)

    {  char *p=s;

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

       return(p-s);

    }

    main()

    {  char *p="01234";

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

    }

程序的运行结果是

A.5

B.6

C.4

D.3

32.有以下程序

    #include <stdio.h>

    main()

    {  int findmax(int,int,int),m;

           

       m=findmax(a,b,c);

           

    }

    int findmax(int x,int y,int z)

    {                 }

则以下叙述正确的是

A.在main函数中声明了findmax函数

B.在main函数中定义了findmax函数

C.在main函数中两次调用了findmax函数

D.在main函数内、外重复定义了findmax函数

33.有以下程序

    #include <stdio.h>

    void fun(int n)

    {  int i;

       if((i=n/10)!=0)

          fun(i);

       putchar(  n%10+'0');

    }

    main()

    {  fun(256); }

程序运行后的输出结果是

A.256

B.652

C.2560

D.52

34.有以下程序

    #include <stdio.h>

    #include <stdlib.h>

    void fun(int *p1, int *s)

    {  int *t;

       t=(int *)malloc(2 * sizeof(int));

       *t=*p1 + *p1++;

       *(t+1)=*p1+ *p1;

       s=t;

    }

    main()

    {

       int a[2]={1,2},b[2]={0};

       fun(a,b);

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

    }

程序运行后的输出结果是

A.0,0

B.2,6

C.2,4

D.1,2

35.有以下程序

    #include <stdio.h>

    #define FNA(x)  x*x

    #define FNB(x)  x+x

    main()

    {   int a=2,b=4;

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

    }

程序运行后的输出结果是

A.8,32

B.16,32

C.8,16

D.16,16

36.设有如下语句

    typedef struct Date{

                        int year;

                        int month;

                        int day;

                       } DATE;

    则以下叙述中错误的是

A.DATE是用户定义的结构体变量

B.struct Date是用户定义的结构体类型

C.DATE是用户说明的新结构体类型名

D.struct是结构体类型的关键字

37.设有如下定义

      struct{ int n; char c; } a[2],*p=a;

    则以下错误引用结构体成员n的是

A.(*a)->n

B.a[0].n

C.p->n

D.(*p).n

38.有以下程序

    #include <stdio.h>

    #include <string.h>

    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,Qin,19

B.Hua,18,Tong,20

C.Tong,19,Qin,19

D.Hua,19,Tong,19

39.设有定义int a=64,b=8;则表达式(a&b)||(a&&b)(a|b)&&(a||b)的值分别为

A.1和1

B.1和0

C.0和1

D.0和0

40.有以下程序段

    FILE *fp;

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

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

            exit(0);}

    else

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

 若文件test.txt已存在则以下叙述正确的是

A.程序运行后文件test.txt中的原有内容将全部消失

B.程序运行时,会因文件存在而出错

C.对文件test.txt进行写操作后,可以随机进行读取

D.对文件test.txt写入的内容总是被添加到文件尾部

1.B  2.A  3.C  4.B  5.A  6.C  7.A  8.A  9.C  10.D  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