求2011年3月计算机二级C语言的考试大纲

Python018

求2011年3月计算机二级C语言的考试大纲,第1张

公共基础知识

基本要求

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语言(VisualBASIC、Visual FoxPro、Java、Access、Visual C++)的笔试部分合为一张试卷。公共基础部分占全卷的30分。

2、 公共基础知识有10道选择题和5道填空题。

C语言程序设计

基本要求

1.熟悉TURBO C集成环境。

2.熟练掌握结构化程序设计的方法,具有良好的程序设计风格。

3.掌握程序设计中简单的数据结构和算法。

4.TURBO C的集成环境下,能够编写简单的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和do while循环结构。

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,frwite,fprintf,fscanf函数),文件的定位(rewind,fseek函数)。

PS:分为笔试和机试两部份,机试有三道题,一道改错,一道补充,一道综合,笔试中有30分公共基础知识,为数据结构,数据库,网络和电脑常识方面的问题,有70分选择题,30分填空题,难点为数组,指针,也为重点

全国计算机等级考试调整方案

关于二级

考试科目:新增二级Delphi语言程序设计,加上原有的二级C等六个科目,二级共七个科目。二级科目分成两类,一类是语言程序设计(C、C++、Java、Visual Basic、Delphi),另一类是数据库程序设计(Visual FoxPro、Access)。

考核内容:二级定位为程序员,考核内容包括公共基础知识和程序设计。所有科目对基础知识作统一要求,使用统一的公共基础知识考试大纲和教程。二级公共基础知识在各科笔试中的分值比重为30%(30分)。程序设计部分的比重为70%(70分),主要考查考生对程序设计语言使用和编程调试等基本能力。

考试形式:二级所有科目的考试仍包括笔试和上机考试两部分。二级C笔试时间由120分钟改为90分钟,上机时间由60分钟改为90分钟。所有二级科目的笔试时间统一为90分钟,上机时间统一为90分钟。

系统环境:二级各科目上机考试应用软件为:中文专业版Access 2000、中文专业版Visual Basic 6.0、中文专业版Visual FoxPro 6.0、Visual C++ 6.0,二级C上机应用软件由Turbo C 2.0改为 Visual C++6.0,二级Java由现在的Java JDK 1.4.2改为专用集成开发环境“NetBeans 中国教育考试版2007”(有关网站将提供免费下载),二级Delphi使用Delphi7.0版本。

C语言的考察,在二级中有两道好像是程序设计题,还有些选择题是要求你看的懂程序选择结果的,所以我觉得最起码你要对C语言的语法有所了解,包括变量,常量的定义,作用域等这事经常考的。另外,我不知道你是不是在校学生,在有些学校的考试呢,你到附近的打印店里看看有没有试题买,买一些试题做做对二级考试还是大有好处的,二级考试并不是很难,希望你一举成功

2011年3月计算机等级考试二级C语言笔试:文字版

 一、 选择题

(1)下列关于栈叙述正确的是

A)栈顶元素最先能被删除

B)栈顶元素最后才能被删除

C)栈底元素永远不能被删除

D)以上三种说法都不对

(2)下列叙述中正确的是

A)有一个以上根结点的数据结构不一定是非线性结构

B)只有一个根结点的数据结构不一定是线性结构

C)循环链表是非线性结构

D)双向链表是非线性结构

(3)某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)

A)3 B)4 C)6 D)7

(4)在软件开发中,需求分析阶段产生的主要文档是

A)软件集成测试计划 B)软件详细设计说明书

C)用户手册 D)软件需求规格说明书

(5)结构化程序所要求的基本结构不包括

A)顺序结构 B)GOTO跳转

C)选择(分支)结构 D)重复(循环)结构

(6)下面描述中错误的是

A)系统总体结构图支持软件系统的详细设计

B)软件设计是将软件需求转换为软件表示的过程

C)数据结构与数据库设计是软件设计的任务之一

D)PAD图是软件详细设计的表示工具

(7)负责数据库中查询操作的数据库语言是

A)数据定义语言

B)数据管理语言

C)数据操纵语言

D)数据控制语言

(8)一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是

A)1:1联系 B)1:m联系

C)m:1联系 D)m:n联系

(9)有三个关系R、S和T如下:

则由关系R和S得到关系T的操作是

A)自然连接 B)交 C)除 D)并

(10)定义无符号整数类为UInt,下面可以作为类UInt实例化值的是

A)-369 B)369 C)0.369 D)整数集合{1,2,3,4,5}

(11)计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是

A)C语言程序仅可以编译执行

B)C语言程序仅可以解释执行

C)C语言程序既可以编译执行又可以解释执行

D)以上说法都不对

(12)以下叙述中错误的是

A)C语言的可执行程序是由一系列机器指令构成的

B)用C语言编写的源程序不能直接在计算机上运行

C)通过编译得到的二进制目标程序需要连接才可以运行

D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件

(13)以下选项中不能用作C程序合法常量的是

A)1,234 B)'123'

C)123 D)"\x7G"

(14)以下选项中可用作C程序合法实数的是

A).1e0 B)3.0e0.2

C)E9 D)9.12E

(15)若有定义语句:int a=3,b=2,c=1,以下选项中错误的赋值表达式是

A)a=(b=4)=3 B)a=b=c+1

C)a=(b=4)+c D)a=1+(b=c=4)

(16)有以下程序段

char name[20]

int num

scanf("name=%s num=%d",name&num)

当执行上述程序段,并从键盘输入:name=Lili num=1001<回车>后,name的值为

A)Lili

B)name=Lili

C)Lili num=

D)name=Lili num=1001

(17)if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是

A)必须是逻辑值 B)必须是整数值

C)必须是正数 D)可以是任意合法的数值

(18)有以下程序

#include<stdio>

main()

{ int x=011

printf("%d\n",++x)

}

程序运行后的输出结果是

A)12 B)11 C)10D)9

(19)有以下程序

#include<stdio>

main()

{ int s

scanf("%d",&s)

while(s>0)

{ switch(s)

{ case1:printf("%d",s+5)

case2:printf("%d",s+4)break

case3:printf("%d",s+3)

default:printf("%d",s+1)break

}

scanf("%d",&s)

}

}

运行时,若输入1 2 3 4 5 0<回车>,则输出结果是

A)6566456 B)66656 C)66666 D)6666656

(20)有以下程序段

int i,n

for(i=0i<8i++)

{ n=rand( )%5

switch (n)

{ case 1:

case 3:printf("%d\n",n)break

case 2:

case 4:printf("%d\n",n)continue

case 0:exit(0)

}

printf("%d\n",n)

}

以下关于程序段执行情况的叙述,正确的是

A)for循环语句固定执行8次

B)当产生的随机数n为4时结束循环操作

C)当产生的随机数n为1和2时不做任何操作

D)当产生的随机数n为0时结束程序运行

(21)有以下程序

#include<stdio>

main()

{ char s[]="012xy\08s34f4w2"

int i,n=0

for(i=0s[i]!=0i++)

if(s[i]>='0'&&s[i]<='9') n++

printf("%d\n",n)

}

程序运行后的输出结果是

A)0 B)3 C)7 D)8

(22)若i和k都是int类型变量,有以下for语句

for(i=0,k=-1k=1k++) printf("*****\n")

下面关于语句执行情况的叙述中正确的是

A)循环体执行两次

B)循环体执行一次

C)循环体一次也不执行

D)构成无限循环

(23)有以下程序

#include<stdio>

main()

{ char b,cint i

b='a'c='A'

for(i=0i<6i++)

{ if(i%2) putchar(i+b)

else putchar(i+c)

} printf("\n")

}

程序运行后的输出结果是

A)ABCDEF B)AbCdEf C)aBcDeF D)abcdef

(24)设有定义:double x[10],*p=x,以下能给数组x下标为6的元素读入数据的正确语句是

A)scanf("%f",&x[6]) B)scanf("%lf",*(x+6))

C)scanf("%lf",p+6) D)scanf("%lf",p[6])

(25)有以下程序(说明:字母A的ASCII码值是65)

#include<stdio>

void fun(char *s)

{ while(*s)

{ if(*s%2) printf("%c",*s)

s++

}

}

main()

{ char a[]="BYTE"

fun(a)printf("\n")

}

程序运行后的输出结果是

A)BY B)BT C)YT D) YE

(26)有以下程序段

#include<stdio>

main()

{ …

while( getchar()!='\n')

}

以下叙述中正确的是

A)此while语句将无限循环

B) getchar()不可以出现在while语句的条件表达式中

C)当执行此while语句时,只有按回车键程序才能继续执行

D)当执行此while语句时,按任意键程序就能继续执行

(27)有以下程序

#include<stdio>

main()

{ int x=1,y=0

if(!x) y++

else if(x==0)

if (x) y+=2

else y+=3

printf("%d\n",y)

}

程序运行后的输出结果是

A)3 B)2 C)1 D) 0

(28)若有定义语句:char s[3][10],(*k)[3],*p,则以下赋值语句正确的是

A)p=sB)p=k C)p=s[0] D)k=s

(29)有以下程序

#include<stdio>

void fun(char *c)

{ while(*c)

{ if(*c>='a'&&*c<='z') *c=*c-('a'-'A')

c++

}

}

main()

{ char s[81]

gets(s)fun(s)puts(s):

}

当执行程序时从键盘上输入Hello Beijing<回车>,则程序的输出结果是

A)hello beijing B)Hello Beijing C)HELLO BEIJINGD)hELLO Beijing

(30)以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。

#include<stdio>

#define N 10

void fun(int x[N])

{ int i=0

while(i<>

}

在程序中下划线处应填入的是

A)x+iB)&x[i+1]

C)x+(i++) D)&x[++i]

(31)有以下程序

#include<stdio>

main()

{ char a[30],b[30]

scanf("%s",a)

gets(b)

printf("%s\n %s\n",a,b)

}

程序运行时若输入:

how are you? I am fine<回车>

则输出结果是

A)how are you? B)how

I am fine are you? I am fine

C)how are you? I am fine D)how are you?

(32)设有如下函数定义

int fun(int k)

{ if (k<1) return 0

else if(k==1) return 1

else return fun(k-1)+1

}

若执行调用语句:n=fun(3),则函数fun总共被调用的次数是

A)2 B)3 C)4 D)5

(33)有以下程序

#include<stdio>

int fun (int x,int y)

{ if (x!=y) return ((x+y)2)

else return (x)

}

main()

{ int a=4,b=5,c=6

printf("%d\n",fun(2*a,fun(b,c)))

}

程序运行后的输出结果是

A)3 B)6 C)8 D)12

(34)有以下程序

#include<stdio>

int fun()

{ static int x=1

x*=2

return x

}

main()

{ int i,s=1

for(i=1i<=3i++) s*=fun()

printf("%d\n",s)

}

程序运行后的输出结果是

A)0 B)10 C)30 D)64

(35)有以下程序

#include<stdio>

#define S(x) 4*(x)*x+1

main()

{ int k=5,j=2

printf("%d\n",S(k+j))

}

程序运行后的输出结果是

A)197 B)143 C)33 D)28

(36)设有定义:struct {char mark[12]int num1double num2} t1,t2,若变量均已正确赋初值,则以下语句中错误的是

A)t1=t2 B)t2.num1=t1.num1

C)t2.mark=t1.mark D)t2.num2=t1.num2

(37)有以下程序

#include<stdio>

struct ord

{ int x,y}dt[2]={1,2,3,4}

main()

{

struct ord *p=dt

printf("%d,",++(p->x))printf("%d\n",++(p->y))

}

程序运行后的输出结果是

A)1,2 B)4,1 C)3,4 D)2,3

(38)有以下程序

#include<stdio>

struct S

{ int a,b}data[2]={10,100,20,200}

main()

{ struct S p=data[1]

printf("%d\n",++(p.a))

}

程序运行后的输出结果是

A)10 B)11 C)20 D)21

(39)有以下程序

#include<stdio>

main()

{ unsigned char a=8,c

c=a>>3

printf("%d\n",c)

}

程序运行后的输出结果是

A)32 B)16 C)1 D)0

(40)设fp已定义,执行语句fp=fopen("file","w")后,以下针对文本文件file操作叙述的选项中正确的是

A)写操作结束后可以从头开始读B)只能写不能读

C)可以在原有内容后追加写 D)可以随意读和写

二、填空题

(1)有序线性表能进行二分查找的前提是该线性表必须是 【1】 存储的。

(2)一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为 【2】 。

(3)对软件设计的最小单位(模块或程序单元)进行的测试通常称为 【3】 测试。

(4)实体完整性约束要求关系数据库中元组的 【4】 属性值不能为空。

(5)在关系A(S,SN,D)和关系B(D,CN,NM)中,A的主关键字是S,B的主关键字是D,则称 【5】 是关系A的外码。

(6)以下程序运行后的输出结果是 【6】 。

#include<stdio>

main()

{ int a

a=(int)((double)(3/2)+0.5+(int)1.99*2)

printf("%d\n",a)

}

(7)有以下程序

#include<stdio>

main()

{ int x

scanf("%d",&x)

if(x>15) printf("%d",x-5)

if(x>10) printf("%d",x)

if(x>5) printf("%d\n",x+5)

}

若程序运行时从键盘输入12<回车>,则输出结果为 【7】 。

(8)有以下程序(说明:字符0的ASCII码值为48)

#include<stdio>

main()

{ char c1,c2

scanf("%d",&c1)

c2=c1+9

printf("%c%c\n",c1,c2)

}

若程序运行时从键盘输入48<回车>,则输出结果为 【8】 。

(9)有以下函数

void prt(char ch,int n)

{ int i

for(i=1i<=ni++)

printf(i%6!=0?"%c":"%c\n",ch)

}

执行调用语句prt('*',24)后,函数共输出了 【9】 行*号。

(10)以下程序运行后的输出结果是 【10】 。

#include<stdio>

main()

{ int x=10,y=20,t=0

if(x==y)t=xx=yy=t

printf("%d %d\n",x,y)

}

(11)己知a所指的数组中有N个元素。函数fun的功能是,将下标k(k>0)开始的后续元素全部向前移动一个位置。请填空。

void fun(int a[N],int k)

{ int i

for(i=ki

}

(12)有以下程序,请在 【12】 处填写正确语句,使程序可正常编译运行。

#include<stdio>

【12】

main()

{ double x,y,(*p)()

scanf("%lf%lf",&x,&y)

p=avg

printf("%f\n",(*p)(x,y))

}

double avg(double a,double b)

{ return((a+b)/2)}

(13)以下程序运行后的输出结果是 【13】 。

#include<stdio>

main()

{ int i,n[5]={0}

for(i=1i<=4i++)

{ n[i]==n[i-1]*2+1printf("%d",n[i])}

printf("\n")

}

(14)以下程序运行后的输出结果是 【14】 。

#include

#include

#include

main()

{ char *pint i

p=(char *)malloc(sizeof(char)*20)

strcpy(p,"welcome")

for(i=6i>=0i--) putchar(*(p+i))

printf("\n-")free(p)

}

(15)以下程序运行后的输出结果是 【15】 。

#include<stdio>

main()

{ FILE *fpint x[6]={1,2,3,4,5,6},i

fp=fopen("test.dat","wb")

fwrite(x,sizeof(int),3,fp)

rewind(fp)

fread(x,sizeof(int),3,fp)

for(i=0i<6i++) printf("%d",x[i])

printf("\n")

fclose(fp)

}