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

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


第1题

下列叙述中错误的是

共 1 分 

第2题

在希尔排序法中,每经过一次数据交换后

共 1 分 

第3题

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

共 1 分 

第4题

在黑盒测试方法中,设计测试用例的根据是

共 1 分 

第5题

下列叙述中正确的是

共 1 分 

第6题

对软件系统总体结构图,下面描述中错误的是

共 1 分 

第7题

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

共 1 分 

第8题

能够减少相同数据重复存储的是

共 1 分 

第9题

定义学生选修课程的关系模式:SC(S#,Sn,C#,Cn,G)(其属性分别为学号、姓名、课程号、课程名、成绩)则该关系的主键为

共 1 分 

第10题

关系模型中的关系模式至少应是

共 1 分 

第11题

以下叙述错误的是(    )。

共 1 分 

第12题

以下不正确的转义字符是(    )。

共 1 分 

第13题

可在C程序中用作用户标识符的一组标识符是(    )。

共 1 分 

第14题

若变量已正确定义并赋值,则以下符合C语言语法的表达式是(    )。

共 1 分 

第15题

有以下程序段

1
2
3
4
char ch;int k;
ch='a'; k=12;
printf("%c,%d,",ch,ch,k);
printf("k=%d\n",k);

已知字符a的ASCII十进制代码为97,则执行上述程序段后输出结果是(    )。

共 1 分 

第16题

下列叙述中错误的是(    )。

共 1 分 

第17题

当变量c的值不为2、4、6时,值也为"真"的表达式是(    )。

共 1 分 

第18题

若有代数式 表达式,(其中e仅代表自然对数的底数,不是变量),则下列能够正确表示该代数式的

C语言表达式是(    )。

共 1 分 

第19题

设有定义:int k=0;,下列选项的4个表达式中与其他3个表达式的值不相同的是(    )。

共 1 分 

第20题

有下列程序,其中%u表示按无符号整数输出。

1
2
3
4
5
main( )
    unsigned int x=0xFFFF;/* x的初值为十六进制数 */
    printf("%u\n",x);
}

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

共 1 分 

第21题

下面程序的运行结果是(    )。

1
for(i=3;i<7;i++) printf((i%2) ? ("**%d\n") : ("##%d\n"),i);
共 1 分 

第22题

有下列程序:

1
2
3
4
5
6
main( )
int a=0,b=0;
a=10;  /*给a赋值
b=20;    给b赋值*/
printf("a+b=%d\n",a+b);  /*输出计算结果*/ 
}

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

共 1 分 

第23题

运行下列程序时,若输入数据为"321",则输出结果是(    )。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
main()
{
    int num,i,j,k,s;
    scanf("%d",&num);
    if(num>99)
    s=3;
    else if(num>9)
    s=2;
    else
    s=1;
    i=num/100;
    j=(num-i*100)/10;
    k=(num-i*100-j*10);
    switch(s)
    {
        case 3:printf("%d%d%d\n",k,j,i);
        break;
        case 2:printf("%d%d\n",k,j);
        case 1:printf("%d\n",k);
    }
}
共 1 分 

第24题

以下程序的运行结果是(    )。

1
2
3
4
5
6
7
#include "stdio.h"
main()
{
    struct date
    {int year,month,day;}today;
    printf("%d\n",sizeof(struct date));
}
共 1 分 

第25题

判断char型变量c1是否为小写字母的正确表达式为(    )。

共 1 分 

第26题

当输入为"Hi,Lily "时,下面程序的执行结果是(    )。

1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
main()
{
    char c;
    while(c!=','
    {
       c=getchar();
       putchar(c);
   }
}
共 1 分 

第27题

下面4个关于C语言的结论中错误的是(    )。

共 1 分 

第28题

若有以下程序段:

1
2
3
4
5
6
7
8
9
struct st
{int n;
int *m;};
int a=2,b=3,c=5;
struct st s[3]=({101,&a},{102,&c},{103,&b}};
 main()
{struct st *p;
p=s;
…}

则以下表达式中值为5的是(    )。

共 1 分 

第29题

下列程序的运行结果是(    )。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdio.h>
void sub(int*s,int*y)
{static int m=4;
*y=s[0];
m++;
}
void main()
{int a[]={1,2,3,4,5},k;
int x;
printf("\n");
for(k=0;k<=4;k++)
{sub(a,&x);
printf("%d,",x);
}
}
共 1 分 

第30题

以下程序的输出结果是(    )。

1
2
3
4
5
6
7
8
point(char*pt);
main()
{char b[4]={'m','n','o','p'},*pt=b;
point(pt);
printf("%c\n",*pt);
}
point(char *p)
{p+=3;}
共 1 分 

第31题

C语言中规定,程序中各函数之间(    )。

共 1 分 

第32题

以下程序的输出结果是(    )。

1
2
3
4
5
6
7
8
#include<stdio.h>
main()
{int a[3][3]={0,1,2,0,1,2,0,1,2},i,j,s=1;
for(i=0;i<3;i++)
for(j=i;j<=i;j++)
s+=a[i][a[j][j]];
printf("%d\n",s);
}
共 1 分 

第33题

以下程序输出的结果是(    )。

1
2
3
4
5
6
7
#include<stdio.h>
#include<string.h>
main()
{char a[][7]={"ABCD","EFGH","IJKL","MNOP"},k;
for (k=1;k<3;k++)
printf("%s\n",&a[k][k]);
}
共 1 分 

第34题

当用"#define F 37.5f"定义后,下列叙述正确的是(    )。

共 1 分 

第35题

在一个C源程序文件中,要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别

是(    )。

共 1 分 

第36题

以下说法正确的是(    )。

共 1 分 

第37题

下面程序的输出结果是(    )。

1
2
3
4
5
6
7
8
typedef union long x[1];
int y[4];
char z[10];
}M;
M t;
main()
{ rintf("%d\n",sizeof(t));
}
共 1 分 

第38题

以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序

1
2
3
4
5
6
7
8
9
10
11
12
void sort(int a[],int n)
{int i,j,t;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}
}
main()
{int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa[3],5);
for(i=0;i<10;i++)printf("%d,",aa[i]);
printf("\n");
}

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

共 1 分 

第39题

设x=061,y=016,则z=x|y的值是(    )。

共 1 分 

第40题

函数rewind(fp)的作用是(    )。

共 1 分 

第41题

给定程序中,函数fun的功能是将不带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2.

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

注意:源程序存放在考生文件夹下的BLANK.C中。

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

给定源程序:

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
#include  <stdio.h>
#include  <stdlib.h>
#define N 5
typedef struct node {
  int data;
  struct node *next;
} NODE;
/**********found**********/
__1__ fun(NODE *h)
{NODE *p, *q, *r;
  p = h;
  if (p == NULL)
    return NULL;
  q = p->next;
  p->next = NULL;
  while (q)
  {
/**********found**********/
    r = q->__2__;
    q->next = p;
    p = q;
/**********found**********/
    q = __3__ ;
  }
  return p;
}
NODE *creatlist(int a[])
{NODE *h,*p,*q; int i;
   h=NULL;
   for(i=0; i<N; i++)
   {q=(NODE *)malloc(sizeof(NODE));
      q->data=a[i];
      q->next = NULL;
      if (h == NULL) h = p = q;
      else {p->next = q; p = q;}
   }
   return h;
}
void outlist(NODE *h)
{NODE *p;
   p=h;
   if (p==NULL) printf("The list is NULL!\n");
   else
   {printf("\nHead ");
      do
      {printf("->%d", p->data); p=p->next;}
      while(p!=NULL);
      printf("->End\n");
  }
}
main()
{NODE *head;
   int a[N]={2,4,6,8,10};
   head=creatlist(a);
   printf("\nThe original list:\n");
   outlist(head);
   head=fun(head);
   printf("\nThe list after inverting :\n");
   outlist(head);
}
共 18 分 

第42题

给定程序MODI1.C中函数fun的功能是:将s所指字符串中位于奇数位置的字符或ASCII码为偶数的字符放入t所指数组中(规定第一个字符放在第0位中)。

例如,字符串中的数据为:AABBCCDDEEFF,则输出应当是ABBCDDEFF。

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

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

给定源程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <string.h>
#define N 80
void fun(char *s, char t[])
{int i, j=0;
   for(i=0; i<(int)strlen(s); i++)
/***********found**********/
   if(__1__)
        t[j++]=s[i];
/***********found**********/
   __2__;
}
main()
{char s[N], t[N];
   printf("\nPlease enter string s : "); gets(s);
   fun(s, t);
   printf("\nThe result is : %s\n",t);
}
共 18 分 

第43题

请编写函数fun,函数的功能是:将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。

例如,二维数组中的数据为:

33 33 33 33

44 44 44 44

55 55 55 55

则一维数组中的内容应该是:

33 44 55 33 44 55 33 44 55 33 44 55。

注意:部分源程序在文件PROG1.C中。

请勿改动主函数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
#include <stdio.h>
void fun(int s[][10], int b[], int *n, int mm, int nn)
{
    __1__;
    for(j=0;j<nn;j++)
    for(__2__)
    {
      b[*n]=__3__;
      __4__;
    }
}
main()
{int w[10][10]={{33,33,33,33},{44,44,44,44},{55,55, 55,55}},i,j;
   int a[100]={0}, n=0;void NONO ();
   printf("The matrix:\n");
   for(i=0; i<3; i++)
   {for(j=0;j<4; j++)printf("%3d",w[i][j]);
      printf("\n");
   }
   fun(w,a,&n,3,4);
   printf("The A array:\n");
   for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");
   NONO();
}
void NONO ()
{/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */
  FILE *rf, *wf ; int i, j, k ;
  int w[10][10], a[100], n = 0, mm, nn ;
  rf = fopen("in.dat","r");
  wf = fopen("out.dat","w");
  for(k = 0 ; k < 5 ; k++) {
    fscanf(rf, "%d %d", &mm, &nn);
    for(i = 0 ; i < mm ; i++)
      for(j = 0 ; j < nn ; j++) fscanf(rf, "%d", &w[i][j]);
    fun(w, a, &n, mm, nn);
    for(i = 0 ; i < n ; i++) fprintf(wf, "%3d", a[i]); fprintf(wf, "\n");
  }
  fclose(rf); fclose(wf);
}
共 24 分 

试卷信息