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

下载本文档

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

文档简介

计算机等级考试二级C语言计算机等级考试二级C语言考前辅导数学与计算机学院计算机等级考试二级C语言C语言复习考试的五大要点数学与计算机学院了解试卷,胸中有数深刻理解,强化概念归纳整理,适当记忆注重实践,融会贯通多做练习,查漏补缺计算机等级考试二级C语言主

容试卷分析C语言概述数学与计算机学院第1部分第2部分第3部分第4部分第5部分第6部分第7部分第8部分

第9部分数据类型及其运算语句数组函数编译预处理指针结构体与共用体第10部分位运算第11部分文件第12部分主要算法计算机等级考试二级C语言·命题基本原则及考核点数学与计算机学院一、源程序结构二、基本类型数据的表示和引用系统预定义数据类型基本类型常量的表示基本类型变量的声明和直接引用基本类型变量的间接引用(指针应用)三、表达式四、标准输入/输出五、语句第1部分

试卷分析计算机等级考试二级C语言·命题基本原则及考核点数学与计算机学院难题:语法:单选,阅读程序部分算法和数据结构的综合应用:阅读程序完善程序上机填空改错:语法错,语义错,算法错编程:主函数,功能函数第1部分

试卷分析计算机等级考试二级C语言·命题基本原则及考核点数学与计算机学院六、函数函数定义函数声明函数直接调用、间接调用(指针应用)递归函数的定义与调用执行流程标识符作用域规则七、构造类型数据成员的引用数组声明和数组元素的直接引用结构定义、结构变量声明和结构变量成员的直接引用数组元素、结构变量成员的间接引用(指针应用)八、文件输入/输出九、预处理命令第1部分

试卷分析计算机等级考试二级C语言·命题基本原则及考核点一、常用算法

分类(排序)算法冒泡,选择,插入检索(查找)算法无序数据序列的查找(见遍历算法)有序数据序列的查找:二分法遍历算法一维数组和二维数组的遍历单向链表的遍历文件的遍历其它基本算法递推法,穷举法,二分法,牛顿法求方程根,梯形法求定积分等.数学与计算机学院第1部分

试卷分析计算机等级考试二级C语言·命题基本原则及考核点二、典型问题·数值问题素数问题求因子整数拆位、反序数、回文数最大公约数,最小公倍数求最值、平均值累加,累乘、阶乘、级数(近似值计算)数学与计算机学院第1部分

试卷分析计算机等级考试二级C语言·命题基本原则及考核点三、典型问题·一维数组数据处理数学与计算机学院生成(数列)变换(编码/解码,压缩/还原,循环移位等)查找(指定值,最大值,最小值)排序插入(一个数)删除(一个数,重复的多个数)更新(一个数)统计合并(两个数列)集合运算模拟高精度算术运算第1部分

试卷分析计算机等级考试二级C语言·命题基本原则及考核点四、典型问题·字符串数据处理子串查找,子串统计,子串删除,子串替换,整型/实型机器数与字符串表示相互转换字符串变换(编码/解码,压缩/还原)数学与计算机学院第1部分

试卷分析计算机等级考试二级C语言·命题基本原则及考核点五、典型问题·二维数组数据处理生成(矩阵)变换(改变数值,改变数据存储位置)查找(指定值,最小值,最大值)排序(按行排序,按列排序)插入(一个数,一行数,一列数)删除(一个数,一行数,一列数)更新(一个数,一行数,一列数)统计合并(两个矩阵)数学与计算机学院第1部分

试卷分析计算机等级考试二级C语言·命题基本原则及考核点六、典型问题·一维结构数组数据处理查找(直接查找,通过指向结构数组的指针数组查找)排序(结构数组排序,指向结构数组的指针数组排序)插入(一条记录)删除(一条记录)更新(一条记录)统计数学与计算机学院第1部分

试卷分析计算机等级考试二级C语言单项选择题基础知识和c语言程序设计两部分组成单选题总分40分答题要求:进入单选题答题时,键盘被锁定,不可以进入到其他界面,其实就是将原来的笔试部分移到计算机上做;单项选择题做完提交后不可以再做,也即进入单选题答题后只有全部做完了,才可以退出,一旦退出则不可以再进入;可以根据自己的情况选择先做上机操作题,再做单项选择题。数学与计算机学院第1部分试卷分析计算机等级考试二级C语言上机考试形式上机题总分为60程序填空题

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

编程题:编程题程序中,通常都涉及一个有一定难度的算法,考生须按题目要求实现数学与计算机学院第1部分

试卷分析计算机等级考试二级C语言上机考试注意事项数学与计算机学院1、填空2、改错题可能出现的情况(四个错误)***函数调用(类型、调用方式、参数对应等)*文件包含缺少*变量的使用*前面提到的其它注意事项***主要算法3、编程题(算法+文件操作)***一定是文件操作题(五个要素)*文件名,输出位置一定按题目要求进行*算法有一定难度(一般都是小算法的综合)计算机等级考试二级C语言1、C程序的结构、main函数一个C程序可由多个函数构成,其中必有唯一的一个主函数。它是整个程序的入口,也是整个程序的出口。2、标识符的命名规则规则:字母或下划线开始的字母、下划线和数字串。

C语句中的保留字不能作为标识符。(教材P375)所有的函数名可以作为标识符。3、C程序的上机过程编辑

编译

连接

运行第2部分数学与计算机学院C语言概述计算机等级考试二级C语第言3部分1、常量、变量常量:固定不变的量。整型常量:十进制(29)、八进制(029)和十六进制(0x29)实型常量:小数表示(123.456)、指数表示(1.23456e+002)字符常量:普通字符(‘A’

‘a’

‘2’

‘+’

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

‘\xhh’)符号常量:

(一般用大写字符表示)#

define

PI

3.1415936数学与计算机学院数据类型及其运算计算机等级考试二级C语第言3部分三、数据类型及其运算(续一)数学与计算机学院变量:整型:基本整型:2字节int

(

-32768--+32767

)无符号基本整型:2字节unsigned

int

(

0—65535

)长整型:4字节long

int

long无符号长整型:4字节unsignedlong

int 或

unsigned

long实型:单精度:4字节float双精度:8字节double字符型:有符号字符:1字节char(

-128—127

)无符号字符:1字节unsigned

char

(

0—255

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

等价于

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

-

*

/

%)/

: a/b

a,b都是整型结果是整型% :a%b a,b都必须是整型数据类型及其运算计算机等级考试二级C语第言3部分三、数据类型及其运算(续三)4、赋值运算符和赋值表达式(右结合性)‘=’号

左边只能出现变量,具有强制类型转换作用if

(

(c=getchar()

)

!=‘\n’)

…复合赋值运算

a*=x+y

等价于

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

优先级:

结合性:

表达式的值:数学与计算机学院数据类型及其运算计算机等级考试二级C语第言3部分三、数据类型及其运算(续四)8、关系运算符和关系表达式数学与计算机学院<

<=

>

>=

(6级)

==

!=

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

a

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

&&

x<b

不能写成

a<x<b

形式a==b

不能写成

a=b

形式在多分枝if语句中的作用数据类型及其运算计算机等级考试二级C语第言3部分三、数据类型及其运算(续五)9、逻辑运算符和逻辑表达式!(2级)

&&(11级)

||(12级)注意:a

&&

b

&&

c

和 a

||

b

||

c

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

&&

b

&&

c)

等价于 !a

||

!b

||

!c数学与计算机学院!

(a

||

b

|| c)等价于复杂逻辑表达式出现在算术表达式中!a

&&

!b

&&

!c数据类型及其运算计算机等级考试二级C语第言3部分三、数据类型及其运算(续六)10、自增自减运算符(右结合性)数学与计算机学院++

--

(2级)注意:a++

和++a的区别对整型、实型和字符型都可进行在运算符为多个字符时,尽可能多地自左而右组成完整的运算符tc对含运算符++和--等表达式的处理形如

printf(“

%d

%d

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

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

(按位取反^

(按位异或a

>

b

?

x

:

y

?

m

:

ny应先与后面的运算符结合2级)

&(按位与

8级)9级)

|(按位或

10级)13、数学算式的C语言表示数据类型及其运算计算机等级考试二级C语第言3部分三、数据类型及其运算(续八)14、输入输出函数数学与计算机学院输入函数:getchar()gets()scanf()输出函数:putchar()puts()printf()注意:getchar()是无参函数,从输入设备读取一个字符,包括不可显示字符(一般形式

c=getchar())。gets()和puts()函数只有一个参数,且为字符串的首地址。scanf()函数的格式控制符中的普通字符照原样输入。printf()函数中的实参的求值顺序从右向左。数据类型及其运算计算机等级考试二级C语言四、语

句1、表达式语句2、函数调用语句3、复合语句4、空语句5、控制语句数学与计算机学院第4部分

语句计算机等级考试二级C语言四、语

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

语句一般格式switch{

casecase(表达式)常量表达式1:语句1;break;常量表达式2:语句2;break;…

…case

常量表达式n:语句n;break;default:语句n+1;}注意:执行流程“语句”可为多个单个语句,此时不必加大括号default语句可缺省switch语句嵌套使用时,break语句只跳出它所处的哪层switch整型、字符型或枚举类型根据需要选择第4部分

语句数学与计算机学院计算机等级考试二级C语言四、语

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

(表达式)

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

在复合语句中含有break和continue语句时的情况:while

(表达式){

…break;…

…continue;}第4部分

语句数学与计算机学院计算机等级考试二级C语言四、语

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

do

语句

while

(表达式);注意:无论表达式是否成立,循环体至少执行一遍

“表达式”应有括号,后面的“;”号不能丢“语句”为复合语句时应加大括号在语句中应有使“表达式”趋于不成立的语句存在

在复合语句中含有break和continue语句时的情况:do{

…break;…

…continue;}

while

(表达式);第4部分

语句数学与计算机学院计算机等级考试二级C语言四、语

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

(表达式1;表达式2;表达式3)语句注意:“语句”为复合语句时应加大括号在语句中应有使“表达式2”趋于不成立的语句存在在复合语句中含有break和continue语句时的情况:繁琐的二维数组填值问题(结合循环语句,几乎每次都考)三种循环语句相互嵌套使用的情况第4部分

语句数学与计算机学院计算机等级考试二级C语言五、数

组(一维数组)(一)一维数组数学与计算机学院定义:定义并初始化:或:类型名类型名

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

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

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

如:int

n

;

int

a[n];2、只能在定义数组的时候初始化,以后不可整体赋值3、除字符数组外,不可整体引用数组4、一般用单循环语句引用数组元素5、内存中连续存储,数组名为其存储的首地址第5部分

数组计算机等级考试二级C语言五、数(二)二维数组

定义:

类型名定义并初始化:数学与计算机学院组(二维数组)数组名〔常量表达式1〕〔常量表达式2〕;类型名

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

…};引用:

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

如:

int

a[3][3]

引用

a[0][5]

正确6、与双重循环语句一起应用(二维数组填值问题)第5部分

数组计算机等级考试二级C语言五、数

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

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

c[20];)

1)gets(c);和scanf(“%s”,c);区别7、二维字符数组的引用有下标引用法和数组名加第一维下标引用法第5部分

数组计算机等级考试二级C语言六、函

数主要内容(一)、函数的定义(二)、函数的参数(三)、函数的返回值(四)、函数的调用(五)、数组作为函数的参数(六)、局部变量和全局变量(七)、变量的存储类别数学与计算机学院第6部分

函数计算机等级考试二级C语言六、函

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

函数名(参数列表){

…函数体…

…}注意:1、函数的定义就是函数的说明1、函数由“头部”和“函数体”构成2、函数类型指函数返回值的类型(可以无返回值void)第6部分

函数计算机等级考试二级C语言六、函

数(函数的参数)(二)、函数的参数参数列表中的参数为形式参数,它们和函数体中定义的变量一起构成该函数的局部变量,形参是接受数据的通道,由于是第一次出现,因此要作类型说明。注意:1、形参要一一说明2、实参和形参要做到类型、顺序和数量一致3、实参和形参可以同名,但它们都是所处函数内部的局部数据4、实参可以是常量、量变、函数和表达式,形参只能是变量

5、在发生函数调用时,实参是将值(或地址)赋给形参的数学与计算机学院第6部分

函数计算机等级考试二级C语言六、函

数(函数的返回值)数学与计算机学院(三)、函数的返回值通过调用函数,从被调函数中得到的值称函数的返回值。注意:1、调用函数得到返回值有三种途径:1)在被调用函数中用return语句可以(且只可)得到一个返回值2)使用全局变量,全局变量对所有函数都有效3)实参和形参采用地址复用的方法(考点)2、被调用函数有时没有返回值,此时定义为

void

型3、被调用函数返回值类型由函数的类型确定4、return

表达式;5、被调用函数返回后,在主调函数中继续执行调用语句的下一个语句第6部分

函数计算机等级考试二级C语言六、函

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

函数计算机等级考试二级C语言六、函数(数组作函数的参数_1)(五)、数组作为函数的参数由于可以从数组名得到数组在内存储单元存储的起始位置,它是一个地址常量,因此在计论数组作为函数参数时结合指针一并讨论。(1)一维数组(指向变量的指针)作为函数的参数,在实参和形参数学与计算机学院位置上共有四种情况:

(假定

int a

[10]

;

int *p;

)实参(调用点)

形参(定义点)x=max(

a,10

)

;地址复用关系intmax

(

int

b[]

,

int

n

)x=max(

a,10

)

;赋值调用关系intmax

(

int

*p

,

int

n

)x=max(

p=a

,

10

)

;地址复用关系intmax

(

int

b[]

,

int

n

)x=max(

p=a

,

10

)

;赋值调用关系intmax

(

int

*p1,int

n

)第6部分

函数计算机等级考试二级C语言六、函数(数组作函数的参数_2)数学与计算机学院(1)二维数组(指向行的指针)作为函数的参数,在实参和形参位置上共有四种情况:

(假定

int a

[3][4]

;

int

(*p)[4]

;

)实参(调用点)形参(定义点)x=max(a,3,4);

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

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

max

(

int

b[][4],

int

m,intint

max(

int

(*p)[4]

,

int

m,inint

max

(

int

b[][4]

,

int

m,intint

max

(

int

(*p1)[4],int

m,ix=max(p=a,3,4);赋值调用关系第6部分

函数计算机等级考试二级C语言六、函

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

函数计算机等级考试二级C语言六、函

数(变量的存储类别)数学与计算机学院(七)、变量的存储类别(变量的时间观)存储方法分两大类:1、静态存储区:全局变量(程序开始执行赋值)、局部静态变量(编译时赋初值,只赋一次)2、动态存储区:局部变量(含形参、函数内定义的变量和分程序中定义的变量)具体分四种:1、自动变量

auto2、static申明的变量3、register变量4、extern申明变量动态局部变量静态局部变量动态局部变量扩展全局变量作用范围第6部分

函数计算机等级考试二级C语言七、编译预处理处理工作在编译前完成。(一)、宏定义用宏体置换程序中的宏名。不要将宏体化简后代入,有嵌套定义的宏名需逐层代入。(二)、文件包含<

>

“”的搜索包含文件区别:<>在C库函数头文件所在的目录中寻找(标准方式)、“”先在用户的当前目录中寻找,找不至再按标准方式寻找。文件包含不但可以包含C函数的头文件,也可包含*.c文件。(三)、条件编译数学与计算机学院第7部分

编译预处理计算机等级考试二级C语言八、指(一)、地址和指针针(基本概念)i_point2000i2000变量

i地址变量

i_point

(存储其它变量地址的变量)指针变量作为函数的参数指针变量i_point指向变量i数学与计算机学院第8部分

指针计算机等级考试二级C语言八、指

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

素的操作。例:int

a[5],*p;p=&a[3];*p

<==>

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

a[3]&*p

<==>

&a[3]*p的计算结果找到了整型数组成员a[3]对a[3]的地址作间接存取运算,结果为变量a[3]对*p的计算结果进行取址运算得到a[3]的地址a[0]

a[1]

a[2]

a[3]

a[4]p数学与计算机学院第8部分

指针计算机等级考试二级C语言八、指数组名作函数参数 实参(调用点)数学与计算机学院针(数组和指针_续)形参(定义点)x=max(

a,10

)

;地址复用关系intmax

(

int

b[]

,

int

n

)x=max(

a,10

)

;赋值调用关系intmax

(

int

*p

,

int

n

)x=max(

p=a

,

10

)

;地址复用关系intmax

(

int

b[]

,

int

n

)x=max(

p=a

,

10

)

;赋值调用关系intmax

(

int

*p1,int

n

)指向多维数组的指针实参(调用点)

形参(定义点)x=max(

a,3,4

)

;地址复用关系intmax

(

int

b[][4],

int

m,intx=max(

a,3,4

)

;赋值调用关系intmax(

int

(*p)[4]

,

int

m,inx=max(

p=a

,

3,4

)

;地址复用关系

intx=max(

p=a

,

3,4

)

;赋值调用关系

intmax

(

int

b[][4]

,

int

m,intmax

(

int

(*p1)[4],int

m,i第8部分

指针计算机等级考试二级C语言八s指 针(表达式类型的判断)如何判断一个是数组元素s数组元素的地址?一s一维数组

int

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

&3s间接访问运算

*4s下标运算

〔〕二s二维数组

int

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

&3s间接访问运算

*4s下标运算

〔〕取地址间接访问元素:

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]数学与计算机学院第8部分

指针计算机等级考试二级C语言八、指 针(字符串的指针)字符串概念1、以内存某一起始字节开始到‘\0’字符结束的若干字节。2、字符‘\0’的ASCII码值为0。3、字符串所占内存空间为串长加1。4、从C语言角度对字符串的理解:从内存某一起始字节开始,向地址值增大的方向以字节为单位连续寻找,如ASCII码不等于0,则其所代表的字符为字符串中有效字符,如ASCII码等于0,则字符串结束。5、内存单元某一字节的地址。6、可用一维字符数组存放。7、可用指向字符变量的指针存放。8、看见常量字符串应将其理解为第一个字符的地址。数学与计算机学院第8部分

指针计算机等级考试二级C语言八、指 针(字符串的指针_续)例:main(){

printf(“%s,%u,%c\n”,”We”,”love”,*”figs”);}运行结果:We,417,f说明:

“love”为指针,以%u格式输出“love”的值,即输出该字符串的首地址。*“figs”为该字符串的第一个字符。例:main(){

if(“abc”==“abc”)

printf(“Same!\n”);else

printf(“Not

same!\n”);

}运行结果:Not

same!说明:比较两个字符串的起始地址,它们不可能相同。数学与计算机学院第8部分

指针计算机等级考试二级C语言八、指 针(指针数组)(3)使用指针数组处理二维数组例:int

a[3][4],*p[3],i

;

(*p[3]是指针数组)for(i=0;i<3;i++)

p[i]=a[i];0]说明:p数组的三个元素分别是指向整型变量的指0]针(元素指针),指针数组名p的增值为一维数组长度。a[0][a[1][a[2][0]p[0]p[1]p[2]pp+1p+2通过指针p引用数组元素的方式:p[i][j]*(p[i]+j)*(*(p+i)+j)(*(p+i))[j]注意:a为二维字符数组的情况P为地址的地址,即指针的指针数学与计算机学院第8部分

指针计算机等级考试二级C语言八、指 针(指针的指针)指针的指针(二级间址访问)指向指针数据的指针变量又称为指针的指针,或指针链。其定义的一般格式:类型说明符**指针变量名例:static

char

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

**p

;p=name

;定义指针的指针p

p指向指针数组name则:*p即name[0]*(p+1)

即name[1]*(p+i)

即name[i]name[1]name[2]0book\0print

\gread

\0pname数学与计算机学院name数组

name[0]字符串第8部分

指针计算机等级考试二级C语言八、指 针(指针的指针_续)例:

main(){

char

**p

;static

char

*d[]={“up”,”down”,”left”,”rightint

i

;p=d

;for(i=0;i<4;i++)printf(“%s\n”,*p++);}数学与计算机学院第8部分

指针计算机等级考试二级C语言八、指 针(返回指针值的函数)返回指针值的函数(指针函数)数学与计算机学院一个函数的返回值为某种数据类型的地址值,即指针类型数据,称该函数为指针型函数。说明返回指针型函数的格式:类型说明符*函数名(参数表);例:int

*a(x,y);第8部分

指针计算机等级考试二级C语言八、指 针(返回指针值的函数_续)void

main(){

static

float

score[][4]={

…………

};float

*search(float(*)[4],int);/*search()返回指向实型/*

p为指向实型数据的指针*/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],元素指针。数学与计算机学院第8部分

指针计算机等级考试二级C语言八、指 针(函数的指针)指针与函数(一)函数指针的定义和说明1、函数名表示函数代码存储区的首地址,又称函数的入口地址。2、定义指针变量,使之指向函数入口地址,该指针称为函数指针。3、函数指针定义格式:

类型说明符

(*函数指针名)(

);例:int

(*p)();

定义函数指针p指向返回值为整型数据的函数int

max();

已定义一个函数maxp=max

;

将函数max的入口地址赋予指针变量p,p和max都指向函数的入口地址数学与计算机学院第8部分

指针计算机等级考试二级C语言八、指 针(函数的指针_续1)几点说明:函数指针指向程序代码区,一般数据变量指针指向数据区。(*p)(),注意运算符()优先级高于*,*p两侧括号不能省。*p()表示返回指针值的函数。函数指针不能进行++、--、+、-等运算。

函数可以通过函数名调用,也可通过函数指针调用。

如果函数指针p指向函数f1,则对函数f1的调用方式是:

(*p)(实参表);数学与计算机学院第8部分

指针计算机等级考试二级C语言八、指 针(函数的指针_续2)(二)函数指针的使用用函数指针调用函数。函数指针作为函数参数,实现两个或多个函数之间的调用控制。使用函数指针使C

语言具有类似汇编语言的某些功能。数学与计算机学院第8部分

指针计算机等级考试二级C语言八、指 针(函数的指针_续3)void

main(){

int

max(int,int),(*p)(int,int);int

a,b,c;p=max;scanf(“%d,%d”,&a,&b);c=(*p)(a,b);printf(“a=%d,b=%d,max=%d”,a,b,c);}int

max(int

x,int

y){

int

zif(x>y)

z=x;else

z=y;return(z);}数学与计算机学院第8部分

指针计算机等级考试二级C语言八、指 针(函数的指针_续4)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);

}/*函数max(),min(),add()定义略*/main(){

int

max(int,int),min(int,int),ad三d(次in调t,用in传t)递;了三个不同的函数入口地址利用函数指针调用不同的函数,增加了函数调用的灵活性数学与计算机学院第8部分

指针计算机等级考试二级C语言八、指

针(动态内存分配函数)void

*malloc(unsigned

intsize);在内存的动态存储区中分配一个长度为size的连续空间void

*calloc(unsigned

n,unsignedsize);在内存的动态存储区中分配n个长度为size的连续空间void

free(void

*p);释放由p指向的内存区动态内存分配函数第3版P296第4版P285数学与计算机学院第8部分

指针计算机等级考试二级C语言第8部分

指针数学与计算机学院八、指 针(指针变量的归纳比较)变量定义类型表示含

义int

i;int定义整型变量iint

*p;int

*定义p为指向整型数据的指针变量int

a[5];int

[5]定义整型数组a,它有5个元素int

*p[4];int

*

[4]定义指针数组p,它由4个指向整数据的指针元素组成int

(*p)[4];int

(*)[4]p为指向包含4个元素的一维数组的指针变量int

f();int

()f为返回整型函数值的函数int

*p();int

*()p为返回一个指针的函数,该指针指向整型数据int

(*p)();int

(*)()p为指向函数的指针,该函数返回一个整型值int

**p;int

**p是一个指向指针的指针变量,它指向一个指向整型数据的指针变量void

*p;void

*p是一个指针变量,基类型为void,不指向具体的对象P276第3版P289第4版计算机等级考试二级C语第言9部分九、结构体与共用体结构体一、结构体变量的定义struct结构体名{类型标识符类型标识符成员名1成员名2类型标识符

成员名n};只定义了结构体类型struct结构体名{类型标识符类型标识符成员名1成员名2类型标识符

成员名n}a

,

b

,

c[3];定义了结构体类型和变量struct{类型标识符类型标识符成员名1成员名2.........................................................................类型标识符

成员名n}a

,

b

,

c[3];只定义了结构体变量DATE a

,

b

,

c[3];定义a,b,c为结构体变量数学与计算机学院typedef

struct{类型标识符类型标识符成员名1成员名2

注意:考试中多采用此种形式.....................................类型标识符

成员名n

(可嵌套定义)}DATE;定义DATE为结构体类型结构体与共用体九、结构体与共用体二、结构体变量的引用只可引用最低级成员struct

data{

int

month;int

day;int

year;};struct{

int

num;char

name[20];char

sex;int

age;struct

data

birthday;char

addr[30];}

stud;

[0]串首地址正确引用stud.birthday.daystud.birthday.year注意:1、运算符“.”为左结合性,第一级2、成员类型决定引用类型3、引用结构体成员可像普通变量一样赋值、输入、输出、运算数学与计算机学院计算机等级考试二级C语第言9部分结构体与共用体九、结构体与共用体三、指向结构体类型数据的指针#

include

"string.h"main(){

struct

student{ long

int

num;char

name[20];char

sex;float

score;};structstudent

stu_1;structstudent

*p;p=&stu_1;stu_1.num=89101;strcpy(stu_1.name,"Li

Lin");stu_1.sex="M";stu_1.score=89.5;定义结构体变量stu_1定义结构体类型指针P指向stu_1首地址计算机等级考试二级C语第言9部分数学与计算机学院结构体与共用体九、结构体与共用体有了指向结构体变量的指针,对结构体变量中成员引用的三种方法:1、结构体变量名.成员名2、(*p).成员名3、p->成员名“*”号运算低于“.”运算P->n++++p->n(++p)->n计算机等级考试二级C语第言9部分数学与计算机学院结构体与共用体计算机等级考试二级C语第言9部分九、结构体与共用体四、用指针处理链表1、有关函数malloc(sizeof(数据类型))calloc(n,sizeof(数据类型))malloc(size);calloc(n,size);free(p);/*特殊成员链接需要*/2、链表结点的数据结构:struct

student{int

num;float

sco结r点e;自身需要struct

student

*next;};数学与计算机学院结构体与共用体九、结构体与共用体3、链表的操作⑴链表创建⑵结点插入⑶结点删除⑷链表输出注意:⑴得到链表只要得到链首指针。⑵调用函数对已知链表实施操作只要传递链首指针⑶被调用函数都是返回指针值的函数数学与计算机学院计算机等级考试二级C语第言9部分结构体与共用体九、结构体与共用体共用体一、共用体变量的定义计算机等级考试二级C语第言9部分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个字节内存空间结构体与共用体九、结构体与共用体二、共用体变量的引用只可引用最低级成员

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

"stdio.h"struct{

int

num;char

name[10];char

sex;char

job;union{int

class;}

category;}

person[2];同一内存段放不同类型成员,某一char

position[10];时刻只有一个即最后存放的成员起作用。计算机等级考试二级C语第言9部分数学与计算机学院结构体与共用体计算机等级考试二级C语第言9部分九、结构体与共用体数学与计算机学院枚举类型一、枚举类型定义和枚举变量:enum

温馨提示

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

评论

0/150

提交评论