Dotcpp  >  试卷列表  >  2017年3月全国计算机等级考试真题(二级C语言)

2017年3月全国计算机等级考试真题(二级C语言)


第1题

每个学校有一名校长,且不同学校的校长可以是同一人,则实体学校和实体校长间的联系是

共 1 分 

第2题

若有以下定义int x[10],*pt=x;则对x数组元素的正确引用是

共 1 分 

第3题

有以下程序

1
2
3
4
5
6
7
8
9
10
11
12
fun (int x)
{
    int p;
    if(x==0||x==1) 
    return(3);
    p=x-fun(x-2);
    return p;
}
main()
{
    printf("%d\n",fun(7));
};

执行后的输出结果是

共 1 分 

第4题

数据库三级模式体系结构的划分有利于保持数据库的

共 1 分 

第5题

有以下程序

1
2
3
4
5
6
7
8
#include<stdio.h>
main()
{
    int a1, a2;
    char c1, c2; 
    scanf("%d%c%d%c",&a1,&c1,&a2,&c2); 
    printf("%d,%c,%d,%c",a1,c1,a2,c2 );
}

若想通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,程序输出结果是:

12,a,34,b则正确的输入格式是(以下口代表空格,代表回车)

共 1 分 

第6题

设一棵树的度为3,共有27个结点,其中度为3,2,0的结点数分别为4,1,10,该树中度为1的结点数

共 1 分 

第7题

某系统结构图如下图所示,该系统结构图的宽度是

Snipaste_2021-04-29_00-16-55.png

共 1 分 

第8题

下列叙述中错误的是

共 1 分 

第9题

若有以下程序

1
2
3
4
5
6
7
8
9
10
main()
{
    int a=1, b=2, c=3, d=4, r=0; 
    if (a!= 1); 
    else r=1;
    if (b==2) r+=2; 
    if (c !=3); r+=3; 
    if(d==4) r+=4; 
    printf("%d\n", r);
}

则程序的输出结果是

共 1 分 

第10题

下列叙述中正确的是

共 1 分 

第11题

下列叙述中正确的是

共 1 分 

第12题

下面选项中的程序段,没有编译错误的是


共 1 分 

第13题

关于C语言的变量,以下叙述中错误的是

共 1 分 

第14题

软件设计中模块划分应遵循的准则是

共 1 分 

第15题

以下叙述中错误的是

共 1 分 

第16题

下面描述中正确的是

共 1 分 

第17题

以下叙述中正确的是

共 1 分 

第18题

下面属于应用软件的是

共 1 分 

第19题

逻辑模型是面向数据库系统的模型,下面属于逻辑模型的是

共 1 分 

第20题

下面选项中关于编译预处理的叙述正确的是

共 1 分 

第21题

程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、p、q均已正确定义,并用于指向链表结点,指针变量s总是作为头指针指向链表的第一个结点。

Snipaste_2021-04-29_00-26-46.png

若有以下程序段

1
2
3
q=s;s=s->next;p=s ;
while(p->next)p=p->next;
p->next=q;q->next=NULL;

该程序段实现的功能是

共 1 分 

第22题

若有以下程序段

1
2
int r=8; 
printf("%d\n", r>>1);

输出结果是

共 1 分 

第23题

有以下程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <string.h>
Struct A 
{
    int a; 
    char b[10]; 
    double c;
};
struct A f(struct A t);
main()
{
    struct A a = {1001,"ZhangDa",1098.0}; 
    a=f(a); 
    printf("%d,%s,%6.1f\n",a.a,a.b,a.c);
}
struct A f(struct A t)
{
    t.a = 1002;
    strcpy(t.b,"ChangRong");
    t.c=1202.0;
    return t;
}

程序运行后的输出结果是

共 1 分 

第24题

有以下程序

1
2
3
4
5
6
#include <stdio.h>
main()
{
    int a=3; 
    printf("%d\n", (a+=a-=a*a));
}

程序运行后的输出结果是

共 1 分 

第25题

有以下程序

1
2
3
4
5
6
7
#include<stdio.h>
main()
{
    int a =7; 
    while(a--); 
    printf("%d\n", a);}
}

程序运行后的输出结果是

共 1 分 

第26题

下面不属于软件设计阶段任务的是

共 1 分 

第27题

深度为5的完全二叉树的结点数不可能是

共 1 分 

第28题

下面不能作为软件设计工具的是

共 1 分 

第29题

有以下程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
main()
{
    int x=1, y=0, a=0, b=0; 
    switch(x)
    {
        case 1: switch(y) 
        {
            case O: a++; break
            case 1: b++; break;
        }
        case 2: a+; b++; break
        case 3: a++; b+t;
    }  
    printf("a=%d, b=%d\n", a, b);
}

程序的运行结果是

共 1 分 

第30题

以下选项中合法的实型常量是

共 1 分 

第31题

若有定义typedef char T[10];T*a;上述定义中a的类型与下面选项中完全相同的是

共 1 分 

第32题

有以下程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
int f(int x); 
main()
{
    int a, b=0; 
    for(a=0;a<3;a++)
    
       b=b+f(a);
       putchar('A'+b);
    }
}
int f (int x) 
{
    return x*x+1;
}

程序运行后的输出结果是

共 1 分 

第33题

有以下程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
void main()
    int a[]={2, 3, 5, 4}, i; 
    for (i=0; i<4;i++)
    switch (i%2)
    {
        case 0:switch(a[i]%2)
        {
            case O:a[i]++;break;
            case 1:a[i]--;
            break;
        }
        case 1:a[i]=0;
    }
    for (i=0;i<4;i++)
    printf("%d", a[i]);
    printf("\n");
}

程序运行后的输出结果是

共 1 分 

第34题

以下不能输出字符A的语句是

共 1 分 

第35题

某二叉树共有13个结点,其中有4个度为1的结点,则叶子结点数为

共 1 分 

第36题

软件工程的三要素是

共 1 分 

第37题

若有定义语句:char*s1="OK",*s2="ok";以下选项中,能够输出"OK"的语句是

共 1 分 

第38题

设二叉树共有375个结点,其中度为2的结点有187个。则度为1的结点个数是

共 1 分 

第39题

深度为7的完全二叉树中共有125个结点,则该完全二叉树中的叶子结点数为

共 1 分 

第40题

设栈的顺序存储空间为S(1:m),初始状态为top=m+1,现经过一系列入栈与退栈运算后,top=20,则当前栈中的元素个数为

共 1 分 

第41题

给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。

请在程序的下划线处填入正确的内容,使程序得出正确的结果。

不得增行或删行,也不得更改程序的结构!

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <stdio.h>
#include <stdlib.h>
#define N 8
typedef struct list
{
    int data;
    struct list *next;
} SLIST;
void fun(SLIST *p)
{
    SLIST *t, *s;
    t=p->next; s=p;
    while(t->next != NULL)
    {
        s=t;
        /**********found**********/
        t=t->__(1)__;
    }
    /**********found**********/
    printf(" %d ",__(2)__);
    s->next=NULL;
    /**********found**********/
    free(__(3)__);
}
SLIST *creatlist(int *a)
{
    SLIST *h,*p,*q; int i;
    h=p=(SLIST *)malloc(sizeof(SLIST));
    for(i=0; i<N; i++)
    {
        q=(SLIST *)malloc(sizeof(SLIST));
        q->data=a[i]; 
        p->next=q; 
        p=q;
    }
    p->next=0;
    return h;
}
void outlist(SLIST *h)
{
    SLIST *p;
    p=h->next;
    if (p==NULL) 
    {
        printf("\nThe list is NULL!\n");
    }
    else
    {
        printf("\nHead");
        do
        {
            printf("->%d" ,p->data);
            p=p->next;
        
        while(p!=NULL);
        printf("->End\n");
    }
}
main()
{
    SLIST *head;
    int a[N]={11,12,15,18,19,22,25,29};
    head=creatlist(a);
    printf("\nOutput from head:\n"); 
    outlist(head);
    printf("\nOutput from tail:\n");
    while (head->next != NULL)
    {
        fun(head);
        printf("\n\n");
        printf("\nOutput from head again :\n"); 
        outlist(head);
    }
    system("pause");
}
共 18 分 

第42题

函数fun的功能是:将字符串中的字符按逆序输出,但不改变字符串中的内容。

例如,若字符串为abcd,则应输出:dcba,请改正程序中的错误,使它能得出正确的结果。

不要改动main函数,不得增行或删行,也不得更改程序的结构!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <stdlib.h>
/**********found**********/
fun (char a)
{
    if (*a)
    {
        fun(a+1);
        /**********found**********/
        printf("%c" *a);
    }
}
main()
{
    char s[10]="abcd";
    printf("处理前字符串:%s\n处理后字符串:", s);
    fun(s); 
    printf("\n");
    system("pause");
}
共 18 分 

第43题

请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。

例如,若输入:17,则应输出:46891012141516

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

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
#include <stdio.h>
#include <stdlib.h>
void fun(int m, int *k, int xx[])
{
     int i,j, n=0;
     for(i=2;i<m;i++)/*找出大于1小于整数m的非素数*/
     {
     for(j=2;j<i;j++)     } 
}
main()
{
    int m, n, zz[100];
    void NONO ();
    printf("\nPlease enter an integer number between 10 and 100:");
    scanf("%d", &n);
    fun(n, &m, zz);
    printf("\n\nThere are %d non-prime numbers less than %d:", m, n);
    for(n=0; n<m; n++)
    {
        printf("\n  %4d", zz[n]);
    }
    NONO();
    system("pause");
}
void NONO()
{/* 请在此函数内打开文件,输入测试数据,
 调用函数,输出数据,关闭文件。 */
    int m, n, zz[100];
    FILE *rf, *wf;
    rf=fopen("in.dat","r");
    wf=fopen("out.dat","w");
    fscanf(rf, "%d", &n);
    fun(n, &m, zz);
    fprintf(wf, "%d\n%d\n", m, n);
    for(n=0; n<m; n++)
    {
        fprintf(wf, "%d\n", zz[n]);
    }
    fclose(rf);
    fclose(wf);
}
共 24 分