计算机等级考试二级C语言辅导_第1页
计算机等级考试二级C语言辅导_第2页
计算机等级考试二级C语言辅导_第3页
计算机等级考试二级C语言辅导_第4页
计算机等级考试二级C语言辅导_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机等级考试二级C语言计算机与软件学院计算机等级考试二级C语言考前辅导第一页,共七十六页。计算机等级考试二级C语言计算机与软件学院主

容一、试卷分析二、C语言概述三、数据类型及其运算四、语句五、数组六、函数七、编译预处理八、指针九、结构体与共用体十、文件十一、主要算法分析第二页,共七十六页。计算机等级考试二级C语言计算机与软件学院C语言复习考试的五大要点了解试卷,胸中有数深刻理解,强化概念归纳整理,适当记忆注重实践,融会贯通多做练习,查漏补缺第三页,共七十六页。计算机等级考试二级C语言计算机与软件学院命题基本原则及考核点语法:一、源程序结构二、基本类型数据的表示和引用系统预定义数据类型基本类型常量的表示基本类型变量的声明和直接引用基本类型变量的间接引用(指针应用)三、表达式四、标准输入/输出五、语句第四页,共七十六页。计算机等级考试二级C语言计算机与软件学院命题基本原则及考核点难题:语法:单选,基本概念填空,阅读程序部分算法和数据结构的综合应用:阅读程序完善程序上机填空改错:语法错,语义错,算法错编程:主函数,功能函数第五页,共七十六页。计算机等级考试二级C语言计算机与软件学院命题基本原则及考核点语法:六、函数函数定义函数声明函数直接调用、间接调用(指针应用)递归函数的定义与调用执行流程标识符作用域规则七、构造类型数据成员的引用数组声明和数组元素的直接引用结构定义、结构变量声明和结构变量成员的直接引用数组元素、结构变量成员的间接引用(指针应用)八、文件输入/输出九、预处理命令第六页,共七十六页。计算机等级考试二级C语言计算机与软件学院命题基本原则及考核点一、常用算法

分类(排序)算法冒泡,选择,插入检索(查找)算法无序数据序列的查找(见遍历算法)有序数据序列的查找:二分法遍历算法一维数组和二维数组的遍历单向链表的遍历文件的遍历其它基本算法递推法,穷举法,二分法,牛顿法求方程根,梯形法求定积分等.第七页,共七十六页。计算机等级考试二级C语言计算机与软件学院命题基本原则及考核点二、典型问题·数值问题素数问题求因子整数拆位、反序数、回文数最大公约数,最小公倍数求最值、平均值累加,累乘、阶乘、级数(近似值计算)第八页,共七十六页。计算机等级考试二级C语言计算机与软件学院命题基本原则及考核点三、典型问题·一维数组数据处理生成(数列)变换(编码/解码,压缩/还原,循环移位等)查找(指定值,最大值,最小值)排序插入(一个数)删除(一个数,重复的多个数)更新(一个数)统计合并(两个数列)集合运算模拟高精度算术运算第九页,共七十六页。计算机等级考试二级C语言计算机与软件学院四、典型问题·字符串数据处理子串查找,子串统计,子串删除,子串替换,整型/实型机器数与字符串表示相互转换字符串变换(编码/解码,压缩/还原)命题基本原则及考核点第十页,共七十六页。计算机等级考试二级C语言计算机与软件学院命题基本原则及考核点五、典型问题·二维数组数据处理生成(矩阵)变换(改变数值,改变数据存储位置)查找(指定值,最小值,最大值)排序(按行排序,按列排序)插入(一个数,一行数,一列数)删除(一个数,一行数,一列数)更新(一个数,一行数,一列数)统计合并(两个矩阵)第十一页,共七十六页。计算机等级考试二级C语言计算机与软件学院命题基本原则及考核点六、典型问题·一维结构数组数据处理查找(直接查找,通过指向结构数组的指针数组查找)排序(结构数组排序,指向结构数组的指针数组排序)插入(一条记录)删除(一条记录)更新(一条记录)统计第十二页,共七十六页。计算机等级考试二级C语言计算机与软件学院笔试形式基础知识和c语言程序设计两部分组成基础知识全部为单选题c语言程序设计部分分为单选题和填空题答题要求:单选题的答案必须涂划在专用答题卡上;填空题的答案必须写在专用答题纸上(填空时注意:每个填空要按标号顺序填,一空占一行,不是一题

一行;因为有的题目一题包含多个空)。第十三页,共七十六页。计算机等级考试二级C语言计算机与软件学院上机考试形式上机题总分为填空题

改错题:改错题中所存在的错误主要是语法错误(如数组的声明错误、函数定义错误等)、运行错误(如包含不正确的头文件)、逻辑错误等。

编程题:编程题程序中,通常都涉及一个有一定难度的算法,考生须按题目要求实现第十四页,共七十六页。计算机等级考试二级C语言计算机与软件学院二、C语言概述1、C程序的结构、main函数一个C程序可由多个函数构成,其中必有唯一的一个主函数。它是整个程序的入口,也是整个程序的出口。2、标识符的命名规则规则:字母或下划线开始的字母、下划线和数字串。C语句中的保留字不能作为标识符。(教材P375)所有的函数名可以作为标识符。3、C程序的上机过程编辑编译连接运行第十五页,共七十六页。计算机等级考试二级C语言计算机与软件学院三、数据类型及其运算1、常量、变量常量:固定不变的量。整型常量:十进制(29)、八进制(029)和十六进制(0x29)实型常量:小数表示(123.456)、指数表示(1.23456e+002)字符常量:普通字符(‘A’

‘a’

‘2’

‘+’

‘,’)、转义字符(‘\qqq’

‘\x符号常量: (一般用大写字符表示)#

define

PI

3.1415936第十六页,共七十六页。计算机等级考试二级C语言计算机与软件学院三、数据类型及其运算(续一)变量:整型:基本整型:

2字节无符号基本整型:

2字节长整型:

4字节int

(

-32768--+32767

)unsigned

int

(

0—65535

)long

int

long无符号长整型:实型:单精度:双精度:4字节unsigned

long

int

或unsigned

long4字节8字节floatdouble字符型:有符号字符:无符号字符:1字节1字节char

(

-128—127

)unsigned

char

(

0—255

)第十七页,共七十六页。计算机等级考试二级C语言计算机与软件学院三、数据类型及其运算(续二)2、不同类型数据之间的混合运算表达式值的类型由该式子中最长的数据类型决定。float型无条件转换成double型。char型无条件转换成int型。*注意强制类型转换的用法。(类型名)(int)x+y

等价于

((int)x)+y参与运算的数据类型改变了,x的类型不变。3、算术运算符和运算表达式

(+

-

*

/

%)/

: a/b

a,b都是整型结果是整型%

:a%b a,b

都必须是整型第十八页,共七十六页。计算机等级考试二级C语言计算机与软件学院三、数据类型及其运算(续三)4、赋值运算符和赋值表达式(右结合性)‘=’号左边只能出现变量,具有强制类型转换作用if

(

(c=getchar()

)

!=‘\n’)

…a*=x+y

等价于复合赋值运算

a=a*(x+y)5、逗号运算符和逗号表达式加‘;’号构成表达式语句作为其它语句的一部分或函数的参数时要加括号6、表达式的类型识别7、有关运算符功能:

优先级:

结合性:

表达式的值:第十九页,共七十六页。计算机等级考试二级C语言计算机与软件学院三、数据类型及其运算(续四)8、关系运算符和关系表达式<

<=

>

>=

(6级)

==

!=

(7级)注意:等于零和不等于零的表示方式

a

!a两个实数判相等和判不相等的方法

a<x&&

x<b

不能写成

a<x<b

形式a==b

不能写成a=b

形式在多分枝if语句中的作用第二十页,共七十六页。计算机等级考试二级C语言计算机与软件学院三、数据类型及其运算(续五)9、逻辑运算符和逻辑表达式&&(11级)!(2级)

||(12级)注意:a

&&

b

&&

c

a

||

b

||

c

表达式!优先级比算术运算高!(a

&&

b

&&

c)等价于!a

||

!b

||

!c!a

&&

!b

&&

!c!(a

||

b

|| c)等价于复杂逻辑表达式出现在算术表达式中第二十一页,共七十六页。计算机等级考试二级C语言计算机与软件学院三、数据类型及其运算(续六)10、自增自减运算符(右结合性)++

--

(2级)注意:a++和++a

的区别对整型、实型和字符型都可进行在运算符为多个字符时,尽可能多地自左而右组成完整的运算符tc

对含运算符++和--等表达式的处理形如

printf(“

%d

%d

\n”,i,i++);中函数参数求值出现在其它表达式中注意值的变化第二十二页,共七十六页。计算机等级考试二级C语言计算机与软件学院三、数据类型及其运算(续七)11、条件运算符和条件表达式(右结合性)?

(13级)注意:唯一三目运算符不能和if语句完全等价右结合性12、位运算符~

(按位取反a

>

b

?

x

:

y

?

m

:

ny应先与后面的运算符结合^

(按位异或

9级)2级)

&(按位与

8级)|(按位或

10级)13、数学算式的C语言表示第二十三页,共七十六页。计算机等级考试二级C语言计算机与软件学院三、数据类型及其运算(续八)14、输入输出函数输入函数:输出函数:getchar()putchar()gets()puts()scanf()printf()注意:1)

getchar()是无参函数,从输入设备读取一个字符,包括不可显示字符(一般形式c=getchar())。gets()和puts()函数只有一个参数,且为字符串的首地址。scanf()函数的格式控制符中的普通字符照原样输入。printf()函数中的实参的求值顺序从右向左。第二十四页,共七十六页。计算机等级考试二级C语言计算机与软件学院四、语

句1、表达式语句2、函数调用语句3、复合语句4、空语句5、控制语句第二十五页,共七十六页。计算机等级考试二级C语言计算机与软件学院四、语

句(选择语句)(一)if 语句一般格式或if

(表达式)

语句if

(表达式)

语句1else

语句2注意:“表达式”应有括号,且可为各种类型的表达式“语句”如是复合语句应有括号“语句”还可以是

if

语句数学分段函数的求值问题繁琐的二维数组填值问题(结合循环语句,几乎每次都考)第二十六页,共七十六页。计算机等级考试二级C语言计算机与软件学院四、语

句(选择语句_续)(二)switch

语句一般格式switch

(表达式){

case

常量表达式1

:

语句1;break;case

常量表达式2

:

语句2;break;…

…case

常量表达式n:语句n;break;default:语句n+1

;}注意:执行流程“语句”可为多个单个语句,此时不必加大括号default

语句可缺省switch语句嵌套使用时,break语句只跳出它所处的哪层switch整型、字符型或枚举类型根据需要选择第二十七页,共七十六页。计算机等级考试二级C语言计算机与软件学院四、语

句(循环语句_1)(一)当型循环语句一般格式while

(表达式)

语句注意:“表达式”应有括号“语句”为复合语句时应加大括号在语句中应有使“表达式”趋于不成立的语句存在在复合语句中含有break和continue语句时的情况:while

(表达式){

…break;…

…continue;}第二十八页,共七十六页。计算机等级考试二级C语言计算机与软件学院四、语

句(循环语句_2)(二)直到型循环语句一般格式do

语句

while

(表达式);注意:无论表达式是否成立,循环体至少执行一遍“表达式”应有括号,后面的“;”号不能丢“语句”为复合语句时应加大括号在语句中应有使“表达式”趋于不成立的语句存在在复合语句中含有break和continue语句时的情况:do{

…break;…

…continue;}

while

(表达式);第二十九页,共七十六页。计算机等级考试二级C语言计算机与软件学院四、语

句(循环语句_3)(二)for 型循环语句一般格式for

(表达式1;表达式2;表达式3)语句注意:“语句”为复合语句时应加大括号在语句中应有使“表达式2”趋于不成立的语句存在在复合语句中含有break和continue语句时的情况:繁琐的二维数组填值问题(结合循环语句,几乎每次都考)三种循环语句相互嵌套使用的情况第三十页,共七十六页。计算机等级考试二级C语言计算机与软件学院五、数

组(一维数组)(一)一维数组定义:定义并初始化:类型名

数组名〔常量表达式〕;类型名

数组名〔常量表达式〕={表达式列表};或:类型名

数组名〔〕={表达式列表};引用:

只能引用下标变量。注意:1、不能定义动态数组

如:int

n

;int

a[n];2、只能在定义数组的时候初始化,以后不可整体赋值3、除字符数组外,不可整体引用数组4、一般用单循环语句引用数组元素5、内存中连续存储,数组名为其存储的首地址第三十一页,共七十六页。计算机等级考试二级C语言计算机与软件学院五、数

组(二维数组)(二)二维数组定义:

类型名

数组名〔常量表达式1〕〔常量表达式2〕;定义并初始化:类型名

数组名〔〕〔常量表达式〕={…

…};引用:

只能引用下标变量。注意:1、不能定义动态数组2、只能在定义数组的时候初始化,以后不可整体赋值3、不可整体引用数组4、一般用双重循环语句引用数组元素5、按行在内存中连续存储,数组名为0行的行地址,a[i]为第i行第1个元素的地址

如:

int

a[3][3]

引用

a[0][5]

正确6、与双重循环语句一起应用(二维数组填值问题)第三十二页,共七十六页。计算机等级考试二级C语言计算机与软件学院五、数

组(字符数组)(三)字符数组(一维、二维)具有普通一维数组和二维数组的性质。特点:1、可以定义时初始化,也可以后用strcpy()赋值。2、可以引用下标变量,也可整体引用(一维)3、一般用于存放字符串4、字符串的基本概念1)串结束符5、字符串操作函数的使用1)串长度(编程实现)3)串拼接(编程实现)2)内存单元地址

字符串2)串复制(赋值)4)串比较(不能用关系运算符)6、字符串的输入和输出(char

c[20];)1)gets(c);和scanf(“%s”,c);区别7、二维字符数组的引用有下标引用法和数组名加第一维下标引用法第三十三页,共七十六页。计算机等级考试二级C语言计算机与软件学院六、函

数(函数的定义)(一)、函数的定义函数可理解为一个程序段,给予一定的输入就会产生一定的输出。函数的定义就是在使用函数前对函数功能的完整性描述。一般形式:函数类型

函数名(参数列表){

…函数体…

…}注意:1、函数的定义就是函数的说明1、函数由“头部”和“函数体”构成2、函数类型指函数返回值的类型(可以无返回值void)第三十五页,共七十六页。计算机等级考试二级C语言计算机与软件学院六、函

数(函数的调用)(四)、函数的调用函数调用是将程序的执行流程转向被调用函数,被调用函数执行完毕后再回到主调用函数继续执行。注意:1、根据被调用函数的类型函数调用有三种形式:1)函数调用作为表达式的一部分(被调用函数有返回值)2)函数调用作为其它函数的参数(被调用函数有返回值)3)函数调用加“;”号构成函数调用语句(被调用函数无返回值)2、函数调用的形式1)嵌套调用2)递归调用:递归函数的编程特点递归函数的阅读特点第三十八页,共七十六页。计算机等级考试二级C语言计算机与软件学院六、函

数(局部和全局变量)(六)、局部变量和全局变量(变量的空间观)局部变量1、某函数内部定义的变量,只在该函数内部有效2、分程序(复合语句)内部定义的变量,只在分程序中有效3、形参属于局部变量全局变量1、函数外部定义的变量,作用范围从定义点开始到程序最后定义点之前的函数可用extern进行申明来扩展其作用范围2、在全局变量的作用范围内如遇同名的宏定义,则在宏定义同名应该用宏名置换(2004年秋选择题26题)之后,第四十一页,共七十六页。计算机等级考试二级C语言计算机与软件学院八、指

针(基本概念)(一)、地址和指针变量

i地址变量

i_point

(存储其它变量地址的变量)指针变量作为函数的参数i_point20002000指针变量i_point指向变量ii第四十四页,共七十六页。计算机等级考试二级C语言计算机与软件学院八、指

针(数组和指针)(二)、数组的指针和指向数组的指针变量由于数组连续存放的特性,当指针指向数组(即数组元素)时,通过指针指向的连续变化来指向数组中不同的元素以获取对数组元素的操作。例:int

a[5],*p

;p=&a[3];*p

<==>

a[3]*&a[3]<==>a[3]

对a[3]的地址作间接存取运算,结果为变量a[3]&*p

<==>

&a[3]

对*p的计算结果进行取址运算得到a[3]的地址a[0]

a[1]

a[2]

a[3]

a[4]*p的计算结果找到了整型数组成员a[p3]第四十五页,共七十六页。计算机等级考试二级C语言计算机与软件学院八、指针(数组和指针_续)数组名作函数参数 实参(调用点)x=max(

a,10

)

;x=max(

a,10

)

;x=max(

p=a

,

10

)

;形参(定义点)int

max

(

int

b[]

,

int

n

)int

max

(

int

*p

,

int

n

)int

max

(

int

b[]

,

int

n

)地址复用关系赋值调用关系地址复用关系x=max(

p=a

,

10

)

;指向多维数组的指针实参(调用点)赋值调用关系

int

max

(

int

*p1,int

n

)形参(定义点)地址复用关系

int

max

(

int

b[][4],

int

m,int

n

)x=max(

a,3,4

)

;x=max(a,3,4);

赋值调用关系int

max(

int

(*p)[4]

,

int

m,int

n

)int

max

(

int

b[][4]

,

int

m,int

n

)x=max(p=a,3,4);地址复用关系x=max(

p=a

,

3,4

)

;

赋值调用关系

intmax

(

int

(*p1)[4],int

m,int

n

)第四十六页,共七十六页。计算机等级考试二级C语言计算机与软件学院八s指 针(表达式类型的判断)如何判断一个是数组元素s数组元素的地址?一s一维数组int

a[N];1sa是该数组在内存中的起始地址。2s取地址运算

&3s间接访问运算

*4s下标运算

〔〕二s二维数组1sa是该数组的行起始地址。2s*(a+i)或a[i]表示第i行的第一个元素地址2s取地址运算

&3s间接访问运算

*4s下标运算

〔〕间接访问int

a[M][N];取地址元素:

a[i]s*(a+i)s*&a[i]s*a地址:

asa+is&

a[i]行地址:a+ii

行第1个元素地址:*(a+i)sa[i]元素:a[i][j]s*(*(a+i)+j)s*(a[i]+j)s(*(a+i))[j]地址:&a[i][j]s*(a+i)+jsa[i]+js&(*(a+i))[j]第四十七页,共七十六页。计算机等级考试二级C语言计算机与软件学院八、指 针(字符串的指针)字符串概念1、以内存某一起始字节开始到‘\0’字符结束的若干字节。2、字符‘\0’的ASCII码值为0。

3、字符串所占内存空间为串长加1。4、从C语言角度对字符串的理解:从内存某一起始字节开始,向地址值增大的方向以字节为单位连续寻找,如ASCII码不等于0,则其所代表的字符为字符串中有效字符,如ASCII码等于0,则字符串结束。5、内存单元某一字节的地址。6、可用一维字符数组存放。7、可用指向字符变量的指针存放。8、看见常量字符串应将其理解为第一个字符的地址。第四十八页,共七十六页。计算机等级考试二级C语言计算机与软件学院八、指 针(指针的指针)指针的指针(二级间址访问)指向指针数据的指针变量又称为指针的指针,或指针链。其定义的一般格式:类型说明符**指针变量名例:static

char

*name[]={“book”,”print”,”gread”};char

**p

;p=name

;定义指针的指针pp指向指针数组name则:*p即name[0]1)即name[1]name[1]name[2]*(p+i)

即name[i]0book\*0(p+print

\gread

\0pnamename数组

name[0]字符串第五十一页,共七十六页。计算机等级考试二级C语言计算机与软件学院八、指 针(返回指针值的函数_续)void

main(){

static

float

score[][4]={

…………

};/*search()返回指向实型数据的指针*//*

p为指向实型数据的指针*/float

*search();float

*p;

int

i,m

;scanf(“%d”,&m);printf(“The

scores

of

No.%d

are:\n”,m);p=search(score,m);

/*

score为行指针*/for(i=0;i<4;i++)printf(“%5.2f\t”,*(p+i));}float

*search(float

(*pointer)[4],int

n){

float

*pt;pt=*(pointer+n);return(pt);

}pointer+n为第n行的首地址,行指针。*(pointer+n)将指针从行控制转化为列控制,等价于pointer[n],元素指针。第五十四页,共七十六页。计算机等级考试二级C语言计算机与软件学院八、指

针(函数的指针_续1)几点说明:函数指针指向程序代码区,一般数据变量指针指向数据区。(*p)(),注意运算符()优先级高于*,*p两侧括号不能省。*p()表示返回指针值的函数。函数指针不能进行++、--、+、-等运算。函数可以通过函数名调用,也可通过函数指针调用。如果函数指针p指向函数f1,则对函数f1的调用方式是:(*p)(实参表);第五十六页,共七十六页。计算机等级考试二级C语言计算机与软件学院八、指 针(函数的指针_续4)/*函数max(),min(),add()定义略*/main(){

int

max(),min(),add();int

a,b

;printf(“Enter

a

and

b:”);scanf(“%d%d”,&a,&b);printf(“max=”);

process(a,b,max);printf(“min=”);

process(a,b,min);printf(“sum=”);

process(a,b,add);}process(int

x,int

y,int

(*fun)()){

int

result;result=(*fun)(x,y);printf(“%d\n”,result);

}三次调用传递了三个不同的函数入口地址利用函数指针调用不同的函数,增加了函数调用的灵活性第五十九页,共七十六页。计算机等级考试二级C语言计算机与软件学院九、结构体与共用体二、结构体变量的引用只可引用最低级成员struct

data{

int

month;int

day;int

year;};struct{

int

num;

char

name[20];char

sex;int

age;structdata

birthday;charaddr[30];}

stud;

[0]串首地址正确引用注意:1、运算符“.”为左结合性,第一级2、成员类型决定引用类型3、引用结构体成员可像普通变量一样赋值、输入、输出、运算第六十一页,共七十六页。计算机等级考试二级C语言计算机与软件学院九、结构体与共用体有了指向结构体变量的指针,对结构体变量中成员引用的三种方法:1、结构体变量名.成员名2、(*p).成员名3、p->成员名“*”号运算低于“.”运算P->n++++p->n(++p)->n第六十三页,共七十六页。计算机等级考试二级C语言计算机与软件学院九、结构体与共用体共用体一、共用体变量的定义union

data{

char

ch;float

f;int

i

;};union

data

a,b,c;union

data{

char

ch;float

f;int

i

;}

a,b,c;union{

char

ch;float

f;int i

;}

a,b,c;union

data{

char

ch[10];float

f;int

b[5]

;}

a;占10个字节内存空间第六十六页,共七十六页。计算机等级考试二级C语言计算机与软件学院九、结构体与共用体二、共用体变量的引用只可引用最低级成员

共用体变量名.成员名不能引用共用体变量,只能引用其成员。出现在结构体的定义中。#include

"stdio.h"struct{

int

num;char

name[10];char

sex;char

job;union{int

class;char

p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论