上半年全国计算机二级考试C语言真题(完整版)(精选3套)
在平时的学习、工作中,我们最离不开的就是练习题了,学习需要做题,是因为这样一方面可以了解你对知识点的掌握,熟练掌握知识点!同时做题还可以巩固你对知识点的运用!一份好的习题都具备什么特点呢?以下是小编整理的上半年全国计算机二级考试C语言真题(完整版),欢迎大家分享。

上半年全国计算机二级考试C语言真题 1
一、 选择题
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);
If(a++<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<++)
{switch(s)
{ 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语句
For(k=-1;k<0;k++) printf(****\n”);
下面关于语句执行情况的叙述中正确的是( )。
A.循环体执行一次
B.循环体执行两次
C.循环体一次也不执行。
D.构成无限循环
23、有以下程序
#include
Main()
{char A,B,C;
B=’1’;C=’A’
For(A=0;A<6;A++)
{if(A%2) putB+A);
Else putC+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 fun(int x[N])
{int m;
For(m=N-1;m>0;m--) scanf(“%d\n”, );
}
A.&x[++m]
B.&x[m+1]
C.x+(m++)
D.x+m
26、若有函数
Viod fun(double 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 avg(int *a,int n);
B.int avg(int a[10],int n);
C.int avg(int a,int n) ;
D.int avg(int 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);
get(c);
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 fun(char c)
{if(c>’x’) fun(c-1);
printf (“%c”,c);
}
main()
{fun”z”;}
程序运行输出结果是( )。
A.xyz
B.wxyz
C.zyxw
D.zyx
33、有以下函数
#include
viod func(int n)
{int i;
for(i=0;i<=n;i++) printf(“*”);
printf(“#”);
main()
{ func(3); printf(“????”); func(4); printf(“\n”); }
程序运行输出结果是( )。
A.****#????***#
B.***#????*****#
C.**#????*****#
D.****#????*****#
34、有以下函数
#include
viod fun(int *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};
for(K+1;k<3;k++) fun(a);
for(K+1;k<5;k++) printf(“%d”,a[k]);
printf(“\n”);
}
程序运行输出结果是( )。
A.12345
B.23445
C.34756
D.35745
35、有以下函数
#include
#define S(x) (x)*x*2
main()
{int k=5,j=2;
printf(“%d,”,S[k+j]); printf(“%d\n”,S(k-j)));
}
程序运行输出结果是( )。
A.98,18
B.39,11
C.39,18
D.98,11
36、有以下函数
#include
Viod exch(int t[ ])
{t[0]=t[5];}
{int x[10]={1,2,3,4,5,6,7,8,9,10},i=0;
While(i<=4) {exch(&x[i])’i++;}
for(i=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 fun(struct stu *p)
{ printf(“%s\n”,p->name);}
mian()
{ struct stu x[3]={{01,”zhang”,20},{02,”wang”,19},{03,”zhao”,18}};
fun(x+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、设循环队列的存储空间为Q(1: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;
for(k=1,k<=n;k++) s=s+1.0(k*(k+1));
printf(“%f\n”,s);
请填空,使以下程序段的功能与上面的程序段完全相同。
s=1.0; k=1;
while( )
{ s=s+1.0(k*(k+1)); k=k+1;}
printf(“%f\n”,s);
10、以下程序段的输出结果是( )。
#include
mian()
{ char a,b;
for(a=0;a<20;a+=7) { b=a; putb+’0’); }
}
11、以下程序段的输出结果是( )。
#include
mian()
{ char *ch[4]={“red”,”green”,”blue”};
Int i=0;
While(ch[i]);
{ putch[i][0]; i++; }
}
12、有以下程序
#include
mian()
{int arr[]={1,3,5,7,2,4,6,8{, i, start;
Scanf(“%d”, &start);
For(i=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 *)malloc(sizeof(char)*20);
strcpy(p,”attaboy,welcome!”);
printf(“%c%c%c\n”,p[11], q[3], r[4]);
free(p);
}
15、设文件test.txt中原已写入字符串Begin,执行以下程序后,文件中的内容为( )。
#include
mian()
{ file *fp;
fp=fopen(“test.txt”,”w+”);
fputs(“test”,fp);
fclose(fp);
}
上半年全国计算机二级考试C语言真题 2
一、选择题。
1). 下列关于栈的描述中正确的是( )
A.在栈中只能插入元素而不能删除元素
B.在栈中只能删除元素而不能插入元素
C.栈是特殊的线性表,只能在一端插入或删除元素
D.栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素
正确答案:C
答案解析:栈是限定在一端进行插入与删除的线性表,在栈中,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。
2). 在一个容量为15的循环队列中,若头指针front=6,尾指针rear=9,则循环队列中的元素个数为( )
A.2
B.3
C.4
D.5
正确答案:B
答案解析:循环队列中,rear表示尾指针,front表示头指针,当有元素入队时,rear=rear+1,而元素出队的时候,front=front+1,当rear值大于front值时,队列中的元素个数为rear-front,当rear的值小于front时,列队中的元素个数为rear-front+m(m表示队列的容量)。
3). 数据处理的最小单位是( )
A.数据
B.数据元素
C.数据项
D.数据结构
正确答案:C
4). 栈和队列的'共同点是( )
A.都是先进后出
B.都是先进先出
C.只允许在端点处插入和删除元素
D.没有共同点
正确答案:C
5). 在深度为5的满二叉树中,叶子结点的个数为
A.32
B.31
C.16
D.15
正确答案:C
答案解析:满二叉树是指除最后一层外,每一层上的所有结点都有两个叶子结点。在满二叉树中,层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。
6). 一个栈的初始状态为空。现将元素1,2,3,A,B,C依次入栈,然后再依次出栈,则元素出栈的顺序是( )
A.1,2,3,A,B,C
B.C,B,A,1,2,3
C.C,B,A,3,2,1
D.1,2,3,C,B,A
正确答案:C
答案解析:栈是按照″先进后出″或″后进先出″的原则组织数据的。所以出栈顺序是CBA321。
上半年全国计算机二级考试C语言真题 3
1). 关于C语言的变量,以下叙述中错误的是( )
A.所谓变量是指在程序运行过程中其值可以被改变的量
B.变量所占的存储单元地址可以随时改变
C.程序中用到的所有变量都必须先定义后才能使用
D.由三条下划线构成的符号名是合法的变量名
正确答案:B
答案解析:变量是指在程序运行过程中其值可以改变的值,一个变量实质上是代表了内存中的某个存储单元。在程序中对某个变量的操作实际上就是对这个存储单元的操作,程序运行期间,这个分配的存储单元不会改变,但是其值可以变化。变量命名要符合标识符的规定,其中下划线是标识符的组成字符。程序中所有变量都必须先定义后使用。
2). 当变量c的值不为2、4、6时,值也为″真″的表达式是( )
A.(c==2)||(c==4)||(c==6)
B.(c>=2 && c<=6)&&!(c%2)
C.(c>=2 &&c<=6)&&(c%2!=1)
D.(c>=2 && c<=6) || (c!=3)|| (c!=5)
正确答案:D
答案解析:逻辑或运算中,只要有一项为真,表达式的值就为真,故选项D中c的值不为2、4、6时,那么表达式(c>=2&& c<=6)以及(c!=3)、(c!=5)必有一个成立,表达式的值也为真。
3). 在C语言中,函数返回值的类型最终取决于
A.函数定义时在函数首部所说明的函数类型
B.return语句中表达式值的类型
C.调用函数时主调函数所传递的实参类型
D.函数定义时形参的类型
正确答案:A
答案解析:在C语言中,应当在定义函数时指定函数值的类型,凡不加类型说明的函数,一律按整型处理。在定义函数时,对函数值说明的类型一般应该和return语句中的表达式类型一致。如果函数值的类型和return语句中的表达式类型不一致,则以函数类型为主,即函数类型决定返回值的类型。
4). 以下叙述中正确的.是( )
A.在C语言中,预处理命令行都以″#″开头
B.预处理命令行必须位于C源程序的起始位置
C.#include 必须放在C程序的开头
D.C语言的预处理不能实现宏定义和条件编译的功能
正确答案:A
答案解析:在C语言中,凡是以″#″号开头的行,都称为″编译预处理″命令行。预处理命令可以放在程序中的任何位置,其有效范围是从定义开始到文件结束。预处理命令有宏定义、文件包含和条件编译三类。#include 命令行表示程序中要引用C标准函数库中的标准输入输出函数。
5). 下列叙述中,不属于测试的特征的是
A.测试的挑剔性
B.完全测试的不可能性
C.测试的可靠性
D.测试的经济性
正确答案:C
答案解析:软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。它有3个方面的重要特征,即测试的挑剔性、完全测试的不可能性及测试的经济性。其中,没有测试的可靠性这一说法。
6). 以下选项中不属于C语言标识符的是( )
A.用户标识符
B.关键字
C.常量
D.预定义标识符
正确答案:C
答案解析:C语言的标识符可分为以下3类:①关键字。C语言预先规定了一批标识符,它们在程序中都代表着固定的含义,不能另作他用。这些字符称为关键字。例如,int、double、if、else、while、for等。②预定义标识符。即预先定义并具有特定含义的标识符。③用户标识符。由用户根据需要定义的标识符称为用户标识符,又称自定义标识符,一般用来给变量、函数、数组等命名。
7). 以下关于字符串的叙述中正确的是( )
A.两个字符串中的字符个数相同时才能进行字符串大小的比较
B.可以用关系运算符对字符串的大小进行比较
C.空串比空格打头的字符串小
D.C语言中有字符串类型的常量和变量
正确答案:C
答案解析:C语言本身并没有设置一种类型来定义字符串变量,却允许使用″字符串常量″。字符串常量是由双引号括起来的一串字符。任意两个字符串的大小比较要调用字符串比较函数strcmp(s1,s2 )来进行,其比较的方法是依次对s1和s2中对应位置上的字符两两进行比较,当出现第一对不相同的字符时,即由这两个字符决定所在串的大小(比较字符大小的依据是其ASCⅡ码值)。
8). 下列叙述中正确的是( )。
A.调用printf( )函数时,必须要有输出项
B.使用put )函数时,必须在之前包含头文件stdio.h
C.在C语言中,整数可以以二进制、八进制或十六进制的形式输出
D.调节get )函数读入字符时,可以从键盘上输入字符所对应的ASCII码
正确答案:B
答案解析:选项A,若printf函数没有输出项,且格式字符串中不含格式信息,则输出的是格式字符串本身,若格式字符串含有格式信息,运行时则出现错误提示;选项C,在C语言中,整数可以十进制、八进制或十六进制的形式输出;选项D,getchar函数是从标准输入设备读取一个字符。
9). 以下结构体类型说明和变量定义中正确的是( )
A.typedefstruct { int n; char c; } REC; REC t1,t2;
B.structREC ; { int n; char c; }; REC t1,t2;
C.typedefstruct REC; { int n=0; char c=′A′; } t1,t2;
D.struct{ int n; char c; } REC; REC t1,t2;
正确答案:A
答案解析:定义结构体类型的一般形式为:struct 结构体名 {成员列表};struct 结构体名后不能加″;″号,所以选项B、C)错误,选项D中定义无名称的结构体类型同时定义结构体变量形式应为struct t1,t2;选项A为用户自定义类型,其为正确的定义形式。
10). 若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是( )
A.一对一
B.一对多
C.多对一
D.多对多
正确答案:B
答案解析:由于B和C有一一对应的联系,而A和B只间有一对多的联系,则通过关系之间的传递,则A和C之间也是一对多的联系。
11). 待排序的关键码序列为(15,20,9,30,67.65,45,90),要按关键码值递增的顺序排序,采取简单选择排序法,第一趟排序后关键码15被放到第( )个位置。
A.2
B.3
C.4
D.5
正确答案:B
答案解析:选择排序的基本思想是扫描整个线性表,从中选出最小的元素,将它交换到表的最前面,然后对剩下的子表采用同样的方法,直到子表为空。所以第一趟排序后,将选出最小的元素9放在第一个位置,元素15则被交换放在第三个位置。
【上半年全国计算机二级考试C语言真题】相关文章:
上半年全国计算机二级C语言考试真题11-26
全国计算机二级考试《C语言》真题与答案09-03
上半年全国计算机二级C++考试真题03-21
全国计算机二级C语言历年真题02-11
计算机二级考试C语言无纸化真题10-06
计算机等级考试二级C语言真题09-26
2017全国计算机二级C考试真题10-05
全国计算机二级考试C++真题09-20