201909 全国计算机等级考试真题(C语言二级) 建议答题时长:60min
1. 单选题

“商品”与“顾客”两个实体集之间的联系一般是(    )

A

一对一

B

一对多

C

多对一

D

多对多

2. 单选题

定义学生选修课程的关系模式:SC(S#,Sn,C#,Cn,G)则该关系的主键为(    )

A

C#

B

S#

C

S#,C#

D

S#,C#,G

3. 单选题

有以下程序

#include <stdio.h>

#define S(x)4*(x)*x+1

void main()

  int k=5, j=2; 

  printf("%d\n",S(k+j));

  }

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

A

197

B

143

C

33

D

28

4. 单选题

某二叉树的前序序列为ABDFHCEG,中序序列为HFDBACEG。该二叉树的后序序列为(    )

A

HFDBGECA

B

ABCDEFGH

C

HGFEDCBA

D

ACEGBDFH

5. 单选题

下列叙述中正确的是(    )

A

存储空间连续的数据结构一定是线性结构

B

存储空间不连续的数据结构一定是非线性结构

C

没有根结点的非空数据结构一定是线性结构

D

具有两个根结点的数据结构一定是非线性结构

6. 单选题

带链栈空的条件是(    )

A

top=bottom=NULL

B

top=-1且bottom=NULL

C

top=NULL且bottom-1

D

top=bottom=-1

7. 单选题

若有以下程序

#include <stdio.h>

int *f(int*s, int*t)

{

  int k; 

  if (*s<*t) 

  {

    k=*s; *s=*t; *t=k;

  }

  return s;

}

main()

{

  int i=3,j=5,*p=&i,*q=8&j,*r;

  r=f(p,q);

  printf("%d,%d,%d,%d,%d\n",I,j,*p,*q,*r);

}

则程序的输出结果是(    )

A

3,5,5,3,5

B

3,5,3,5,5

C

5,3,5,3,5

D

5,3,3,5,5

8. 单选题

不能正确表示数学式的表达式是(    )

A

a*b/c

B

a/c*b

C

a/b*c

D

a*(b/c)

9. 单选题

下列叙述中正确的是(    )

A

存储空间不连续的所有链表一定是非线性结构

B

结点中有多个指针域的所有链表一定是非线性结构

C

能顺序存储的数据结构一定是线性结构

D

带链的栈与队列是线性结构

10. 单选题

由关系R1和R2得到关系R3的操作是(    )

A

B

C

笛卡尔积

D

等值连接

11. 单选题

设二叉树的前序序列为ABDEGHCFJ,中序序列为DBGEHACIFJ。则后序序列为(    )

A

DGHEBIJFCA

B

JIHGFEDCBA

C

GHIUDEFBCA

D

ABCDEFGHU

12. 单选题

有以下程序

void fun2 (char a, char b)

    printf("%c%c", a, b);

}

char a='A', b='B'; 

void fun1()

{

    a='C';b='D';

}

main()

    fun1(); 

    printf("%c%c", a, b); 

    fun2('E', 'F'); 

}

A

ABEF

B

CDEF

C

ABCD

D

CDAB

13. 单选题

在结构化程序设计中,模块划分的原则是(    )

A

各模块应包括尽量多的功能

B

各模块的规模应尽量大

C

各模块之间的联系应尽量紧密

D

模块内具有高内聚度、模块间具有低耦合度

14. 单选题

与数学表达式x≥y≥z对应的C语言表达式是(    )

A

(x>=y>=z)

B

(x>=y)&&(y>=z)

C

(x>=y):y>=z)

D

(x>=y)l(y>=x)

15. 单选题

sizeof(double)是(    )

A

一个双精度型表达式

B

一个整型表达式

C

一个不合法的表达式

D

一种函数调用

16. 单选题

若有以下程序

#include <stdio.h>

int k=7, m=5; 

void f(int **s)

{

  int *t=&k;

  s=&t;

  *s=&m;

  printf("9%d,%d,%d,",k,*t,**s);

}

main()

{

  int i=3,*p=&i,**r=&p;

  f(r);

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

}

则程序的输出结果是(    )

A

7,5,7,3,3,3,

B

7,5,7,3,5,7,

C

7,5,5,3,3,3,

D

7,7,5,3,3,3,

17. 单选题

有以下程序

int d=1; 

void fun (int p)

{

  int d=5; 

  d+=p++; 

  printf("%d",d);

}

main()

{

  int a=3; 

  fun(a); 

  d+=a++; 

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

}

程序的输出结果是(    )

A

9 6

B

9 4

C

8 4

D

8 5

18. 单选题

有三个关系R,S和T如下图所示,则由关系R和S得到关系T的操作是(    )

A

B

C

投影

D

自然连接

19. 单选题

在数据库中存储的是(    )

A

数据的操作

B

数据模型

C

操作信息

D

数据以及数据之间的联系

20. 单选题

在关系A(S,SN,D)和B(D,CN,NM)中,A的主关键字是S,B的主关键字是D,则D是A的(    )

A

外键(码)

B

候选键(码)

C

主键(码)

D

候选键或主键

21. 单选题

有以下程序

#include <stdio.h>

main(){

int a=0, b=0;

/* 给a赋值a=10;b=20;给b赋值*/

printf("a+b=%d\n",a+b);/*输出计算结果*/}

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

A

a+b=30

B

a+b=10

C

出错

D

a+b=0

22. 单选题

若已建立以下链表结构,指针p、s分别指向如图所示结点

则不能将s所指节点插入到链表未尾的语句组是(    )

A

s->next=\0;p=p->next;p->next=s;

B

p=p->next;s->next=p;p->next=s;

C

p=p->next;s->next=p->next;p->next=s;

D

p=(*p).next;(*s).next=(*p).next;(*p).next=s;

23. 单选题

设栈的存储空间为S(1:50),初始状态为top=51。现经过一系列正常的入栈与退栈操作后,top=50,则栈中的元素个数为(    )

A

1

B

0

C

50

D

49

24. 单选题

某二叉树共有399个结点,其中有199个度为2的结点,则该二又树中的叶子结点数为(    )

A

不存在这样的二叉树

B

200

C

198

D

199

25. 单选题

有以下程序

#include <stdio.h>

void fun (char**p)

{

    ++p;

    printf("%s\n",*p)}

main()

{

    char*a[]=("Morning", "Afternoon", "Evening", "Night"); 

    fun(a);

}

程序的运行结果是(    )

A

fternoon

B

Morning

C

orning

D

Afternoon

26. 单选题

若有定义:

double a=22;

int i=0,k=;

则不符合C语言规定的赋值语句是(    )

A

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

B

a=a++,i++;

C

i=a%11;

D

i=!a;

27. 单选题

以下选项中叙述错误的是(    )

A

在C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内

B

C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值

C

C程序函数中定义的自动变量,系统不自动赋确定的初值

D

C程序函数的形参不可以说明为static型变量

28. 单选题

以下叙述中错误的是(    )

A

函数的返回值类型不能是结构体类型,只能是简单类型

B

只要类型相同,结构体变量之间可以整体赋值

C

可以通过指针变量来访问结构体变量的任何成员

D

函数可以返回指向结构体变量的指针

29. 单选题

设有宏定义:#define IsDIV(k,n)((k%n==1)?1:0)且变量m已正确定义并赋值,则宏调用:IsDIV^(m,5)&&IsDIV(m,7)为真时所要表达的是(    )

A

判断m是否能被5和7整除

B

判断m被5或者7整除是否余1

C

判断m被5和7整除是否都余1

D

判断m是否能被5或者7整除

30. 单选题

软件生命周期是指(    )

A

软件的实现和维护

B

软件的工程实施阶段

C

软件的开发与管理

D

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

31. 单选题

软件生存周期中,解决软件“怎么做”的阶段是(    )

A

软件设计

B

需求分析

C

软件测试

D

可行性研究

32. 单选题

以下叙述中正确的是(    )

A

下面的语句用赋初值方式来定义字符串,其中,\0是必须的char str10={'s',t,'r,1,\0;}

B

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

C

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

D

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

33. 单选题

有以下程序

#include <stdio.h>

main()

{

    int c[6]={10,20,30,40,50,60},*p,*s;

    p=C;

    s=&c[5];

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

}

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

A

50

B

6

C

5

D

60

34. 单选题

若有以下程序

#include <stdio.h>

main()

{

    char c1, c2; 

    c1='C'+'18'-13; 

    C2='19'-0;

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

}

则程序的输出结果是(    )

A

H 9

B

H'9'

C

F'9'

D

表达式不合法输出无定值

35. 单选题

若在定义语句:int a,b,c,*p=&c;接着执行以下选项中的语句,则能正确执行的语句是(    )

A

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

B

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

C

scanf("%d",p);

D

scanf("%d",&p);

36. 单选题

软件需求规格说明的内容应包括(    )

A

E-R模型

B

算法详细设计

C

软件的主要功能

D

软件总体结构

37. 单选题

一名员工可以使用多台计算机,每台计算机只能由一名员工使用,则实体员工和计算机间的联系是(    )

A

一对多

B

多对多

C

多对一

D

一对一

38. 单选题

下面属于系统软件的是(    )

A

浏览器

B

数据库管理系统

C

人事管理系统

D

天气预报的app

39. 单选题

有以下程序

#include <stdio.h>

#define SUB(X,Y)(X+1)*Y 

main()

{

    int a=3,b=4;

    printf("%d\n",

    SUB(a++,b++));

}

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

A

20

B

12

C

16

D

25

40. 单选题

软件生命周期中的活动不包括(    )

A

市场调研

B

需求分析

C

软件测试

D

软件测试

41. 填空题

给定程序中,函数fun的功能是建立一个NxN的矩阵。矩阵元素的构成规律是:最外层元素的值全部为1;从外向内第2层元素的值全部为2;第3层元素的值全部为3,.…依次类推。


例如,若N=5,生成的矩阵为:

11111

12221

12321

12221

11111

#include <stdio.h>

#include <stdlib.h>

#define N 5

/**********found**********/

void fun(int (*a)__(1)__)

{

    int i, j, k, m;

    if(N%2==0)

    {

        m=N/2 ;

    }

    else

    {

        m=N/2+1;

    }

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

    {

        /**********found**********/

        for(j=__(2)_ ; j<N-i; j++)

        {

            a[i][j]=a[N-i-1][j]=i+1;

        }

        for(k=i+1; k<N-i; k++)

        {

            /**********found**********/

            a[k][i]=a[k][N-i-1]=__(3)__;

        }

    }

}

main()

{

    int x[N][N]={0},i,j;

    fun(x);

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

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

    {

        for(j=0; j<N; j++) 

        {

            printf("%3d",x[i][j]);

        }

        printf("\n");

    }

    system("pause");

}

42. 填空题

函数fun的功能是:将十进制正整数m转换成k(2sks9)进制数,并按高位到低位顺序输出。


例如,若输入8和2,则应输出1000(即+进制数8转换成二进制表示是1000)。

请改正程序中的错误,使它能得出正确的结果。

#include <stdio.h>

#include <stdlib.h>

void fun(int m, int k);

{

    int aa[20], i;

    for(i = 0; m; i++)

    {

        /**********found**********/

        aa[i] = m/k;

        m /= k;

    }

    for(; i; i--)

    {

        /**********found**********/

        printf("%d",aa[i]);

    }

}

main()

{

    int b, n;

    printf("\nPlease enter a number and a base:\n");

    scanf("%d %d", &n, &b);

    fun(n, b);

    printf("\n");

    system("pause");

}

43. 填空题

编写一个函数fun,从num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。(注意:主函数中用****作为结束输入的标志。)

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

void fun(char(*a)[81], int num, char **max)

{

int i, maxlen; 

maxlen=strlen(a[0]); 

for(①)

{

if(②)

{

*max=a[i];④

}

}

main()

{

    char ss[10][81], *ps;

    void NONO();

    int n, i=0;

    printf("输入若干个字符串:");

    gets(ss[i]);

    puts(ss[i]);

    while(!strcmp(ss[i],"****")==0)

    {

        i++;

        gets(ss[i]);

        puts(ss[i]);

    }

    n=i;

    fun(ss, n, &ps);

    printf("\nmax=%s\n", ps);

    NONO();

}

void NONO ()

{/* 请在此函数内打开文件,输入测试数据,

 调用函数,输出数据,关闭文件。 */

    char ss[20][81], *ps;

    int n, i=0;

    FILE *rf, *wf;

    rf=fopen("in.dat","r");

    wf=fopen("out.dat","w");

    fgets(ss[i], 81, rf);

    while(!strncmp(ss[i],"****",4)==0)

    {

        i++;

        fgets(ss[i], 81, rf);

    }

    n=i;

    fun(ss, n, &ps);

    fprintf(wf, "%s", ps);

    fclose(rf);

    fclose(wf);

    system("pause");

}

试题目录
单选题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
填空题
41 42 43
赣ICP备20007335号-2