江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
最新真实全国二级C选择题真题第1套

1.下列叙述中正确的是

 

A.循环队列是顺序存储结构   

 

B.循环队列是链式存储结构

 

C.循环队列是非线性结构 

 

D.循环队列的插入运算不会发生溢出现象

 

2.下列叙述中正确的是

 

A.所有数据结构必须有根结点  

 

B.所有数据结构必须有终端结点(即叶子结点)

 

C.只有一个根结点,且只有一个叶子结点的数据结构一定是线性结构

 

D.没有根结点或没有叶子结点的数据结构一定是非线性结构

 

3.下列关于算法的描述中错误的是

 

A.算法强调动态的执行过程,不同于静态的计算公式

 

B.算法必须能在有限个步骤之后终止

 

C.算法设计必须考虑算法的复杂度 

 

D.算法的优劣取决于运行算法程序的环境

 

4.在线性表的顺序存储结构中,其存储空间连续,各个元素所占的字节数

 

A.相同,元素的存储顺序与逻辑顺序一致

 

B.相同,但其元素的存储顺序可以与逻辑顺序不一致

 

C.不同,但元素的存储顺序与逻辑顺序一致

 

D.不同,且其元素的存储顺序可以与逻辑顺序不一致

 

5.

 

 

 

A.ABDEGCFH  

 

 

B.DBGEAFHC 

 

 

C.DGEBHFCA

 

D.ABCDEFGH

 

6.下面不属于软件需求分析阶段工作的是

 

A.需求获取 

 

B.需求计划

 

C.需求分析

 

D.需求评审

 

 

 

7.下面不属于黑盒测试方法的是

 

A.边界值分析法

 

B.基本路径测试

 

 

C.等价类划分法  

 

 

D.错误推测法

 

8.在数据库系统中,数据模型包括概念模型、逻辑模型和

 

A.物理模型  

 

B.空间模型    

 

C.时间模型

 

D.数据模型

 

9.若实体A和B是一对一的联系,实体B和C是多对一的联系,则实体A和C的联系是

 

A.多对一

 

B.一对多

 

C.一对一 

 

D.多对多

 

10.某二叉树中共有935个结点,其中叶子结点有435个,则该二叉树中度为2的结点个数为

 

A.64

 

B.66

 

C.436   

 

D.434

 

11.C语言整数不包括

 

A.无符号整数

 

B. 正整数

 

C.负整数 

 

D.带小数点的整数

 

12.设a,b,c是整型变量,且已正确赋初值,以下选项中错误的赋值语句是

 

A.a = 2 = (b = 9) = 1; 

 

B.a = (b = 3) * c;

 

C. a = b = c / 10;

 

D.a = 1 % (b = c = 2);

 

13.以下选项中,合法的实数是

 

A.1.5E2

 

B. E1.1  

 

C.2.10E 

 

D.1.9E1.4

 

14.关于程序设计基本概念,以下叙述错误的是

 

A.用任何一种计算机高级语言都可以把算法转换为程序

 

B.高级语言都有与之对应的编译程序或解释程序

 

C.计算机可以直接执行由任意高级语言编写的程序

 

D.结构化算法可以解决任何复杂的问题

 

15.以下不能用于实型数据的运算符是

 

A. /  

 

B. % 

 

C.*  

 

D. +

 

16.C语言中,最基本的数据类型包括

 

A.整型、字符型、数组

 

B.整型、实型、字符型

 

C.整型、实型、逻辑型

 

D.整型、实型、结构体

 

17.若有定义int a=0,b=0,c=0,d=0; C语言表达式 (a++ && b++) ? c++ : d++,以下关于其执行顺序的叙述正确是

 

A.先执行a++,表达式a++的值为0,由此即可确定(a++&&b++)的值为0,因此执行d++

 

B.先执行a++,表达式a++的值为0;再执行b++,表达式b++的值为0,由此可确定(a++ && b++)值为0,因此执行d++

 

C.先执行a++,表确定(a++ && b++)值为1,因此执行c++达式a++的值为1;再执行b++,表达式b++的值为1,由此可

 

D.先执行b++,表达式b++的值为1;再执行a++,表达式a++的值为1,由此可确定(a++ && b++)值为1,因此执行c++

 

18. 有以下程序

#include   <stdio.h>

main( )

{

    char  ch = 'B';

    while (ch < 'E')

    {

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

        ch++;

    }

    printf("\n");

}

 

程序运行后的输出结果是

 

A.123 

 

B. ABC  

 

C.abc  

 

D.012

 

19.以下关于指针的叙述错误的是

 

A.一个指针变量可以通过不同的方式获得一个确定的地址值

 

B.可以通过对指针变量加上或减去一个整数来移动指针

 

C. 在关系表达式中可以对两个指针变量进行比较

 

D. 两个基类型相同的指针变量不能指向同一个对象

 

20. 对于函数声明

 

void fun(float array[], int *ptr);

 

 

下叙述正确的是

 

A.调用函数时,array数组的元素和ptr都是按值传送

 

B.函数声明有语法错误,参数 array 缺少数组大小定义

 

C. 调用函数时,array数组中将存储从实参中复制来的元素值

 

D.函数参数 array, ptr 都是指针变量

 

21. 有以下程序

#include   <stdio.h>

main( )

{

    int  i, k;

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

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

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

        {

            printf("%d,", array[k][i]);

        }

    printf("\n");

}

 

程序运行后的输出结果是

 

A.1,0,2,0,0,9, 

 

B. 1,2,4,9,6,0,

 

C.2,9,0,0,1,4,

 

D.1,2,0,1,4,1,

 

22. 要求定义一个具有6个元素的int型一维数组以下选项中错误的是

 

A.int a[2*3] = {0};

 

B.int N = 6, a[N];

 

C. #define N 3

 

     int a[N+N];

 

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

 

23.有以下程序

 

#include <stdio.h>

main( )

{  char b[3][10],c; 

   int i;

  

   for (i=0; i<2; i++) scanf("%s", b[i]);

   i=0;

   while ((c=getchar())!='\n') b[2][i++] = c;

   b[2][i] = '\0';

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

 

}

执行时若输入以下字符串:

         Peach flower is pink.<回车>

则输出结果是

 

A.Peach flower is pink.

 

B.Peachfloweris pink.

 

C.Peachflowerispink.

 

D.Peachflower is pink.

 

24. 有以下程序

 

#include <stdio.h>

main( )

{  char w[20], a[5][10] = {"abcdef", "ghijkl", "mnopq", "rstuv", "wxyz"};

   int i, j;

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

   {   j = 0;

       while (a[i][j] != '\0') j++;

       w[i] = a[i][j-2];

   }

   w[5] = '\0';

   puts(w);

}

 

程序运行后的输出结果是

 

A.ekpuy   

 

B.agmrw

 

C.djotx

 

D.flqvz

 

25. 有以下程序

#include   <stdio.h>

#include   <string.h>

main( )

{

    char  name[9] = "c##line";

    char*  str = name;

    printf("%d,%d,%d,%d\n", sizeof(name), strlen(name), sizeof(str), strlen(str));

 

}

 

程序运行后的输出结果是

 

A. 10,8,5,8

 

B.8,6,9,6

 

C.8,6,3,6 

 

D. 9,7,4,7

 

26.有以下程序

#include   <stdio.h>

main( )

{

    int  password;

    char  *p, old_str[10] = "wind";

    scanf("%d", &password);

    p = old_str;

    while (*p)

    {

        printf("#%c", *p + password);

        p++;

    }

    printf("\n");

}

 

程序运行时,从键盘输入2<回车>,输出结果是

 

A.#y#k#p#f

 

B.#wi#nd#  

 

C.#wi#nd#

 

D.#2222#

 

27.若有定义char  *ps[ ]={"aa","bb","cc","dd"};则以下叙述正确的是

 

A.ps[0]是字符串"aa"

 

B.*ps[0]是字符串"aa"的首地址

 

C.ps[0]是字符串"aa"的首地址

 

D.*ps[0]是字符串"aa"

 

28.若有定义

 

char *ps[ ] = {"aa", "bb", "cc", "dd"};

 

则以下叙述正确的是

 

A.*ps[0]是字符'a'

 

B.*ps[0]是字符串"aa"

 

C. ps[0]是字符'a' 

 

D. ps是字符串"aa"

 

29.以下合法的转义字符是

 

A.  '\0X41'

 

B.'\0x41' 

 

C. '\X41' 

 

D.'\x41'

 

30. 在源程序的开始处加上

        #include   <stdio.h>

 

进行文件引用的原因,以下叙述正确的是

 

 

A. stdio.h文件中包含标准输入输出函数的函数说明,通过引用此文件以便能正确使用printf、scanf等函数

 

B.将stdio.h中标准输入输出函数链接到编译生成的可执行文件中,以便能正确运行

 

C.将stdio.h中标准输入输出函数的源程序插入到引用处,以便进行编译链接

 

D.将stdio.h中标准输入输出函数的源程序插入到引用处,以便进行编译链接

 

31. 设有定义:int  a[10]={0,1,2,3,4,5,6,7,8,9},*p=a,i;,若0≤i≤9,则对a数组元素的引用错误的是

 

A.*(&a[i]) 

 

B.a[10] 

 

C. p[i]

 

D.a[p-a]

 

32. 有以下程序

 

#include <stdio.h>

main( )

{  int c,d;

   c = (13>>1)|1;     

   d = (13>1)||1;

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

 

}

 

程序运行后的输出结果是

 

A. 7,1 

 

B.1,1  

 

C.6,1 

 

D.7,2

 

33. 有以下程序

 

#include   <stdio.h>

#include   <string.h>

struct S

{

    char name[10];

};

main()

{

    struct S  s1, s2;

    strcpy(s1.name, "XXX");

    strcpy(s2.name, "=");

    s1 = s2;

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

 

}

 

 

程序运行后的输出结果是

 

A. X=

 

B.XXX  

 

C. =XX  

 

D.=  

 

34.有以下程序

#include   <stdio.h>

main( )

{

    int  i, array[6] = {1, 5, 0, 4};

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

        printf("%d,", array[i] & 4);

    printf("\n");

 

}

 

程序运行后的输出结果是

 

 

A.0,4,0,4,0,

 

B.1,5,0,4,0, 

 

C. 1,5,5,4,0, 

 

D.1,2,1,2,0

 

35. 有以下程序

 

#include <stdio.h>

#include <stdlib.h>

 

void fun(int **s, int x[2][3])

{  **s=*(x[1]+1);  }

 

main()

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

   p = (int*)malloc(sizeof(int));

   fun(&p,a);

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

}

 

程序的运行结果是

 

A.5

 

B.2

 

C.6

 

D.3

 

36. 有如下定义:

struct

{  int  num;

   char  name[10];

   struct 

      { int  y; int  m; int  d;} birth;

} s,*ps=&s;

 

以下对内嵌结构体成员的引用形式错误的是

 

A. (*ps).birth.y

 

B.s.birth.y

 

C. ps->birth.y 

 

D.ps.birth.y

 

37.有以下程序

 

#include <stdio.h>

main( )

{  FILE *fp;

   int i, a[6] = {1,2,3,4,5,6}, k;

 

   fp = fopen("data.dat", "w+");

   fprintf(fp, "%d\n", a[0]);

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

   {   rewind(fp);

       fprintf(fp, "%d\n", a[i]);

   }

   rewind(fp);

   fscanf(fp, "%d", &k);

   fclose(fp);

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

}

 

程序运行后的输出结果是

 

A. 6  

 

B.21

 

C. 123456  

 

D. 654321

 

38. 以下程序段中,与其他三个功能不同的程序段是

 

A.s=0;

 

     for(i=1; i<=10; i++) {s+=i;}

 

B. s=0,i=1;

 

     for( ; i<=10; ) {s+=i,i++;}

 

C. s=0;i=1;

 

     for( ; ; ) {s+=i; i++; if(i<=10) break;}

 

D. for(s=0,i=1; i<=10; s+=i,i++) ;

 

39.设有定义:int  a=0,b=1;,以下表达式中,会产生"短路"现象,致使变量b的值不变的是

 

A.a++ || ++b

 

B.a++ && b++ 

 

C. a++ && b++

 

D.+a || ++b

 

40.关于地址和指针,以下说法正确的是

 

A.通过强制类型转换可以将一种类型的指针变量赋值给另一种类型的指针变量

 

B.可以取一个常数的地址赋值给同类型的指针变量

 

C.可以取一个表达式的地址赋值给同类型的指针变量

 

D.可以取一个指针变量的地址赋值给基类型相同的指针变量

 

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