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

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


第1题

有以下程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
void fun (int a, int b)
{
    int t;
    t=a; a=b; b=t; 
 }
main()
{
    int c[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, i; 
    for (i=0; i<10; i+=2)
    fun (c[i], c[i+1]);
    for(i=0; i<10; i++)
    printf("%d,", c[i]);
    printf("\n");
}

程序的运行结果是

共 1 分 

第2题

在长度为n的顺序表中查找一个元素,假设需要查找的元素一定在表中,并且元素出现在表中每个位置上的可能性是相同的,则在平均情况下需要比较的次数为

共 1 分 

第3题

有以下程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void fun (int a[], int n) 
{
    int i, t; 
    for (i=0; i<n/2; i++)
    {
        t=a[i];
        a[i]=a[n-1-i];
        a[n-1-i]=t;
    }
}
main()
{
    int k[10]={1,2,3,4,5,6,7,8,9,10},i; 
    fun(k,5); 
    for(i=2;i<8;i++) 
    printf("%d",k[i]); 
    printf("\n");
}

程序的运行结果是

共 1 分 

第4题

数据库系统的三级模式不包括

共 1 分 

第5题

有以下程序

1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int fun(int a, int b) 
{
    if (b==0) return a; 
    else return(fun (--a, --b));
}
main()
{
    printf("%d\n", fun(4, 2));
}

程序的运行结果是

共 1 分 

第6题

表达式3.6-5/2+1.2+5%2的值是

共 1 分 

第7题

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

共 1 分 

第8题

若有定义int a;float b;double c;程序运行时输入:345能把值3输入给变量a、4输入给变量b、5输入给变量c的语句是

共 1 分 

第9题

以下叙述中正确的是

共 1 分 

第10题

有以下程序段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int i, n; 
for (i=0;i<8;i++)
{
    n=rand()%5;
    switch (n)
    {
        case 1: 
        case 3: printf("%d\n", n); break ;
        case 2:
        case 4: printf("%d\n", n); continue
        case O: exit(0);
    }
    printf("%d\n", n);
}

以下关于程序段执行情况的叙述,正确的是

共 1 分 

第11题

以下选项中,不合法的C语言用户标识符是

共 1 分 

第12题

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

共 1 分 

第13题

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

共 1 分 

第14题

在长度为n的顺序表中查找一个元素,假设需要查找的元素有一半的机会在表中,并且如果元素在表中,则出现在表中每个位置上的可能性是相同的。则在平均情况下需要比较的次数大约为

共 1 分 

第15题

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

共 1 分 

第16题

C语言源程序名的后缀是

共 1 分 

第17题

有以下程序

1
2
3
4
5
6
7
main()
{
    int x=35,B; 
    char z='B'
    B=((x)&&(z<'b')); 
    printf("%d\n",B);
}

程序运行后的输出结果是

共 1 分 

第18题

有下列程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <string.h>
typedef struct 
{
    char name[9];
    char sex; 
    float score [2];
}STU;
STU f(STU a)
{
    STU b = {"Zhao",'m',85.0,90.0};
    int i;
    strcpy(a.name,b.name)
    a.sex=b.sex;
    for(i = 0; i <2; i + +) a.score[i]= b.score[i];
    return a;
}
main()
{
    STU c ={"Qian",'f',95.0,92.0},d;
    d = f(c); 
    printf("%s,%c,%2.0f,%2.0f\n"),d.neme,d.sex,d.score[0],d.score[1];
}

程序的运行结果是

共 1 分 

第19题

设二叉树的前序序列与中序序列均为ABCDEFGH,则该二叉树的后序序列为

共 1 分 

第20题

在数据库系统中,考虑数据库实现的数据模型是

共 1 分 

第21题

有以下程序

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
main()
{
    int x=8; 
    for(;x>0;x--)
    {
        if(x%3){printf("%d,",x--);continue;}
        printf("%d,",--x);
    }
}

程序的运行结果是

共 1 分 

第22题

在E-R图中,用来表示实体间联系的图形是

共 1 分 

第23题

有下列程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
void fun (int *a, int n)/*fun函数的功能是将a所指数组元素从大到小排序*/
{
    int t,i,j; 
    for (i=0;i<n-1;j++) 
    for (j=i+1;j<n;j++)
    if(a[i]<a[j)  {t=a[i];a[i]=a[j];a[j]=t;}}
main()
{
    int c[10]={1,2,3,4,5,6,7,8,9,0},i;
    fun(c+4,6); 
    for(i=0;i<10;i++)
    printf("%d,", c[i];
    printf("\n");
}

程序的运行结果是

共 1 分 

第24题

有以下程序

1
2
3
4
5
6
main()
{
    int y=10; 
    while(y--); 
    printf("y=%d\n",y);
}

程序执行后的输出结果是

共 1 分 

第25题

阅读以下程序

1
2
3
4
5
6
7
8
9
#include <stdio.h>
main()
{
    int case
    float printF; 
    printf("Please enter 2 numbers:"); 
    scanf("%d %f",&case,&printF); 
    printf("%d %f\n",case,printF);
}

该程序在编译时产生错误,其出错原因是

共 1 分 

第26题

设某二叉树中共有140个结点,其中有40个度为1的结点。则

共 1 分 

第27题

学院的每名教师只能属于一个系,则实体系和实体教师间的联系是

共 1 分 

第28题

下列叙述中正确的是

共 1 分 

第29题

线性表的链式存储结构与顺序存储结构相比,链式存储结构的优点有

共 1 分 

第30题

设fp为指向某二进制文件的指针,且已读到此文件未尾,则函数feof(fp)的返回值为

共 1 分 

第31题

下面描述中正确的是

共 1 分 

第32题

有以下程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
int b=2; 
int fun(int *k)
{
    b=*k+b; 
    return(b);
}
main()
{
    int a[10]={1, 2, 3, 4, 5, 6, 7, 8}, i ;
    for (i=2;i<4;i++)
    {
        b=fun(&a[i]+b; 
        printf("%d",b);
    }
    printf("\n");
}

程序运行后的输出结果是

共 1 分 

第33题

有以下程序(strcpy为字符串复制函数,strcat为字符串连接函数)

1
2
3
4
5
6
7
8
#include <stdio.h>
#include <string.h>
main()
{
    char a[10]="abc", b[10]="012", c[10]="xyz"
    strcpy (a+1, b+2); 
    puts (strcat (a, c+1); 
}

程序运行后的输出结果是

共 1 分 

第34题

有以下程序

1
2
3
4
5
6
7
struct S(int a; int b;}; 
main()
{
    struct S a,*p=&a; 
    a.a=99; 
    printf("%d\n",___);
}

程序要求输出结构体中成员a的数据,以下不能填入横线处的内容是

共 1 分 

第35题

以下不能将s所指字符串正确复制到t所指存储空间的是

共 1 分 

第36题

不属于对象构成成份的是

共 1 分 

第37题

某二叉树的前序序列为ABCDEFG,中序序列为DCBAEFG,则该二叉树的深度为

共 1 分 

第38题

有以下程序

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
struct tt {int x;struct tt *y; *p}; 
struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a}; 
main() 
  int i;
  p=a;  
  for(i=1;i<=2;i++) 
  
     printf("%d,",p->x);
     p=p->y;
  }
 }

程序的运行结果是

共 1 分 

第39题

设有定义:int x=2;以下表达式中,值不为6的是

共 1 分 

第40题

若有以下程序

1
2
3
4
5
6
7
#define S(x) x*x
#define T(x) S(x)*s(x)
main()
{
    int k=5, j=2;
    printf("%d,%d\n",S(k+j),T(k+j));
}

则程序的输出结果是

共 1 分 

第41题

函数fun的功能是:从三个形参a,b,c中找出中间的那个数,作为函数值返

回。例如,当a=3, b=5, c=4时,中数为4。

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

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

1
2
3
4
5
int fun(int a, int b, int c)
{
    int t; t = (a>b) ? (b>c? b :(a>c?c:___1___)) : ((a>c)?___2___ : ((b>c)?c:___3___)); 
    return t;
}
共 18 分 

第42题

给定程序中函数fun的功能是:首先将大写字母转换为对应小写字母;若小写字母为a~u,则将其转换为其后的第5个字母;若小写字母为v~z,使其值减21,转换后的小写字母作为函数值返回例如,若形参是字母A,则转换为小写字母;若形参是字母W,则转换为小写字母b。

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

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

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
#include<stdio.h>
#include<stype.h>
char fun(char c)
{
    /********found********/
    if (c>= 'A' && c<='Z')
        c = c-32;
/********found********/
    if (c>='a' && c<='u')
        c = c-5;
    else if (c>='v' && c<='z')
        c = c-21;
    return c;
}
main ( )
{
    char cl, c2;
    printf("\nEnter a letter(A-Z):");
    cl = get char( );
    if (isupper(cl))
    {
        c2 = fun(cl);
        printf("\n k nThe letter %c change to %c\n",cl,c2);
    }
    else
    {
        printf("\nEnter (A-Z) !\n");
    }
}
共 18 分 

第43题

请编写函数fun,其功能是:计算并输出:s=1+(1+根号2)+(1+根号2+根号3)+....+(1+根号12+根号3+...+根号n)(要求n的值大于1但不大于100)

例如,在主函数中从键盘给n输入20后,输出为:s=534.188884

请勿改动主函数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
#include <math.h>
#include <stdio.h> 
double fun(int n)
{
 
}
main ()
{
     int n; double s;
    printf("\n\nlnput n: "); 
    scanf("%d",&n);
    s=fun(n);
    printf("\n\ns=%f\n\n",s);
    NONO();
)
NONO ()
{/*请在此函数内打开文件,输入测试数据, 调用fun函数,输出数据,关闭文件.*/
    FILE *rf, *wf; int n, i; double s;
    rf = fopen("in.dat""r");
    wf - fopen("out.dat",“w”);
    for(i = 0 ; i < 10 ; i++) 
    {
        fscanf(rf, "%d", &n);
        s = fun(n);
        fprintf(wf, ”%lf\n", s);
        fclose(rf); 
        fclose(wf);
    }
}


共 24 分