二级强化C语言复习资料文档格式.docx

上传人:b****3 文档编号:16448825 上传时间:2022-11-23 格式:DOCX 页数:53 大小:75.98KB
下载 相关 举报
二级强化C语言复习资料文档格式.docx_第1页
第1页 / 共53页
二级强化C语言复习资料文档格式.docx_第2页
第2页 / 共53页
二级强化C语言复习资料文档格式.docx_第3页
第3页 / 共53页
二级强化C语言复习资料文档格式.docx_第4页
第4页 / 共53页
二级强化C语言复习资料文档格式.docx_第5页
第5页 / 共53页
点击查看更多>>
下载资源
资源描述

二级强化C语言复习资料文档格式.docx

《二级强化C语言复习资料文档格式.docx》由会员分享,可在线阅读,更多相关《二级强化C语言复习资料文档格式.docx(53页珍藏版)》请在冰豆网上搜索。

二级强化C语言复习资料文档格式.docx

基本要求

1.熟练掌握C语言的基本知识;

2.具备基本的C程序设计能力,能熟练地阅读、理解和编制简短的C程序;

3.了解面向对象程序设计的基本概念。

基本内容

一、数据的定义

数据的定义包括数据类型和存储类别。

1、基本类型

基本类型指整型、实型和字符型。

(1)常量

熟练掌握各种表示形式的整数、实数、和字符(串)常量,符号常量的定义和使用。

包括整数的十进制、八进制和十六进制的表示形式、长整型常量的表示形式,实数的浮点表示法和科学记数法,字符的转义序列,常用符号常量的含义(如NUCLEON等)

(2)变量

熟练掌握变量的定义和初始化。

2、构造类型

构造类型包括数组和结构。

(1)数组

熟练掌握一维和二维数组的定义和初始化,数组元素的引用。

包括一维字符数组和字符串,二维字符数组和字符串数组。

(2)结构

熟练掌握结构类型的定义,结构变量的定义和初始化,结构变量成员的引用。

3、指针

(1)熟练掌握指针和地址的概念

(2)熟练掌握指针变量的定义和初始化

(3)熟练掌握通过指针引用指向实体

4、构造类型和指针类型的混合定义及应用

(1)熟练掌握指针、数组和地址间的关系

(2)熟练掌握指针数组

(3)熟练掌握结构数组

(4)熟练掌握结构指针

(5)掌握结构中含指针或数组

(6)掌握嵌套结构

(7)掌握指向指针的指针(二级)

(8)单向链表

掌握单向链表的建立和遍历

了解插入和删除单向链表中的一个节点

5、空类型

掌握空类型的定义和使用

6、变量的存储类别、作用域和生存期

(1)掌握变量的存储类别

auto自动型、static静态型、extern外部参照型

(2)掌握全局变量和局部变量

注意区分:

自动局部变量和静态局部变量、全局变量和静态全局变量、外部变量

二、运算及流程控制

1、基本运算

熟练掌握运算符的功能

熟练掌握运算符的优先级、结合性和目数

熟练掌握隐式类型转换和强制类型转换

2、表达式

熟练掌握各类表达式的组成规则和计算过程

3、语句

(1)熟练掌握表达式语句、空语句、复合语句;

(2)熟练掌握简单控制语句(break、continue、return);

(3)熟练掌握选择控制语句(ifswitch)

(4)熟练掌握重复控制语句(for、while、do—while);

三、程序结构和函数

1、程序结构

熟练掌握main函数与其他函数之间的关系

包括标准库函数和自定义函数

2、函数的定义

(1)熟练掌握函数定义的ANSIC格式

(2)熟练掌握函数的参数(形式参数和实在参数)及参数传递

包括指针作为函数的参数

(3)熟练掌握函数的返回值

包括指针作为函数的返回值

3、函数的调用

(1)函数调用的一般格式

熟练掌握通过函数名调用函数,了解通过函数指针调用函数

(2)掌握函数的嵌套调用和递归调用

(3)熟练掌握标准库函数的调用

常用数学函数:

cos、sqrt、pow、exp、fabs、log、log10等

常用字符函数:

isalnum、isalpha、isdigit、islower、toupper等

常用字符串函数:

strcpy、strcmp、strcat、strlen等

四、数据的输入和输出

1、文件

熟练掌握文件的基本概念

2、标准文件的输入和输出

熟练掌握常用输入输出函数:

scanf、printf、getchar、putchar、gets、puts等

3、缓冲文件系统(文本文件)

(1)熟练掌握文件的打开和关闭

常用函数:

fopen和close

(2)熟练掌握文件的基本读写操作

fscanf、fprintf、fgetc、fputc、fgets、fputs等

(3)熟练掌握文件的状态检测

feof等

五、编译预处理

1、熟练掌握编译预处理的基本概念

2、掌握宏定义

3、掌握文件包含

六、面向对象程序设计初步

1、掌握类、对象和面向对象程序设计的基本概念

2、了解类的定义

包括类的成员函数和数据成员

七、常用算法

以下算法针对本大纲中列出的各种数据结构

1、分类(排序)算法

冒泡、选择、插入

2、检索(查找)算法

(1)无序数据序列的查找(见遍历算法)

(2)有序数据序列的查找:

二分法

3、遍历算法

(1)一维数组和二维数组的遍历

(2)单向链表的遍历

(3)文件的遍历

4、其它基本算法

递推法、穷举法,二分法、牛顿法求方程根,梯形法求定积分等。

江苏省计算机等级考试(二级C语言)考点分析

经过本人多年来对江苏省计算机等级考试真题的研究,总结出以下考点会经常考到:

一、宏定义

二级考试必考的,必须让学生明白:

宏替换只是原样替换。

(1)2002年秋填空第7题

#defineN3

#defineY(n)((N+1)*n)

则执行语句“z=2*(N+Y(5+1));

”后,z的值是_______。

替换时原样替换后的式子为:

z=2*(3+((3+1)*5+1));

(2)2005年春填空第10题

#include<

stdio.h>

#defineADD(x,y)x+y

main()

{inta=15,b=10,c=20,d=5;

printf(“%d\n”,ADD(a,b)/ADD(c,d));

上面程序输出结果为_________。

二、递归应用

(1)2000年秋填空第5题

{ints,p[9]={1,2,3,4,5,6,7,8,9};

printf(“\n%d”,add(p,5));

}

add(int*p,intn)

{if(n==1)return*p;

elsereturn*p+add(p+1,n-1);

程序输出结果是________。

结果为:

15

(2)2000年秋填空第8题

fun(intn,int*s)

{intf1,f2;

if(n==1||n==2)*s=1;

else

{fun(n-1,&

f1);

fun(n-2,&

f2);

*s=2*f1+f2+1;

printf(“\n%d,%d”,f1,f2);

}

{intx;

fun(4,&

x);

printf(“\nx=%d”,x);

程序运行时输出的第一行是_________,第二行是________,最后一行是________。

答案:

1,14,1x=10

(3)2001年春填空第4题

以下程序输出结果是________

{printf(“%d”,fun(5));

fun(intn)

{if(n==1)return1;

returnn-fun(n-1);

3

(4)2001年春填空第12题

以下程序实现将a数组中后8个元素从大到小排序的功能

voidsort(int*x,intn)

{inta[12]={5,3,7,4,2,9,8,32,54,21,6,43},k;

sort(______,8);

for(k=0;

k<

12;

k++)printf(“%d”,a[k]);

{intj,t;

if(n==1)return;

for(j=1;

j<

n;

j++)

if(_______)

{t=x[0];

x[0]=x[j];

x[j]=t;

sort(x+1,________);

本题结合了冒泡排序法,第一个空填:

a+4;

第二个空填:

x[0]<

x[j];

第三个空填:

n-1

(5)2001年春填空第8题

以下程序运行时第一行输出________,第二行输出________。

voidrev(int*p,intn)

{intt;

if(n>

1)

{t=p[0];

[0]=p[n-1];

p[n-1]=t;

rev(p+1,n-2);

{intj,a[5]={1,2,3,4,5};

rev(a+1,4);

for(j=0;

5;

j++)printf(“%d”,a[j]);

printf(“\n”;

rev(a,3);

输出结果:

1543245132

(6)2002年秋填空题第11题(P7-11)

{inta[3][3],i,j;

numlist(&

a[0][0],9);

for(i=0;

i<

3;

i++)

{for(j=0;

j++)printf(“%d,”,a[i][j]);

printf(“\n”);

numlist(int*p,intn)

{inti;

i++)p[i]=num(i);

num(intn);

{if(n==0)return1;

returnnum(n-1)*2+1;

程序运行时输出的第一行是:

1,3,7

(7)2003年春填空题第11题(P17-11)

longfunc(longx)

{if(x<

100)returnx%10;

elsereturnfunc(x/100)*10+x%10;

{printf(“Theresultis:

%ld\n”,func(132645));

程序运行结果是Theresultis:

365

(8)2003年秋填空题第11题(P26-11)

voidfun(int*p1,int*p2);

{inti,a[6]={1,2,3,4,5,6};

fun(a,a+5);

i++)printf(“%2d”,a[i]);

voidfun(int*p1,int*p2)

if(p1<

p2)

{t=*p1;

p1=*p2;

*p2=t;

fun(p1+=2,p2-=2);

}

程序运行结果是624351

(9)2004年春(P37-11)

voidf(inta[],intn,intx,int*c);

{inta[10]={1,3,5,2,3,5,3,7,4,1},t=0;

f(a,10,5,&

t);

printf(“%d”,t);

voidf(inta[],intn,intx,int*c)

{if(n==0)return;

if(a[0]>

=x)(*c)++;

f(a+1,n-1,x,c);

程序运行结果是3

(10)2004年秋(P52-14)

本例结合了二分法求方程的根。

见“方程求根”

(11)P68-14

本例结合了牛顿迭代法求方程的根。

三、二维数组

(1)2004年秋填空第12题(P51-12)

以下程序运行时输出结果的第一行是________,第二行是______,第三行是________。

#defineN3

{inti,j,k=1,a[N][N]={0};

i<

N/2+1;

{for(j=0;

=i;

j++)a[j][i-j]=k++;

for(;

2*N;

{for(j=i+1-N;

=N-1;

N;

j++)printf(“%4d”,a[i][j]);

124357689

(2)2005年春填空第12题(P66-12)

以下程序运行时输出结果的第二行为______,第四行为______,第六行_______。

voidchange(ints[3][3],intd)

{inti,j,k;

if(d==0)

{for(i=0;

for(j=i+1;

j<

j++){k=s[i][j];

s[i][j]=s[j][i];

s[j][i]=k;

3-i;

s[i][j]=s[2-j][2-i];

s[2-j][2-i]=k;

{ints[3][3]={1,2,3,4,5,6,7,8,9},i,j,k,n;

change(s,0);

{for(j=0;

j++)printf(“%4d”,s[i][j]);

change(s,1);

for(i=0;

258987321

四、链表应用

(1)2003年秋填空第17题(P30-17)

设有一个线性单链表的结点定义如下:

structnode

{intd;

structnode*next;

};

函数intcopy_dellist(structnode*head,intx)的功能是:

将head指向的单链表中存储的所有整数从小到大依次复制到x指向的整形数组中并撤消该链表;

函数返回复制到x数组中的整数个数。

算法:

找出链表中数值最小的结点,将其值存储到x数组中,再将该结点从链表中删除,重复以上操作直到链表为空为止。

intcopy_dellist(structnode*head,intx)

{structnoe*pk,*pj,*pm,*pn;

intdata,k=0;

while(head!

=0)

{pk=head;

data=pk->

d;

pn=pk;

while(________!

{pj=pk->

next;

if(_______<

data){data-pj->

pm=pk;

pn=pj;

pk=pj;

x[k++]=pn->

if(_________)pm->

next=pn->

elsehead=pn->

free(pn);

_____________;

答案:

pk->

nextpj->

dpn!

=headreturnk

(2)2004年春填空第17题(P41-17)

设某链表上每个结点的数据结构为:

typedefstructnode

}NODE;

函数NODE*invert(NODE*head)的功能是:

将head指向的单链表逆置,即原链表最后一个结点变为第一个结点,原来倒数第二个结点变成第二个结点,以此类推。

在逆置过程中不建立新的链表。

NODE*invert(NODE*head)

{NODE*p,*q,*r;

if(head==0||__________)returnhead;

p=head;

q=p->

while(q!

{r=__________;

q->

next=p;

p=q;

q=r;

__________=0;

head=__________;

returnhead;

head->

next==0q->

nexthead->

nextp

(3)2004年秋填空第13题P51-13

以下程序运行时输出结果的第一行是________,第二行是________,第三行是_________。

stdlib.h>

NODE*insert(NODE*head,intx,intkey)

{NODE*s,*p,*q;

s=(NODE*)malloc(sizeof(NODE));

s->

d=key;

next=NULL;

if(head==NULL){head=s;

if(head->

d==x){s->

next=head;

head=s;

{q=head;

p=q->

while((p->

d!

=x)&

(p->

next!

=NULL)){q=p;

p=p->

if(p->

next=s;

else{s->

p->

voidprint(NODE*head);

{if(head==NULL)return;

while(head->

=NULL)

{printf(“%d,”,head->

d);

head=head->

printf(“%d\n”,head->

{NODE*head=NULL;

head=insert(head,0,3);

print(head);

head=insert(head,3,1);

head=insert(head,4,5);

31,31,3,5

(4)2005年春填空题第13题(P66-13)

以下程序运行时输出结果的第一行为________,第二行为_________,第三行为__________。

structnode*create(void)

{structnode*head=NULL,*p,*q=NULL;

inti;

for(i=2;

=9;

{p=(structnode*)malloc(sizeof(structnode));

d=i;

if(head==NULL)head=p;

elseq->

q=p;

voidprint(structnode*head);

structnode*delst(structnode*head,int*n)

{intcount=0;

structnode*p,*q,*r;

p=r=head;

while(p!

{q=p->

{if((q->

d)%(p->

d)==0)

{r->

next=q->

free(q);

count+

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

当前位置:首页 > PPT模板 > 中国风

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1