全国计算机二级考试模拟题C语言.docx
《全国计算机二级考试模拟题C语言.docx》由会员分享,可在线阅读,更多相关《全国计算机二级考试模拟题C语言.docx(57页珍藏版)》请在冰豆网上搜索。
全国计算机二级考试模拟题C语言
公共基础知识
基本要求
1.掌握算法的基本概念。
2.掌握基本数据结构及其操作。
3.掌握基本排序和查找算法。
4.掌握逐步求精的结构化程序设计方法。
5.掌握软件工程的基本方法,具有初步应用相关技术进行软件开发的能力。
6.掌握数据库的基本知识,了解关系数据库的设计。
考试内容
一、基本数据结构与算法
1.算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)。
2.数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;线性结构与非线性结构的概念。
3.线性表的定义;线性表的顺序存储结构及其插入与删除运算。
4.栈和队列的定义;栈和队列的顺序存储结构及其基本运算。
5.线性单链表、双向链表与循环链表的结构及其基本运算。
6.树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。
7.顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,插入类排序)。
二、程序设计基础
1.程序设计方法与风格
2.结构化程序设计。
3.面向对象的程序设计方法,对象,方法,属性及继承与多态性。
三、软件工程基础
1.软件工程基本概念,软件生命周期概念,软件工具与软件开发环境。
2.结构化分析方法,数据流图,数据字典,软件需求规格说明书。
3.结构化设计方法,总体设计与详细设计。
4.软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。
5.程序的调试,静态调试与动态调试。
四、数据库设计基础
1.数据库的基本概念:
数据库,数据库管理系统,数据库系统。
2.数据模型,实体联系模型及E―R图,从E―R图导出关系数据模型。
3.关系代数运算,包括集合运算及选择、投影、连接运算,数据库规范化理论。
4.数据库设计方法和步骤:
需求分析、概念设计、逻辑设计和物理设计的相关策略。
考试方式
1.公共基础知识的考试方式为笔试,与C语言程序设计(C++语言程序设计、Java语言程序设计、VisualBasic语言程序设计、VisualFoxPro数据库程序设计或Access数据库程序设计)的笔试部分合为一张试卷,公共基础知识部分占全卷的30分。
2.公共基础知识有l0道选择题和5道填空题。
C语言程序设计
基本要求
1.熟悉TURBOC集成环境。
2.熟练掌握结构化程序设计的方法,具有良好的程序设计风格。
3.掌握程序设计中简单的数据结构和算法。
4.TURBOC的集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力。
考试内容
一、C语言的结构
1.程序的构成,MAIN函数和其他函数。
2.头文件,数据说明,函数的开始和结束标志。
3.源程序的书写格式。
4.C语言的风格。
二、数据类型及其运算
1.C的数据类型(基本类型,构造类型,指针类型,空类型)及其定义方法。
2.C运算符的种类、运算优先级和结合性。
3.不同类型数据间的转换与运算。
4.C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。
三、基本语句
1.表达式语句,空语句,复合语句。
2.数据的输入与输出,输入输出函数的调用。
3.复合语句。
4.GOTO语句和语句标号的使用。
四、选择结构程序设计
1.用IF语句实现选择结构。
2.用SWITCH语句实现多分支选择结构。
3.选择结构的嵌套。
五、循环结构程序设计
1.FOR循环结构。
2.WHILE和DOWHILE循环结构。
3.CONTINUE语句和BREAK语句。
4.循环的嵌套。
六、数组的定义和引用
1.一维数组和多维数组的定义、初始化和引用
2.字符串与字符数组。
七、函数
1.库函数的正确调用。
2.函数的定义方法。
3.函数的类型和返回值。
4.形式参数与实在参数,参数值的传递。
5.函数的正确调用,嵌套调用,递归调用。
6.局部变量和全局变量。
7.变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。
8.内部函数与外部函数。
八、编译预处理
1.宏定义:
不带参数的宏定义;带参数的宏定义。
2.“文件包含”处理。
九、指针
1.指针与指针变量的概念,指针与地址运算符。
2.变量、数组、字符串、函数、结构体的指针以及指向变量、数组、字符串、函数、结构体的指针变量。
通过指针引用以上各类型数据。
3.用指针作函数参数。
4.返回指针值的指针函数。
5.指针数组,指向指针的指针,MAIN函数的命令行参数。
十、结构体(即“结构”)与共用体(即“联合”)
1.结构体和共用体类型数据的定义方法和引用方法。
2.用指针和结构体构成链表,单向链表的建立、输出、删除与插入。
十一、位运算
1.位运算符的含义及使用。
2.简单的位运算。
十二、文件操作
只要求缓冲文件系统(即高级磁盘I/O系统),对非标准缓冲文件系统(即低级磁盘I/O系统)不要求。
1.文件类型指针(FILE类型指针)。
2.文件的打开与关闭(FOPEN,FCLOSE)。
3.文件的读写(FPUTC,FGETC,FPUTS,FGETS,FREAD,FWRITE,FPRINTF,FSCANF函数),文件的定位(REWIND,FSEEK函数)。
考试方式
1.笔试:
120分钟,满分100分,其中含公共基础知识部分的30分。
2.上机:
60分钟,满分100分。
上机操作包括:
(1)填空。
(2)改错。
(3)编程。
一、选择题
(1)~(10)每小题2分, (11)~(50)每小题1分,共60分)
下列各题A)、B)、c)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)在数据结构中,从逻辑上可以把数据结构分为_______。
A)动态结构和静态结构 B)紧凑结构和非紧凑结构
c)线性结构和非线性结构 D)内部结构和外部结构
答案:
C
评析:
逻辑结构反映数据元素之间的逻辑关系,线性结构表示数据元素之间一对一的关系,非线性结构表示数据元素之间一对多或多对一的关系。
(2)若进栈序列为l,2,3,4,进栈过程中可以出栈,则下列不可能的一个出栈序列是_______。
A)1,4,3,2 B)2,3,4,l
C)3,1,4,2 D)3,4,2,1
答案:
C
评析:
栈是一种后进先出表,选项c中,先出栈的是3,说明此时栈内必然有1,2,由于l先于2进栈,所以l不可能在2之前出栈,故选项C这种出栈序列是不可能的。
(3)排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的方法,称为_______。
A)希尔排序 B)冒泡排序 c)插入排序 D)选择排序
答案:
A
评析:
希尔排序法的基本思想是:
将整个无序序列分割成若干小的子序列分别进行插入排序。
(4)在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为_______。
A)2 B)3 C)4 D)5
答案:
C
评析:
二分法查找是用关键码与线性表的中间元素比较,然后根据比较结果来判断是结束查找,还是在左边或者右边子表按相同的方法继续查找。
本题中,与ll比较的关键码分别为15,8,10,12四个。
(5)对于n个结点的单向链表(无表头结点),需要指针单元的个数至少为_______。
A)n-1 B)n C)n+l D)2n
答案:
C
评析:
在n个结点的单向链表(无表头结点)中,每个结点都有一个指针单元(即指针域),加上头指针,至少需要n+1个指针单元。
(6)在软件开发过程中,软件结构设计是描述_______。
A)数据存储结构 B)软件体系结构 C)软件结构测试 D)软件控制过程
答案:
B
评析:
从工程管理角度来看,软件设计分两步完成:
概要设计和详细设计。
概要设计(又称结构设计)将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式。
(7)模块本身的内聚是模块独立性的重要性度量因素之一。
在7类内聚中,具有最强内聚 的一类是_______。
A)顺序性内聚 B)过程性内聚 c)逻辑性内聚 D)功能性内聚
答案:
D
评析:
内聚性是一个模块内部各元素间彼此结合的紧密程度的度量。
内聚共有7类,它们之间的内聚性由弱到强排列顺序为:
偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚和功能内聚。
(8)数据存储和数据流都是_______,仅仅是所处的状态不同。
A)分析结果 B)事件 C)动作 D)数据
答案:
D
评析:
数据流图有4种成分:
源点或终点、处理、数据存储和数据流。
数据存储是处于静止状态的数据,数据流是处于运动中的数据。
(9)数据的完整性是指数据的正确性、有效性和_______。
A)可维护性 B)独立性 C)安全性 D)相容性
答案:
D
评析:
数据模型的完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态及其状态的变化,以保证数据的正确性、有效性和相容性。
(10)关系代数运算是以_______为基础的运算。
A)关系运算 B)谓词运算 c)集合运算 D)代数运算
答案:
C
评析:
关系代数运算是以关系代数作为运算对象的一组高级运算的集合。
它的基本操作是并、交、差、笛卡尔积,另外还包垂直分割(投影)、水平分割(选择)、关系的结合(连接)等。
(11)能将高级语言程序转换成目标语言程序的是_______。
A)调试程序 B)解释程序 C)编译程序 D)编辑程序
答案:
C
评析:
用高级语言编写的程序称为"源程序",而计算机只能识别和执行由0和l组成的二进制指令,所以高级语言必须先用一种称为"编译程序"的软件,把源程序翻译成二进制形式的"目标程序"。
(12)_______是构成c语言程序的基本单位。
A)函数 B)过程 c)子程序 D)子例程
答案:
A
评析:
c程序是由函数构成的。
一个c源程序至少包含一个main函数,也可以包含一个main函数和若干个其他函数,因此,函数是c程序的基本单位。
(13)可以在C语言中用做用户标识符的是_______。
A)void B)as_b3 C)for D)2c
define _123 -abc Do
WORD If cas SIG
答案:
B
评析:
c语言规定,标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。
另外还需要注意的是关键字不能作标识符。
选项A中void,C中for都为关键字,D中2c以字母开头。
(14)若有以下类型说明语句:
charw;intx;floaty,z;
则表达式w*x+z-y的结果为________类型。
A)float B)char C)int D)double
答案:
A
评析:
在进行运算时,不同类型的数据参加运算,需要先将其转换成同一类型的数据,然后再进行运算。
转换的顺序由低到高为:
char,short→int→unsigned→long→double→float,故结果为float型。
(15)main(()
{ floatx=123A56;
printf("%-5.2f\n",x);
}
以上程序输出的结果是________。
A)123.4 B)123.5 C)123.45 D)123.46
答案:
D
评析:
f格式符,用来输出实数,以小数形式输出。
"%-m.nf"的含义是:
输出数据共占m列,其中n位小数,如果输出位数小于m。
则右端补空格。
如果总长度大于列数,则按实际情况四舍五入输出。
(16)下面语句的输出结果是________。
Printf("%d\n",strlen("\t\"\065\xff\n"));
A)14 B)8
C)5 D)输出项不合法,无正常输出
答案:
C
评析:
在c语言中,以"\"开头的字符均为转义字符,其中"\"后可跟l~3位八进制数或在"\"后跟字母x及l~2位十六进制数,以此来代表一个特定的字符。
(17)下列程序的输出结果是________。
main()
{ inta=0,b=0,c=0;
if(++a>0lI++b>0)++c;
printf("\na=%d,b=%d,c=%d",a,b,c);
}
A)a=0,b=0,c=0 B)a=l,b=l,c=1
C)a=l,b=O,c=I D)a=0,b=1.c=1
答案:
C
评析:
"︱︱"是或运算,它有个"短路"的特点需特别注意,当"︱︱"运算符左边的表达式的值为真时,则程序就不再对"︱︱"右边的表达式的值进行运算,而是使得整个表达式的值直接为真。
(18)下列程序的输出结果是_________。
Main()
{ inti;
for(i=1;i+l;i++)
{ if(i>4){printlf("%d",i++);break;}
}
printf("%d",i++);
}
A)55 B)56
c)程序错误,没有输出 D)循环条件永远为真,死循环
答案:
B
评析:
本程序中有个for循环,但注意到for循环的条件是"i+l",也就是只要i+l的值为真(非零值均为真),就执行循环。
当i=l的时,i+l的值为真,判断if条件不成立,执行i++,输出i的值为5。
(19)下列程序的输出结果是_________。
#defineA100
main()
{ inti=O,sum=O;
do{ if(I==(i/2)*2)continue;
sum+=i;
}while(++i
printf("%d\n",sum);
}
A)2500 B)2050 C)4 D)O
答案:
A
评析:
本题程序的功能是求1到_99之问(包括1和99)所有奇数之和。
程序中的while循环的终止条件为++i=100,在while循环体内,如果i是偶数,则执行continue,跳过这一次循环,执行下一次循环,否则求和。
最后输出的值是1到99之间(包括l和99)所有奇数之和(1+99)*50/2=2500。
(20)下列程序的输出结果是_________。
main()
{ intI=3;
switch(i)
{case1:
case2:
printf("%d",i);
case3:
case4:
break;
default:
printf("OK");
}
}
A)0 B)3 C)OK D)没有任何输出
答案:
D
评析:
在题中,i的值为3,由于"case3:
"后面没有break语句,所以继续向下执行"case4:
"后面的语句,由于"case4:
"后面的语句为break强行退出switch语句,所以,本题没有任何输出。
(21)下列程序执行后的输出结果是________。
main()
{ intm[][3]={1,4,7,2,5,8,3,6,9};
inti,k=2:
for(I=0;i<3;i++)
{printf("%d",m[k][i]);}
}
A)456 B)258 C)369 D)789
答案:
C
评析:
根据二维数组的定义得出:
m[O][O]=1,m[O][1]=4,m[O][2]=7,m[1][0]=2,rail][1]=5,m[1][2]=8,m[2][0]=3,m[2][l]=6,m[2][2]=9,所以本题的输出是第3行的值m[2][0],m[2][1],m[2][2],即369。
(22)设已定义洱口k为int类型变量,则以下for循环语句_________。
for(i=0;k=-1,k=1;i++,k++)
printf("****\n");
A)判断循环结束的条件不合法 B)是无限循环
C)循环一次也不执行 D)循环只执行一次
答案:
B
评析:
本题定义了一个for循环,循环变量是i,但由于本题并没有设置循环条件,所以循环的条件永远默认为真,即无限次执行循环。
(23)下面程序的输出结果是___________。
unsignedfun(unsignednum)
{ unsignedk=1;
do{
k*=num%lO;
num/=lO;
}while(num);
return(k);
}
main()
{ unsignedn。
26;
printf("%d\n",fun(n));
}
A)0 B)4 c)12 D)无限次循环
答案:
C
评析:
本题定义了一个fun函数,用于num求和,具体执行过程如下:
num=26:
k=k*(num%10)=1*(26%10),所以k=6,num=num/10=2;
num=2:
k=k*(num%10)=6*(2%10),所以k=12,num=num/lO=O;
num=O:
while条件不成立,所以返回k的值12.
(24)已知字母A的ASCII码值是65,字母a的ASCII码值是97,以下程序_______。
main()
{ chara='A';
intb=20;
printf("%d,%o",(a=a+a,a+b,b),a+'a'-'A',b);
}
A)表达式非法,输出零或不确定值
B)因输出项过多,无输出或输出不确定值
C)输出结果为20,141
D)输出结果为20,141,20
答案:
C
评析:
本题中首先输出逗号表达式"a=a+a,a+b,b"的值,即20。
然后以八进制的形式输出a+'a'-'A'的值为97对应的八进制数141,由于最后一个表达式b没有对应输出格式的输出项表列就不会输出。
(25)C语言函数返回值的类型是由__________决定的。
A)return语句中的表达式类型 B)调用函数的主调函数类型
c)调用函数时临时 D)定义函数时所指定的函数类型
答案:
D
评析:
函数值的类型应当是在定义函数时指定的。
在定义函数时对函数值说明的类型一般应该和return语句中的表达式类型一致,如果不_致,则以函数类型为准,即函数类型决定返回值的类型。
2
一、选择题
(1)~(10)每小题2分,(11)-(50)每小题1分,共60分)
下列各题A)、B)、c)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)下面叙述正确的是________。
A)算法的执行效率与数据的存储结构无关
B)算法的空间复杂度是指算法程序中指令(或语句)的条数
C)算法的有穷性是指算法必须能在执行有限个步骤之后终止
D)算法的时间复杂度是指执行算法程序所需要的时间
答案:
C
评析:
算法的设计可以避开具体的计算机程序设计语言,但算法的实现必须借助程序设计语言中提供的数据类型及其算法。
数据结构和算法是计算机科学的两个重要支柱。
(2)以下数据结构属于非线性数据结构的________。
A)队列 B)线性表 C)二叉树 D)栈
答案:
C
评析:
线性表、栈和队列等数据结构所表达和处理的数据以线性结构为组织形式。
栈又称后进先出表(LastInFirstOut);队列又称先进先出表(First:
InFirstOut)。
二叉树的数据结构是树型结构,结构中数据元素之间存在着一对多的关系,因此它是一种非线性数据结构。
(3)在一棵二叉树上第8层的结点数最多是________。
A)8 B)16 C)128 D)256
答案:
C
评析:
根据二叉树的性质:
二叉树第i(i≥1)层上至多有2i-1个结点。
得到第8层的结点数最多是128。
(4)下面描述中,不符合结构化程序设计风格的是________。
A)使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑
B)自顶向下
C)注重提高程序的执行效率
D)限制使用goto语句
答案:
C
评析:
结构化程序设计方法的四条原则是:
1.自项向下;2.逐步求精;3.模块化;4.限制使用goto语句。
(5)下面概念中,不属于面向对象方法的是________。
A)对象、消息 B)继承、多态 c)类、封装 D)过程调用
答案:
D
评析:
面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。
面向对象方法从对象出发,发展出对象、类、消息、继承等概念。
(6)在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是________。
A)可行性分析 B)需求分析 c)详细设计 D)程序编码
答案:
B
评析:
软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。
其中需求分析阶段常用的工具是数据流图和数据字典。
7)软件生命周期中所花费用最多的阶段是________。
A)详细设计 B)软件编码 c)软件测试 D)软件维护
答案:
D
评析:
软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。
本题中详细设计、软件编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段。
(8)数据库系统的核心是________。
A)数据模型 B)DBMS C)软件工具 D)数据库
答案:
B
评析:
数据库管理系统DBMS是数据库系统的核心。
DBMS是负责数据库的建立、使用和维护的软件。
DBMS建立在操作系统之上,实施对数据库的统一管理和控制。
用户使用的各种数据库命令以及应用程序的执行,最终都必须通过DBMS。
(9)下列叙述中正确的________。
A)数据处理是将信息转化为数据的过程
B)数据库设计是指设计数据库管理系统
c)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字
D)关系中的每列称为元组,一个元组就是一个字段
答案:
C
评析:
数据处理是指将数据转换成信息的过程,故选项A叙述错误;设计数据库的目的实质上是设计出满足实际应用需求的实际关系模型;关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性,对应存储文件中的字段,故D选项叙述错误。
(10)下列模式中,________是用户模式。
A)内模式 B)外模式 C)概念模式 D)逻辑模式
答案:
B
评析: