1、1 / 792011 年计算机二级 C 考试大纲公共基础知识基本要求1、 掌握算法的基本概念。2、 掌握基本数据结构及其操作。3、 掌握基本排序和查找算法。4、 掌握逐步求精的结构化程序设计方法。5、 掌握软件工程的基本方法,具有初步应用相关技术进行软件开发的能力。6、 掌握数据的基本知识,了解关系数据的设计。考试内容一、基本数据结构与算法1、 算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度) 。2、 数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;线性结构与非线性结构的概念。3、 线性表的定义;线性表的数序存储结构及其插入与删除运算。4、 栈和列队的定义;栈和队
2、列的数序存储结构及其基本运算。5、 线性单列表、双向链表与循环链表的结构及其基本运算。6、 树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。7、 顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,插入类排序) 。二、程序设计基础1、 程序设计方法与风格。2、 结构化程序设计。3、 面向对象的程序设计方法,对象,方法,属性及继承与多态性。三、软件工程基础。1、 软件工程的基本概念,软件生命周戎概念,软件工具与软件开发环境。2、 结构化分析方法,数据流图,数据字典,软件需求规格说明书。3、 结构化设计方法,总体设计与详细设计。4、 软件测试的方法,白盒测试与黑盒
3、测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。5、 程序的调试,静态调试与动态调试。四、数据库设计基础1、 数据库的基本概念:数据库、数据库管理系统、数据库系统。2、 数据模型,试题联系模型及 E-R 图,从 E-R 图导出关系数据模型。3、 关系代数运算,包括集合运算及选择、投影、连接运算,数据库规范化理论。4、 数据库设计方法和步骤:需求分析、概念设计、逻辑设计和物理设计的相关策略。考试方式1、 公共基础的考试方式为笔试,与 C 语言的笔试部分合为一张试卷。公共基础部分占全卷的 30 分。2、 公共基础只是 10 道选择题和 5 道填空题。C 语言程序设计基本要求1、
4、熟悉 TURBO C 集成环境。2 / 792、 熟悉掌握结构化程序设计的方法,具有良好的程序设计风格。3、 掌握程序设计中的简单的数据结构和算法。4、 TURBO C 的集成环境下,能够编写简单的 C 程序,并具有几百呢的纠错和调试程序能力。考试内容一、C 语言的结构1、 程序的构成,MAIN 函数和其他函数。2、 头文件,数据说明,函数的开始和结束标志。3、 源程序的书写格式。4、 C 语言的风格。二、数据类型及其运算1、 C 的数据类型(基本类型,构造类型,指针类型,空类型)及其定义方法。2、 C 运算符的种类、运算优先级和结合性。3、 不同类型数据间的转换与运算。4、 C 表达式类型(
5、赋值表达式、算术表达式、关系表达式、逻辑表达式、条件表达式、逗号表达式)和求值规则。三、基本语句、1、 表达式语句,空语句,复合语句。2、 数据的输入和输出,输入输出函数的调用。3、 复合语句。4、 GOTO 语句和语句标号的使用。四、选择结构程序设计1、 用 if 语句实现选择结构。2、 用 switch 语句实现错只选择结构。3、 选择结构的奇嵌套。五、循环结构程序设计1、 for 循环结构。2、 while 和 do while 循环结构。3、 continue 语句和 break 语句。4、 循环的嵌套。六、数组的定义和引用1、 一位数组和多维数组的定义、初始化和引用。2、 字符串和自
6、发数组。七、函数3 / 791、 库函数的正确调用。2、 函数的定义方法。3、 函数的类型和返回值。4、 形式参数和实在参数,参数值的传递。5、 函数的正确调用,嵌套调用,递归调用。6、 局部变量和全局变量。7、 变量的存储类别(自动、静态、寄存器、外部) ,变量的作用域和生存期。8、 内部函数和外部函数。八、编译预处理1、 宏定义:不带参数的宏定义;带参数的宏定义。2、 “文件包含”处理。九、指针1、 指针与指针变量的概念,指针与地质运算符。2、 变量、数组、字符串、函数、结构体的指针以及指向变量、数组、字符串、函数、结构体、的指针变量。通过指针引用以上类型数据。3、 用指针作函数参数。4、
7、 返回指针值的指针函数。5、 指针数组、指向指针的指针,MAIN 函数的命令行参数。十、结构体(即“结构” )用共用体(即“联合” )1、 结构体和共用体类型数据定义方法和引用方法。2、 用指针和结构体构成链表,单向链表的建立、输出、删除和插入。十一、位运算1、 位运算符的含义及使用。2、 简单的位运算。十二、文件操作只要求缓冲文件系统(即高级磁盘 I/O 系统) ,对非标准缓冲文件系统(即低级磁盘I/O 系统)不要求。1、 文件类型指针(FILE 类型指针) 。2、 文件的打开与关闭(fopen,fclose).3、 文件的读写(fputc,fgetc,fputs,fgets,fread,f
8、rwite,fprintf,fsanf 函数) ,文件的定位(rewind,fseek 函数) 。考试方式1、 笔试:120 分钟,满分 100 分,其中含公共基础知识部分 30 分。2、 上级:60 分钟,满分 100 分。4 / 792008 年 4 月全国计算机等级考试二级笔试试卷及答案 C 语言程序设计(考试时间 90 分钟,满分 100 分)一、选择题(共 70 分)下列各题 A) ,B) ,C) ,D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)程序流程图中指有箭头的线段表示的是 A)图元关系 B)数据流 C)控制流 D)调用关系
9、 (2)结构化程序设计的基本原则不包括 A)多态性 B)自顶向下 C)模块化 D)逐步求精 (3)软件设计中模块划分应遵循的准则是 A)低内聚低耦合 B)高内聚低耦合 C)低内聚高耦合 D)高内聚高耦合 (4)在软件开发中,需求分析阶段产生的主要文档是 A)可行性分析报告 B)软件需求规格说明书 C)概要设计说明书 D)集成测试计划 (5)算法的有穷性是指 A)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的 C)算法程序的长度是有限的 D)算法只能被有限的用户使用 (6)对长度为 n 的线性表排序,在最坏情况下,比较次数不是 n(n-1)/2 的排序方法是 A)快速排序 B)冒泡
10、排序 C)直接插入排序 D)堆排序 (7)下列关于栈的叙述正确的是 A)栈按“先进先出”组织数据 B)栈按“先进后出”组织数据 C)只能在栈底插入数据 D)不能删除数据 (8)在数据库设计中,将 E-R 图转换成关系数据模型的过程属于C A)需求分析阶段 B)概念设计阶段 C)逻辑设计阶段 D)物理设计阶段 (9)有三个关系 R、S 和 T 如下: T 5 / 79RSB C D a 0 k1 b 1 n1 B C D f 3 h2 a 0 k1 n 2 x1有关系 R 和 S 通过运算得到关系 T,则所使用的运算为 A)并 B)自然连接 C)笛卡尔积 D)交 (10 )设有表示学生选课的三张
11、表,学生 S(学号,姓名,性别,年龄,身份证号) ,课程 C(课号,课名) ,选课 SC(学号,课号,成绩) ,则表 SC 的关键字(键或码)为 A)课号,成绩 B)学号,成绩 C)学号,课号 D) 学号,姓名,成绩 (11 )以下叙述中正确的是 A)C 程序中的注释只能出现在程序的开始位置和语句的后面 B)C 程序书写格式严格,要求一行内只能写一个语句 C)C 程序书写格式自由,一个语句可以写在多行上 D)用 C 语言编写的程序只能放在一个程序文件中 (12 )以下选项中不合法的标识符是 B C D a 0 k1 A)print B)FOR C) B)char A=65+1,b=b; C)f
12、loat a=1,*b= D)double a=0.0,b=1.1;(16)有以下程序段 char ch; int k; ch=a; k=12; printf(“%c,%d,“,ch,ch,k); printf(“k=%dn“,k);已知字符 a 的 ASCll 十进制代码为 97,则执行上述程序段后输出结果是 A)因变量类型与格式描述符的类型不匹配输出无定值 B)输出项与格式描述符个数不符,输出为零值或不定值 C)a,97,12k=12 D)a,97,k=12(17)已知字母 A 的 ASC代码值为 65,若变量 kk 为 char 型,以下不能正确判断出 kk 中的值为大写字母的表达式是
13、A)kk=A c=a; if(c!=a) c=b; printf(“%d,%d,%dn“,a,b,c);其输出结果是 A)程序段有语法错 B)3,5 , 3 C)3,5,5 D)3,5,7 (20 )有以下程序 #include main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+; b+; break; case 3: a+; b+; printf(“a=%d,b=%dn”,a,b); 程序的运行结果是 A)a=1,b=0 B)a=2,b
14、=2 C)a=1,b=1 D) a=2,b=1(21 )有以下程序 #include main() int x=8; for( ; x0; x-) if(x%3) printf(“%d,”,x-); continue; printf(“%d,”,-x); 程序的运行结果是 A)7, 4,2 B)8 ,7 ,5,2C)9,7,6,4 D)8,5,4 , 2(22 )以下不构成无限循环的语句或者语句组是 A)n=0; 7 / 79B)n=0; do+n;while(n main() int a =1,2,3,4,y, *p= -p; y= *p; printf(“y=%dn”,y); 程序的运行结
15、果是 A)y=0 B)y=1 C)y=2 D)y=3(24 )以下错误的定义语句是 A)int x3=0,1,1,2,3; B)int x43=1,2,3,1,2,3,1,2,3,1,2,3;C)int x4=1,2,3,1,2,3,1,2,3,1,2,3;D) int x3=1,2,3,4;(25 )设有如下程序段 char s20= “Bejing”,*p; p=s; 则执行 p=s;语句后,以下叙述正确的是 A)可以用*p 表示 s0 B)s 数组中元素的个数和 p 所指字符串长度相等 C)s 和 p 都是指针变量 D)数组 s 中的内容和指针变量 p 中的内容相等 (26 )若有定义:
16、int a23;,以下选项中对 a 数组元素正确引用的是 A)a2!1 B)a23 C)a03 D)a12 !1 (27 )有定义语句:char s10;,若要从终端给 s 输入 5 个字符,错误的输入语句是 A)gets( B)scanf(“%s”,s+1);C)gets(s); D)scanf(“%s”,s1);(28 )以下叙述中错误的是 A)在程序中凡是以“”开始的语句行都是预处理命令行 B)预处理命令行的最后不能以分号表示结束 C)#define MAX 是合法的宏定义命令行 D) C 程序对预处理命令行的处理是在程序执行的过程中进行的 (29 )以下结构体类型说明和变量定义中正确的
17、是 A)typedef struct B)struct REC; int n; char c;REC; int n; char c; REC t1,t2; REC t1,t2; C)typedef struct REC ; D)struct int n=0; char c=A;t1,t2; int n;char c;REC t1,t2;8 / 79(30 )以下叙述中错误的是 A)gets 函数用于从终端读入字符串 B)getchar 函数用于从磁盘文件读入字符 C)fputs 函数用于把字符串输出到文件 D)fwrite 函数用于以二进制形式输出数据到文件 (31)有以下程序 #includ
18、e main() int s12=1,2,3,4,4,3,2,1,1,1,2,3,c5=0,i; for(i=0;i void fun(int *s,int nl,int n2) int i,j,t; i=nl; j=n2; while(i #include void fun(char *s ,int n) char *t; int i,j; for(i=0;istrlen(sj) t=si;si=sj;sj=t; main() char *ss=“bcc”,”bbcc”,”xy”,”aaaacc”,”aabcc”; fun(ss,5); printf(“%s,%sn”,ss0,ss4); 程
19、序的运行结果是 9 / 79A)xy,aaaacc B)aaaacc,xy C)bcc,aabcc D)aabcc,bcc (34)有以下程序 #include int f(int x) int y; if(x=0|x=1) return (3); y=x*x-f(x-2); return y; main() int z; z=f(3); printf(“%dn”,z); 程序的运行结果是 A)0 B)9 C)6 D)8(35) 有以下程序 #include void fun(char *a,char *b) while(*a=*) a+; while(*b=*a) b+;a+; main()
20、 char *s=”*a*b*”,t80; fun(s,t); puts(t); 程序的运行结果是 A)*a*b B) a*b C) a*b* D) ab (36) 有以程序 #include #include typedef struct char name9; char sex; float score2; STU; void 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 main() FILE *fp; int a10=1,2,3,i,n; fp=fop
21、en(“dl.dat”,”w”); for(i=0;i3;i+) fprintf(fp,”%d”,ai); fprintf(fp,”n”); fclose(fp); fp=fopen(“dl.dat”,”r”); fscanf(fp,”%d”, fclose(fp); printf(“%dn”,n); 程序的运行结果是 A)12300 B) 123 C) 1 D) 321(38)变量 a 中的数据用二进制表示的形式是 01011101,变量 b 中的数据用二进制表示的形式是11110000。若要求将 a 的高 4 位取反,低 4 位不变,所要执行的运算是 A)ab B)a|b C)a,则以下叙述正确的是 A)f 是基类型为 int 的指针变量 B) f 是指向函数的指针变量,该函数具有一个 int 类型的形参 C) f 是指向 int 类型一维数组的指针变量 D) f 是函数名,该函数的返回值是基类型为 int 类型的地址二、填空题(每空 2 分,共 30 分)请将每一个空的正确答案些在答题卡【1】至【15】序号的横线上,答在试卷上不得分。 (1)测试用例包括输入值集和【1】 值集。(2)深度为 5 的满二叉树有 【2】个叶子结点。