收藏 分享(赏)

二级(C语言程序设计)考试大纲.doc

上传人:dzzj200808 文档编号:2608098 上传时间:2018-09-23 格式:DOC 页数:44 大小:337.50KB
下载 相关 举报
二级(C语言程序设计)考试大纲.doc_第1页
第1页 / 共44页
二级(C语言程序设计)考试大纲.doc_第2页
第2页 / 共44页
二级(C语言程序设计)考试大纲.doc_第3页
第3页 / 共44页
二级(C语言程序设计)考试大纲.doc_第4页
第4页 / 共44页
二级(C语言程序设计)考试大纲.doc_第5页
第5页 / 共44页
点击查看更多>>
资源描述

1、C 语言全国计算机等级( 二级) 考试指导第一章 二级(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 语言程序设计(C+语言程序设计、Java 语言程序设计、Visual Basic 语言程序设计、Visual FoxPro 数据库程序设计或 Acc

4、ess 数据库程序设计)的笔试部分合为一张试卷。公共基础知识部分占全卷的 30 分。2公共基础知识的 10 道选择题和 5 道填空题。C 语言程序设计基本要求1. 熟悉 TURBO C 集成环境。2. 熟练掌握结构化程序设计的方法,具有良好的程序设计风格。3. 掌握程序设计中简单的数据结构和算法。4. TURBO C 的集成环境下,能够编写简单的 C 程序,并具有基本的纠错和调试程序的能力。考试内容一、C 语言的结构1序的构成,MAIN 函数和其他函数。2头文件,数据说明,函数的开始和结束标志。3源程序的书写格式。4C 语言的风格。二、数据类型及其运算1C 的数据类型(基本类型,指针类型,空类

5、型)及其定义方法。2C 运算的种类、运算优先级和结合性。3不同类型数据间的转换与运算。4C 表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。三、基本语句1表达式语句,空语句,复合语句。2数据的输入与输出,输入输出函数的调用。3复合语句。4Goto 语句和语句标号的使用。四、选择结构程序设计1用 if 语句实现选择结构。2用 switch 语句实现多分支选择结构。3选择结构的嵌套五、循环结构程序设计1For 循环结构。2While 和 do while 循环结构。3Continue 与聚合 break 语句。4循环的嵌套。六、数组的定义和引用1一维

6、数组合多维数组的定义、初始化和引用。2字符串与字符数组。七、函数1库函数的正确调用。2函数的定义方法。3函数的类型和返回值。4形式参数与实在参数,参数值得传递。5函数的正确调用,嵌套调用,递归调用。6局部变量和全局变量。7变量的存储类别(自动,静态,寄存器,外部) ,变量的作用域和生存期。8内部函数与外部函数。八、编译预处理1宏定义:不带参数的宏定义;带参数的宏定义。2 “文件包含”处理。九、指针1指针与指针变量的概念,指针与地址预算符。2变量、数组、字符串、函数、结构体的指针以及指向变量、数组、字符串、函数、结构体的指针变量。通过指针引用以上各类型数据。3用指针作函数参数。4返回指针值得指针

7、函数。5指针数组,指向指针的指针,main 函数的命令行参数。十、结构体(即“结构” )与孔用体(即“联合” )1结构体和公用体类型数据的定义方法和引用方法。2用指针和结构体构成链表,单向链表的建立、输出、删除与插入。十一、位运算1位运算符的含义及使用。2简单的位运算。十二、文件操作1只要求缓冲文件系统(即高级磁盘 I/O 系统) ,对非标准缓冲文件系统(即低级磁盘I/O 系统)不要求。2文件类型指针(FILE 类型指针) 。3文件的打开与关闭(FOPEN,FCLOSE) 。4文件的读写(FPRTC,FGETC,FPUTS,FGETS,FREAD,FWRITE,FPRINTF,FSCANF 函

8、数) 。5文件的定位(REWIND,FSEEK 函数) 。考试方式1笔试:120 分钟,满分 100 分,其中含公共基础知识部分的 30 分。2上机:60 分钟,满分 100 分。第二章 全国计算机等级考试(二级)C 语言应试方略1怎样学习 C 语言很多人对学习 C 语言感到无从下手,经常问我同一个问题:究竟怎样学习 C 语言?我是一个教师,和很多刚刚起步的人一样,学习的第一个计算机语言就是 C 语言。在多年的教学与编程实践中,我深深的体会到 C 语言对于一个程序设计人员是多么的重要,如果不懂 C 语言,你想写底层程序这几乎听起来很可笑,不懂 C 语言,你想写出优秀高效的程序,这简直就是天方夜

9、谭。为什么 C 语言如此重要呢?第一:C 语言语法结构很简洁精妙,写出的程序也很高效,便于描述算法,大多数的程序员愿意使用 C 语言去描述算法本身,所以,如果你想在程序设计方面有所建树,就必须去学它。第二:C 语言能够让你深入系统底层,你知道的操作系统,哪一个不是 C 语言写的?所有的 windows,Unix,Linux,Mac,os/2,没有一个例外,如果你不懂 C 语言,怎么可能深入到这些操作系统当中去呢?更不要说你去写它们的内核程序了。第三:很多新型的语言都是衍生自 C 语言,C+,Java,C#,J#,perl.哪个不是呢?掌握了 C 语言,可以说你就掌握了很多门语言,经过简单的学习

10、,你就可以用这些新型的语言去开发了,由此可见 C 语言是程序设计的重要基础。多说一点:即使现在招聘程序员,考试都是考 C 语言,你想加入 IT 行业,那么就一定要掌握好 C 语言。那么究竟怎样学习 C 语言呢?1)工欲善其事,必先利其器这里介绍几个学习 C 语言必备的东东:一个开发环境,例如 turbo C 2.0,这个曾经占据了 DOS 时代开发程序的大半个江山。但是现在 windows 时代,用 turbo C 感觉不方便,编辑程序起来很吃力,并且没有拖放,更没有函数变量自动感应功能,查询参考资料也不方便。建议使用 Visual C+,这个东西虽然比较大块头,但是一旦安装好了,用起来很方便

11、。一本学习教程,现在 C 语言教材多如牛毛,但推荐大家使用C 语言程序设计谭浩强主编 清华大学出版社,此书编写的很适合初学者,并且内容也很精到。除此以外,还可以借助于辅助学习的软件,毕竟现在是 Window 时代了,学习软件多如牛毛,不象我们当初学习,只有读书做题这么老套。2)葵花宝典学习计算机语言最好的方法是什么?答曰:读程序。没错,读程序是学习 C 语言入门最快,也是最好的方法。如同我,现在学习新的J#,C#等其他语言,不再是抱着书本逐行啃,而是学习它们的例程。当然,对于没有学过任何计算机语言的初学者,最好还是先阅读教程,学习完每一章,都要认真体会这一章的所有概念,然后不放过这一章中提到的

12、所有例程,然后仔细研读程序,直到每一行都理解了,然后找几个编程题目,最好是和例程类似的或一样的,自己试图写出这段已经读懂的程序,不要以为例程你已经读懂了,你就可以写出和它一样的程序,绝对不一定,不相信你就试一试吧,如果写不出来,也不要着急,回过头来再继续研究例程,想想自己为什么写不出来,然后再去写这段程序,反反复复,直到你手到擒来为止,祝贺你,你快入门了。3)登峰造极写程序的最高境界其实就是掌握各种解决问题的手段(数据结构)和解决问题的方法(算法)。是不是写出底层程序就是程序设计高手呢?非也,写底层程序,无非是掌握了硬件的结构,况且硬件和硬件还不一样,要给一个芯片写驱动程序,无非就是掌握这块芯

13、片的各种寄存器及其组合,然后写值读值,仅此而已。这不过是熟悉一些 IO 函数罢了。那么怎样才算精通程序设计呢?举个例子:你面前有 10 个人,找出一个叫“张三”的人,你该怎么办?第一种方法:直接对这 10 个人问:“谁叫张三” 。第 2 种方法:你挨个去问“你是不是张三?” ,直到问到的这个人就是张三。第三种方法:你去挨个问一个人“你认不认识张三,指给我看” 。不要小看这个问题,你说当然会选第一种方法,没错恭喜你答对了,因为这个方法最快,效率最高,但是在程序设计中找到解决问题的最优方法和你用的手段却是考验一个程序员程序设计水平的重要标志,而且是不容易达到的。刚才这个问题类似于数据结构和算法中的

14、:Map 数据结构,穷举查找和折半查找。所以掌握好数据结构和一些常用算法,是登峰造极的必然之路。最后给大家推荐严尉敏的数据结构清华大学出版社,希望每一个想成为程序设计高手的人研读此书。2如何应对新大纲二级考试的公共基础知识从今年初开始,教育部对全国计算机等级考试进行了较大调整。二级考试的笔试包括基础知识和程序设计两部分,其中基础知识占 30 分。二级基础知识考核内容的大变令相当多的考生措手不及,事实上这次改革将基础知识的内容由计算机常识(一级难度)调整为程序开发基础(三级难度) ,很多考生由于掌握考试信息不及时因此没有在 05 年 4 月份的考试中取得好成绩。 新大纲的二级基础知识分为数据结构

15、与算法、程序设计基础、软件工基础、数据库设计基础四部分,下面分别说一下学习重点和方法: 1) 数据结构与算法 数据结构与算法的知识用于提高程序的效率以及对较复杂的问题进行求解。数据结构与算法内容在计算机专业基础课中也属于比较难的一门,学习数据结构与算法的内容必须进行理解,死记硬背是无效的。对于等级考试,数据结构与算法重点的考核点主要在二叉树,同时这也是数据结构与算法的难点,考核形式主要为二叉树的遍历问题(如给图求遍历序列、给前序、中序遍历求后序遍历等) 、二叉树的结点问题(如给出一些条件然后求叶子结点个数) ;还有排序和查找考试中也经常会涉及到,排序主要以计算时间复杂度的形式考核,查找主要以计

16、算最佳/最坏比较次数的方式考核。其余的知识点主要以概念的形式考察,考生需要仔细看书并理解。2) 程序设计基础与软件工程基础 这两部分以概述的形式简介了规范化开发软件的方法。与数据结构不同,这两部分内容主要是记忆性的知识点。程序设计基础的内容与大纲改革前添加了面向对象程序设计的内容,考生可以对数据结构与算法进行几次细读后了解即可;软件工程基础这部分主要考核内容为结构化分析及结构化设计方法(即 SA 及 SD,约占 50%) ,信息量较大,其次是软件测试(约占 20%) ,考生需要将相关的概念及规则背诵,在以后有机会进行程序开发时这些知识可以得到深刻理解。 3) 数据库设计基础 数据库是当前软件处

17、理的信息核心,目前大部分软件都是基于数据库的,因此学习一下数据库知识对程序开发也是很有帮助的。数据结构与算法主要的考核点是关系模型、关系代数及数据库系统的基本概念,其余的知识点了解即可,其中数据库的设计和管理可以结合着软件工程来看,考生会发现这两者有很多相似之处。除了关系代数会考一些简单的计算问题外,其余的都是以概念题的形式考核,考生需要仔细的阅读。 以上为复习二级公共基础的方法,顺便提及一点 02 年版及其以前的公共基础考试用书已不再适用,因此考生在选购教材的时候应当特别注意,应当购买 04 年版的二级公共基础知识教程(指定教材由高等教育出版社出版) ,还有考生在备考时,除了应完成教材中的习

18、题外还应当做一下 05 年 4 月的真题,并且用其估计一下自己的知识欠缺以便更好的进行查漏补缺。3C 语言笔试应试技巧二级 C 语言笔试只有选择题和填空题两种题型。这两种题型的解题方法有所不同,考生在备考时要深化对基本概念和知识点的理解,并注重实践,同时要作一些针对性的练习,特别是历年真题,从中找出规律性的东西以及解题技巧。1)选择题这种类型的题,要求考生从四个待选答案中选择一个正确答案。考生可综合运用直选法,排除法等多种方法。但是这类题目考的知识点往往都比较多且细,容易出错,考生在做这类题时,切忌不加分析,一看就选,从而漏掉正确的答案。如 2003 年 9 月笔试第 49题:有以下程序mai

19、n( ) int a33,p,i;p=for (i=0;i=0或 si=57 而许多考生却把“=” ,“y?x:y; int f2(int x,int y)return xy?y:x; main() int a=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,b),f1(c,d); f=f1(f2(a,b),f2(c,d); g=a+b+c+d-e-f; printf(“%d,%d,%dn“,e,f,g); 程序运行后的输出结果是_。A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,7(27)已有定义:char a=“xyz“,b=x,y, z;,以下叙述中正确的是_。

20、A)数组 a 和 b 的长度相同 B)a 数组长度小于 b 数组长度C)a 数组长度大于 b 数组长度 D)上述说法都不对(28)有以下程序void f(int *x,int *y) int t; t=*x;*x=*y;*y=t; main() int a8=1,2,3,4,5,6,7,8,i,*p,*q; p=a;q= while(p=n;i-) ai+1=ai; main() int i,aN=1,2,3,4,5,6,7,8,9,10; fun(a,2,9); for(i=0;i,则输出结果是_。A)产生错误信息 B)1 0 C)1 2 D)1 0(33)有以下程序prt(int *m,i

21、nt n) int i; for(i=0;i=8) break; if(a%2=1) a+=5;continue; a-=3; printf(“%dn“,b);程序运行后的输出结果是_。A)3 B) 4 C)5 D)6(42)有以下程序main() char s=“159“,*p; p=s; printf(“%c“,*p+); printf(“%c“,*p+); 程序运行后的输出结果是_。A)15 B)16 C)12 D)59(43)有以下函数fun(char *a,char *b) while(*a!=0) b+; return(*a-*b); 该函数的功能是_。A)计算 a 和 b 所指字

22、符串的长度之差B)将 b 所指字符串连接到 a 所指字符串中C)将 b 所指字符串连接到 a 所指字符串后面D)比较 a 和 b 所指字符串的大小(44)有以下程序main() int num44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,i,j; for(i=0;inext=q-next; B)p-next=p-next-next; C)p-next=r; D)p=q-next;(48)以下对结构体类型变量 td 的定义中,错误的是_。A)typedef struct aa B)struct aa int n; int n;float m; float m

23、;AA; td;AA td; struct aa td;C)struct D)struct int n; int n;float m; float m;aa; td;struct aa td; (49)以下与函数 fseek(fp,0L,SEEK_SET)有相同作用的是_。A)feof(fp) B)ftell(fp) C)fgetc(fp) D)rewind(fp)(50)有以下程序#include void WriteStr(char *fn,char *str) FILE *fp; fp=fopen(fn,“w“); fputs(str,fp);fclose(fp); main() Wri

24、teStr(“t1.dat“,“start“); WriteStr(“t1.dat“,“end“); 程序运行后,文件 t1.dat 中的内容是_。A)start B)end C)startend D)endrt二、填空题(每空 2 分,共 40 分)请将每空的正确答案写在【1】至【20】序号的横线上,答在试卷上不得分。(1)某二叉树中度为 2 的结点有 18 个,则该二叉树中有 【1】 个叶子结点。(2)在面向对象方法中,类的实例称为 【2】 。(3)诊断和改正程序中错误的工作通常称为 【3】 。(4)在关系数据库中,把数据表示成二维表,每一个二维表称为 【4】 。(5)问题处理方案的正确而

25、完整的描述称为 【5】 。(6)以下程序运行时,若从键盘输入:10 20 30,输出的结果是 【6】 。main() int i=0,j=0,k=0;scanf(“%d%*d%d“,printf(“%d%d%dn“,i,j,k);(7)以下程序运行后的输出结果是 【7】 。#define S(x) 4*x*x+1main() int i=6,j=8;printf(“%dn“,S(i+j);(8)以下程序运行后的输出结果是 【8】 。main() int a=3, b=4, c=5, t=99;if(b1);printf(“%d %d %dn“,a,b,c);(10)以下程序运行后的输出结果是

26、【10】 。main( ) char c1,c2;for(c1=0,c2=9;c1,则输出结果是 【11】 。main( ) char a, b;a=getchar( ); scanf(“%d“,a=a-A+0; b=b*2;printf(“%c %cn“,a,b);(12)以下程序中,fun 函数的功能是求 3 行 4 列二维数组每行元素中的最大值。请填空。void fun(int,int,int(*)4,int *);main() int a34=12,41,36,28,19,33,15,27,3,27,19,1, b3, i;fun(3, 4, a, b);for(i=0;ik=+i;

27、p+;q-k=i+; q-;q-k=i;for(i=0;i=k B)-k+ C)k%int(f) D)k=f=m(23)设有定义:int a=2,b=3,c=4;,则以下选项中值为 0 的表达式是A)(!a=1)i+) f*=i; for(i=n;i=2;i-) f*=i;(28)设有定义:int n1=0,n2,*p=,以下赋值语句中与 n2=n1;语句等价的是A)*p=*q; B)p=q; C)*p= D)p=*q;(29)若有定义:int x=0, *p=,则语句 printf(“%dn“,*p);的输出结果是A)随机值 B)0 C)x 的地址 D)p 的地址(30)设函数 fun 的定

28、义形式为void fun(char ch, float x ) 则以下对函数 fun 的调用语句中,正确的是A) fun(“abc“,3.0); B) t=fun(D,16.5);C)fun(65,2.8); D)fun(32,32);(31)有以下程序main() int a10=1,2,3,4,5,6,7,8,9,10, *p=printf(“%dn“, *p + *q);程序运行后的输出结果是A)16 B)10 C)8 D)6(32)有以下程序main() char p=a, b, c, q=“abc“;printf(“%d %dn“, sizeof(p),sizeof(q);程序运行后

29、的输出结果是A)4 4 B)3 3 C)3 4 D)4 3(33)有以下程序# define f(x) (x*x)main() int i1, i2;i1=f(8)/f(4) ; i2=f(4+4)/f(2+2) ;printf(“%d, %dn“,i1,i2);程序运行后的输出结果是A)64, 28 B)4, 4 C)4, 3 D)64, 64(34)有以下程序main() char a1=M, a2=m;printf(“%cn“, (a1, a2) ); 以下叙述中正确的是A)程序输出大写字母 M B)程序输出小写字母 mC)格式说明符不足,编译出错 D)程序运行时产生出错信息(35)有以

30、下程序#include main() char c1=1,c2=2;c1=getchar(); c2=getchar(); putchar(c1); putchar(c2); 当运行时输入:a 后,以下叙述正确的是A)变量 c1 被赋予字符 a,c2 被赋予回车符B)程序将等待用户输入第 2 个字符C)变量 c1 被赋予字符 a,c2 中仍是原有字符 2D)变量 c1 被赋予字符 a,c2 中将无确定值(36)有以下程序main() int k=5,n=0;while(k0) switch(k) default : break;case 1 : n+=k;case 2 :case 3 : n+

31、=k;k-; printf(“%dn“,n);程序运行后的输出结果是A)0 B)4 C)6 D)7(37)有以下程序main( ) int a =2,4,6,8,10, y=0, x, *p;p=for(x= 1; xmain() char p=a, b, c, q10=a, b, c;printf(“%d %dn“, strlen(p), strlen(q); 以下叙述中正确的是A)在给 p 和 q 数组置初值时,系统会自动添加字符串结束符,故输出的长度都为 3B)由于 p 数组中没有字符串结束符,长度不能确定;但 q 数组中字符串长度为 3C)由于 q 数组中没有字符串结束符,长度不能确定

32、;但 p 数组中字符串长度为 3D)由于 p 和 q 数组中都没有字符串结束符,故长度都不能确定(42)有以下程序,其中函数 f 的功能是将多个字符串按字典顺序排序#include void f(char *p, int n) char *t; int i,j;for(i=0; i0) t=pi; pi=pj; pj=t; main() char *p5=“abc“,“aabdfg“,“abbd“,“dcdbe“,“cd“;f(p, 5);printf(“%dn“, strlen(p1); 程序运行后的输出结果是A)2 B)3 C)6 D)4(43)有以下程序# include void f(

33、char *s, char *t) char k; k=*s; *s=*t; *t=k; s+; t-;if (*s) f(s, t); main() char str10=“abcdefg“, *p ;p=str+strlen(str)/2+1;f(p, p-2);printf(“%sn“,str); 程序运行后的输出结果是A)abcdefg B)gfedcba C)gbcdefa D)abedcfg(44)有以下程序float f1(float n) return n*n; float f2(float n) return 2*n; main() float (*p1)(float),(*

34、p2)(float),(*t)(float), y1, y2;p1=f1; p2=f2;y1=p2( p1(2.0) );t = p1; p1=p2; p2 = t;y2=p2( p1(2.0) ); printf(“%3.0f, %3.0fn“,y1,y2); 程序运行后的输出结果是A)8, 16 B)8, 8 C)16, 16 D)4, 8(45)有以下程序int a=2;int f(int n) static int a=3; int t=0;if(n%2) static int a=4; t += a+; else static int a=5; t += a+; return t+a

35、+;main() int s=a, i;for( i=0; istruct STU int num; float TotalScore; ;void f(struct STU p) struct STU s2=20044,550,20045,537;p.num = s1.num; p.TotalScore = s1.TotalScore; main( ) struct STU s2=20041,703,20042,580;f(s0);printf(“%d %3.0fn“, s0.num, s0.TotalScore);程序运行后的输出结果是A)20045 537 B)20044 550 C)2

36、0042 580 D)20041 703(47)有以下程序# include struct STU char name10; int num; ;void f(char *name, int num) struct STU s2=“SunDan“,20044,“Penghua“,20045;num = s0.num;strcpy(name, s0.name); main( ) struct STU s2=“YangSan“,20041,“LiSiGuo“,20042,*p;p= f(p-name, p-num);printf(“%s %dn“, p-name, p-num);程序运行后的输出结果是A)SunDan 20042 B)SunDan 20044C)LiSiGuo 20042 D)YangSan 20041

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报