2021年上半年全国计算机二级考试C语言真题(完整版)
一、 选择题
1、 下列叙述中正确的是 。
A.循环队列是队列的一种顺序存储结构
B.循环队列是队列的一种链式存储结构
C.循环队列是非线性结构
D.循环队列是一直逻辑结构
2、 下列叙述中正确的是 。
A.栈是一种先进先出的线性表
B.队列是一种后进先出的线性表
C.栈和队列都是非线性结构
D.以上三种说法都不对
3、 一棵二叉树共有25个节点,其中5个时子节点,那么度为1的节点数为 。
A.4
B.6
C.10
D.16
4、 在下列模式中,能够给出数据库物理存储结构与物理存取方法的是 。
A.内模式
B.外模式
C.概念模式
D.逻辑模式
5、 在满足实体完整性约束的条件下 。
A、 一个关系中可以没有候选关键词
B、 一个关系中只能有一个候选关键词
C、 一个关系中必须有多个候选关键词
D、 一个关系中应该有一个或者多个候选关键词
6、 有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是 。
A.自然连接
B.并
C.差
D.交
7、 软件生命周期中的活动不包括 。
A.软件维护
B.市场调研
C.软件测试
D.需求分析
8、 下面不属于需求分析阶段任务的是 。
A.确定软件系统的功能需求
B.确定软件系统的系统的系能需求
B.制定软件集成测试计划
D.需求规格说明书审评
9、 在黑盒测试方式中,设计测试用例的主要根据是 。
A.程序外部功能
B.程序内部逻辑
C.程序数据结构
D.程序流程图
10、 在软件设计中不使用的工具是 。
A.系统结构图
B.程序流程图
C.PAD图
D.数据流图DFD图
11、针对简单程序设计,以下叙述的实施步骤正确的是 。
A.确定算法和数据结构、编码、调试、整理文档
B.编码、确定算法和数据结构、调试、整理文档
C.整理文档、确定算法和数据结构、编码、调试
D.确定算法和数据结构、调试、编码、整理文档
12、关于C语言中数的表示,以下叙述正确的是 。
A.只有整型数在允许范围内能精确无误的表示,实型数会有误差
B.只要在在允许范围内整型和实型都能精确表示
C.只有实型数在允许范围内能精确无误的表示,整型数会有误差
D.只有八进制表示的数在不会有误差
13、以下关于算法叙述错误的是 。
A.算法可以用伪代码、流程图等多种形式来描述
B.一个正确的算法必须有输入
C.一个正确的算法必须有输出
D.用流程图可以描述的算法可以用任何一种计算机高级语言编写成程序代码
14、以下叙述错误的是 。
A.一个C程序可以包含多个不同名的函数
B.一个C程序只能有一个主函数
C.C程序在书写时,有严格的`缩进要求,否则不能编译通过
D.C程序的主函数必须用main作为函数名
15、设有以下语句
Char ch1,ch2, scanf”%c%c”,&ch1,&ch2;
若要为变量ch1和ch2分别输入字符A和B,正确的输入形式应该是 。
A.A和B之间用逗号间隔
B.A和B之间不能有任何间隔符
C.A和B之间可以用回车间隔
D.A和B之间用空格间隔
16、以下选项中非法的字符常量是 。
A.’\102’
B.’\65’
C.’\xff’
D.’\019’
17、有以下程序
#include
Main
Int A=0,B=0,C=0;
C=A-=A-5;A=B,B+=4;
Printf“%d, %d, %d\n”,A,B,C
程序运行后输出的结果是 。
A.0,4,5
B.4,4,5
C.4,4,4
D.0,0,0
18、设变量均已正确定义并且赋值,以下与其他三组输出结构不同的一组语句是 。
A.x++; printf“%d\n”,x;
B.n=++x; printf“%d\n”,n;
C.++x; printf“%d\n”,x;
D.n=x++; printf“%d\n”,n;
19、以下选项中,能表示逻辑值“假”的是 。
A.1
B.0.000001
C.0
D.100.0
20、有以下程序
#include
Main
int a;
Scanf“%d”,&a;
Ifa++<9 printf“%d\n”,a;
Else printf“%d\n”,a--;
程序运行时键盘输入9<回车>,则输出的结构是 。
A.10
B.11
C.9
D.8
21、有以下程序
#include
Main
int s=0,n;
For n=0;n<3;n<++
switchs
case 0;
Case 1;s+=1;
Case 2;s+=2;break;
Case 3;s+3;
Case 4;s+=4;
printf“%d\n”,s;
程序运行后的结果是 。
A.1,2,4
B.1,3,6
C.3,10,14
D.3,6,10
22、若k是int类型变量,且有以下for语句
Fork=-1;k<0;k++ printf****\n”;
下面关于语句执行情况的叙述中正确的是 。
A.循环体执行一次
B.循环体执行两次
C.循环体一次也不执行
D.构成无限循环
23、有以下程序
#include
Main
char A,B,C;
B=’1’;C=’A’
ForA=0;A<6;A++
ifA%2 putcharB+A;
Else putcharC+A;
程序运行后输出的结果是 。
A.1B3D5F
B.ABCDFE
C.A2C4E6
D.123456
24、设有如下定义语句
Int m[ ]=2,4,6,8,*k=m;
以下选项中,表达式的值为6的是 。
A.*k+2
B.k+2
C.*k+2
D.*k+=2
25、fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。在下列划线处应该填写的是 。
#include
#define N 5
Viod funint x[N]
int m;
Form=N-1;m>0;m-- scanf“%d\n”, ;
A.&x[++m]
B.&x[m+1]
C.x+m++
D.x+m
26、若有函数
Viod fundouble a[], int *n
………
以下叙述中正确的是 。
A、 调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送
B、 形参a和n都是指针变量
C、 形参a是一个数组名,n是指针变量
D、 调用fun函数时将把double型实参数组元素一一对应地传送给形参a数组
27、有以下程序
#include
Main
int a,b,k,m,*p1,*p2;
k=1,m=8;
p1=&k,p2=&m;
a=/*p1-m; b=*p1+*p2+6;
printf“%d ”,a; printf“%d\n”,b;
编译时编译器提示错误信息,你认为出错的语句是 。
A.a=/*p1-m
B.b=*p1+*p2+6
C.k=1,m=8;
D.p1=&k,p2=&m;
28、以下选项中有语法错误的是 。
A char *str[ ]=“guest”;
B.char str[10 ]=“guest”;
C.char *str[3] *str[1]=“guest”;
D.char str[3][10];str[1]=“guest”;
29、avg函数的功能是求整型数组中的前若干个元素的平均值,设数组元素个数最多不超过10,则下列函数说明语句错误的是 。
A.int avgint *a,int n;
B.int avgint a[10],int n;
C.int avgint a,int n ;
D.int avgint a[],int n;
30、有以下函数
#include
#include
main
printf“%d\n”,strren”ATS\n012\1” ;
程序运行后的输出结果是 。
A.3
B.8
C.4
D.9
31、有以下函数
#include
main
char a[20],b[20],c[20];
scanf”%s%s”,a,b;
getc;
printf”%s%s\n”,a,b,c;
程序运行时从第一行开始输入 this is a cat!<回车>,则输出结果是 。
A.thisisacat!
B.this is a
C.thisis a cat!
D.thisisa cat!
32、有以下函数
#include
viod funchar c
ifc>’x’ func-1;
printf “%c”,c;
main
fun”z”;
程序运行输出结果是 。
A.xyz
B.wxyz
C.zyxw
D.zyx
33、有以下函数
#include
viod funcint n
int i;
fori=0;i<=n;i++ printf“*”;
printf“#”;
main
func3; printf“????”; func4; printf“\n”;
程序运行输出结果是 。
A.****#????***#
B.***#????*****#
C.**#????*****#
D.****#????*****#
34、有以下函数
#include
viod funint *s
staic int j=0;
do s[j]=s[j]+s[j+1]; wihle++j<2;
main
int k,a[10]=1,2,3,4,5;
forK+1;k<3;k++ funa;
forK+1;k<5;k++ printf“%d”,a[k];
printf“\n”;
程序运行输出结果是 。
A.12345
B.23445
C.34756
D.35745
35、有以下函数
#include
#define Sx x*x*2
main
int k=5,j=2;
printf“%d,”,S[k+j]; printf“%d\n”,Sk-j;
程序运行输出结果是 。
A.98,18
B.39,11
C.39,18
D.98,11
36、有以下函数
#include
Viod exchint t[ ]
t[0]=t[5];
int x[10]=1,2,3,4,5,6,7,8,9,10,i=0;
Whilei<=4 exch&x[i]’i++;
fori=0;i<5;i++ printf“%d”,x[i];
printf“\n”;
程序运行输出结果是 。
A.2 4 6 8 10
B.1 3 5 7 9
C.1 2 3 4 5
D.6 7 8 9 10
37、设有以下程序段
Struct MP3
char name[20];
Char color;
Float price;
std,*ptr;
ptr=& std;
若要引用结构体变量std中的color成员,写法错误的是 。
A.std.color
B.ptr-> color
C.std-> color
D.*ptr .color
38、有以下函数
#include
struct stu
int mun; char name[10]; int age;;
viod funstruct stu *p
printf“%s\n”,p->name;
mian
struct stu x[3]=01,”zhang”,20,02,”wang”,19,03,”zhao”,18;
funx+2;
程序运行输出结果是 。
A.zhang
B.zhao
C.wang
D.19
39、有以下函数
#include
mian
int a=12,c;
c=a<<2<<1;
printf“%d\n”,c:
程序运行输出结果是 。
A.3
B.50
C.2
D.96
40、以下函数不能用于向文件写入数据的是 。
A.ftell
B.fwrite
C.fputc
D.fprintf
二、填空题
1、将长度为n的顺序存储在线性表中删除一个元素,最坏情况下需要移动表中的元素个数为 。
2、设循环队列的存储空间为Q1:3,初始状态为front=rear=30。现经过一系列入队与退队运算后,front=16,rear=15,则循环队列中有 个元素。
3、数据库管理系统提供的数据语言中,负责数据的增、删、改和查询的是 。
4、在将E-R图转换到关系模式时,实体和联系都可以表示成 。
5、常见的软件工程方法有结构化方法和面向对象方法,类、继承以及多态性等概念属于 。
6、设变量a和b已定义为int类型,若要通过scanf”a=%d,b=%d”,&a,&b;语句分别给a和b输入1和2,则正确的数据输入内容是 。
7、以下程序的输出结果是 。
#include
mian
int a=37;
a+=a%=9; printf“%d\n”,a;
8、设A.B.c都是整型变量,如果a的值为1,b的值为2,则执行c=a++||b++;语句后,变量b的值是 。
9、有以下程序段
s=1.0;
fork=1,k<=n;k++ s=s+1.0k*k+1;
printf“%f\n”,s;
请填空,使以下程序段的功能与上面的程序段完全相同。
s=1.0; k=1;
while
s=s+1.0k*k+1; k=k+1;
printf“%f\n”,s;
10、以下程序段的输出结果是 。
#include
mian
char a,b;
fora=0;a<20;a+=7 b=a; putcharb+’0’;
11、以下程序段的输出结果是 。
#include
mian
char *ch[4]=“red”,”green”,”blue”;
Int i=0;
Whilech[i];
putcharch[i][0]; i++;
12、有以下程序
#include
mian
int arr[]=1,3,5,7,2,4,6,8, i, start;
Scanf“%d”, &start;
Fori=0,i<3,i++
printf“%d”,arr[start+i%8];
若在程序运行时输入整数10 <回车>,则输出结果为 。
13、以下程序的功能是输出a数组中的所有字符串,请填空
#include
mian
char *a[]=“ABC”,”DEFGH”,”IJ”,”KLMNOP”;
Int i=0;
For;i<4;i++ printf“%s\n”, ;
14、以下程序的输出结果是 。
#include
#include
#include
mian
char *p, *q, *r;
p=q=r=char *mallocsizeofchar*20;
strcpyp,”attaboy,welcome!”;
printf“%c%c%c\n”,p[11], q[3], r[4];
freep;
15、设文件test.txt中原已写入字符串Begin,执行以下程序后,文件中的内容为 。
#include
mian
file *fp;
fp=fopen“test.txt”,”w+”;
fputs“test”,fp;
fclosefp;