计算机等级考试二级C语言辅导

上传人:ch****o 文档编号:246828077 上传时间:2024-10-16 格式:PPT 页数:76 大小:268.63KB
返回 下载 相关 举报
计算机等级考试二级C语言辅导_第1页
第1页 / 共76页
计算机等级考试二级C语言辅导_第2页
第2页 / 共76页
计算机等级考试二级C语言辅导_第3页
第3页 / 共76页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,计算机等级考试二级语言,计算机与软件学院,计算机等级考试,二级语言,考前辅导,主要内容,一、试卷分析,二、语言概述,三、数据类型及其运算,四、语句,五、数组,六、函数,七、编译预处理,八、指针,九、结构体与共用体,十、文件,十一、主要算法分析,C,语言复习考试的五大要点,了解试卷,胸中有数,深刻理解,强化概念,归纳整理,适当记忆,注重实践,融会贯通,多做练习,查漏补缺,命题基本原则及考核点,语法,:,一、源程序结构,二、基本类型数据的表示和引用,系统预定义数据类型,基本类型常量的表示,基本类型变量的声明和直接引用,基本类型变量的间接引用(指针应用),三、表达式,四、标准输入,/,输出,五、语句,命题基本原则及考核点,难题,:,语法,:,单选,基本概念填空,阅读程序部分,算法和数据结构的综合应用,:,阅读程序,完善程序,上机,填空,改错,:,语法错,语义错,算法错,编程,:,主函数,功能函数,命题基本原则及考核点,语法,:,六、函数,1.,函数定义,2.,函数声明,3.,函数直接调用、间接调用(指针应用),4.,递归函数的定义与调用执行流程,5.,标识符作用域规则,七、构造类型数据成员的引用,数组声明和数组元素的直接引用,结构定义、结构变量声明和结构变量成员的直接引用,数组元素、结构变量成员的间接引用(指针应用),八、文件输入,/,输出,九、预处理命令,命题基本原则及考核点,一、常用算法,分类,(,排序,),算法冒泡,选择,插入,检索,(,查找,),算法,(1),无序数据序列的查找,(,见遍历算法,)(2),有序数据序列的查找,:,二分法,遍历算法,(1),一维数组和二维数组的遍历,(2),单向链表的遍历,(3),文件的遍历,其它基本算法递推法,穷举法,二分法,牛顿法求方程根,梯形法求定积分等,.,命题基本原则及考核点,二、典型问题,数值问题,素数问题,求因子,3.,整数拆位、反序数、回文数,4.,最大公约数,最小公倍数,5.,求最值、平均值,6.,累加,累乘、阶乘、级数,(,近似值计算,),命题基本原则及考核点,三、典型问题,一维数组数据处理,生成(数列),变换(编码,/,解码,压缩,/,还原 ,,循环移位等,),查找(指定值,最大值,最小值),排序,插入(一个数),删除(一个数,重复的多个数),更新(一个数),统计,合并(两个数列),集合运算,模拟高精度算术运算,四、典型问题,字符串数据处理,子串查找,,子串统计,,子串删除,,子串替换 ,,整型,/,实型机器数与字符串表示相互转换,字符串变换(编码,/,解码,压缩,/,还原),命题基本原则及考核点,命题基本原则及考核点,五、典型问题,二维数组,数据处理,生成(矩阵),变换(改变数值,改变数据存储位置),查找(指定值,最小值,最大值),排序(按行排序,按列排序),插入(一个数,一行数,一列数),删除(一个数,一行数,一列数),更新(一个数,一行数,一列数),统计,合并(两个矩阵),命题基本原则及考核点,六、典型问题,一维结构数组,数据处理,查找,(直接查找,通过指向结构数组的指针数组查找),排序,(结构数组排序,指向结构数组的指针数组排序),插入(一条记录),删除(一条记录),更新(一条记录),统计,笔试形式,基础知识,和,c,语言程序设计,两部分组成,基础知识全部为,单选题,c,语言程序设计部分分为,单选题,和,填空题,答题要求:,单选题,的答案必须涂划在,专用答题卡上,;,填空题,的答案必须写在,专用答题纸上,(,填空时注意:每个填空要,按标号顺序填,,一空占一行,不是一题一行;因为,有的题目一题包含多个空,),。,上机考试形式,上机题总分为,填空题,改错题,:改错题中所,存在的错误,主要是,语法错误,(,如数组的声明错误、函数定义错误等,),、,运行错误,(,如包含不正确的头文件,),、,逻辑错误,等。,编程题:编程题程序中,通常都涉及一个,有一定难度的算法,,考生须按题目要求实现,二、,C,语言概述,、,C,程序的结构、,main,函数,一个程序可由多个函数构成,其中必有唯一的一个主函数。它是整个程序的入口,也是整个程序的出口。,、标识符的命名规则,规则:字母或下划线开始的字母、下划线和数字串。,语句中的保留字不能作为标识符。(教材,375,),所有的函数名可以作为标识符。,、,C,程序的上机过程,编辑,编译,连接,运行,三、数据类型及其运算,1,、常量、变量,常量:固定不变的量。,整型常量:,十进制(,29,)、八进制(,029,)和十六进制(,0x29,),实型常量:,小数表示(,123.456,)、指数表示,(1.23456e+002),字符常量:,普通字符(,A a 2 + ,)、转义字符(,qqq xhh,),符号常量:(一般用大写字符表示),# define PI 3.1415936,三、数据类型及其运算(续一),变量:,整型:,基本整型:,2,字节,int ( -32768-+32767 ),无符号基本整型:,2,字节,unsigned int ( 065535 ),长整型:,4,字节,long int,或,long,无符号长整型:,4,字节,unsigned long int,或,unsigned long,实型:,单精度,: 4,字节,float,双精度,: 8,字节,double,字符型:,有符号字符,: 1,字节,char ( -128127 ),无符号字符,: 1,字节,unsigned char ( 0255 ),三、数据类型及其运算(续二),2,、不同类型数据之间的混合运算,表达式值的类型由该式子中最长的数据类型决定。,float,型无条件转换成,double,型。,char,型无条件转换成,int,型。,* 注意强制类型转换的用法。(类型名),(,int,),x+y,等价于(,int,),x,),+y,参与运算的数据类型改变了,,x,的类型不变。,3,、算术运算符和运算表达式(,+ - * / %,),/ : a / b a,b,都是整型 结果是整型,%,:,a % b a,,,b,都必须是整型,三、数据类型及其运算(续三),4,、赋值运算符和赋值表达式(右结合性),号 左边只能出现变量,具有强制类型转换作用,if ( (c=getchar() ) !=n) ,复合赋值运算,a*=x+y,等价于,a=a*(x+y),5,、逗号运算符和逗号表达式,加;号构成表达式语句,作为其它语句的一部分或函数的参数时要加括号,6,、表达式的类型识别,7,、有关运算符,功能:优先级:结合性:表达式的值:,三、数据类型及其运算(续四),8,、关系运算符和关系表达式, = (6,级,),= != (7,级,),注意:,等于零和不等于零的表示方式,a !a,两个实数判相等和判不相等的方法,ax & xb,不能写成,ax b ? x : y ? m : n,y,应先与后面的运算符结合,12,、位运算符,(按位取反,2,级),&,(按位与,8,级),(按位异或,9,级),|,(按位或,10,级),13,、,数学算式的,C,语言表示,三、数据类型及其运算(续八),14,、输入输出函数,输入函数:,getchar() gets() scanf(),输出函数:,putchar() puts() printf(),注意:,1),getchar(),是无参函数,从输入设备读取一个字符,包括不可显示字符(一般形式,c=getchar(),)。,2),gets(),和,puts(),函数只有一个参数,且为字符串的首地址。,3),scanf(),函数的格式控制符中的普通字符照原样输入。,4),printf(),函数中的实参的求值顺序从右向左。,四、语句,、表达式语句,、函数调用语句,、复合语句,、空语句,、控制语句,四、语句(选择语句),(一),if,语句一般格式,if,(表达式)语句,或,if,(表达式)语句,1,else,语句,2,注意:,“表达式”应有括号,且可为各种类型的表达式,“语句”如是复合语句应有括号,“语句”还可以是,if,语句,数学分段函数的求值问题,繁琐的二维数组填值问题(结合循环语句,几乎每次都考),四、语句(选择语句,_,续),(二),switch,语句一般格式,switch,(表达式),case,常量表达式,1 :,语句,1,;,break;,case,常量表达式,2 :,语句,2,;,break;, ,case,常量表达式,n :,语句,n,;,break;,default :,语句,n+1,;,注意:,执行流程,“语句”可为多个单个语句,此时不必加大括号,default,语句可缺省,switch,语句嵌套使用时,,break,语句只跳出它所处的哪层,switch,整型、字符型或枚举类型,根据需要选择,四、语句(循环语句,_1,),(一)当型循环语句一般格式,while,(表达式)语句,注意:,“表达式”应有括号,“语句”为复合语句时应加大括号,在语句中应有使“表达式”趋于不成立的语句存在,在复合语句中含有,break,和,continue,语句时的情况:,while,(表达式), ,break;, ,continue;,四、语句(循环语句,_2,),(二)直到型循环语句一般格式,do,语句,while,(表达式),;,注意,:,无论表达式是否成立,循环体至少执行一遍,“表达式”应有括号,后面的“;”号不能丢,“语句”为复合语句时应加大括号,在语句中应有使“表达式”趋于不成立的语句存在,在复合语句中含有,break,和,continue,语句时的情况:,do, ,break;, ,continue;,while,(表达式),;,四、语句(循环语句,_3,),(二),for,型循环语句一般格式,for,(表达式,1,;表达式,2,;表达式,3,),语句,注意,:,“语句”为复合语句时应加大括号,在语句中应有使“表达式,2”,趋于不成立的语句存在,在复合语句中含有,break,和,continue,语句时的情况:,繁琐的二维数组填值问题(结合循环语句,几乎每次都考),三种循环语句相互嵌套使用的情况,五、数组(一维数组),(一)一维数组,定义:,类型名数组名,常量表达式,;,定义并初始化:,类型名数组名,常量表达式,表达式列表;,或:类型名数组名,表达式列表;,引用:,只能引用下标变量。,注意:,、不能定义动态数组如:,int n ; int an;,、只能在定义数组的时候初始化,以后不可整体赋值,、除字符数组外,不可整体引用数组,、一般用单循环语句引用数组元素,、内存中连续存储,数组名为其存储的首地址,五、数组(二维数组),(二)二维数组,定义:,类型名数组名,常量表达式,1,常量表达式,2,;,定义并初始化:,类型名数组名,常量表达式, ,;,引用:,只能引用下标变量。,注意:,、不能定义动态数组,、只能在定义数组的时候初始化,以后不可整体赋值,、不可整体引用数组,、一般用双重循环语句引用数组元素,、按行在内存中连续存储,数组名为行的行地址,,ai,为第,i,行第个元素的地址如:,int a33,引用,a05,正确,、与双重循环语句一起应用(二维数组填值问题),五、数组(字符数组),(三)字符数组(一维、二维),具有普通一维数组和二维数组的性质。,特点:,、可以定义时初始化,也可以后用,strcpy(),赋值。,、可以引用下标变量,也可整体引用(一维),、一般用于存放字符串,、字符串的基本概念,)串结束符 )内存单元地址,字符串,、字符串操作函数的使用,)串长度(编程实现) )串复制(赋值),)串拼接(编程实现) )串比较(不能用关系运算符),、字符串的输入和输出,( char c20 ; ),),gets (c) ;,和,scanf ( “%s” , c ) ;,区别,、二维字符数组的引用有下标引用法和数组名加第一维下标引用法,六、函数,主要内容,(,一,),、函数的定义,(,二,),、函数的参数,(,三,),、函数的返回值,(,四,),、函数的调用,(,五,),、数组作为函数的参数,(,六,),、局部变量和全局变量,(,七,),、变量的存储类别,六、函数(函数的定义),(,一,),、函数的定义,函数可理解为一个程序段,给予一定的输入就会产生一定的输出。函数的定义就是在使用函数前对函数功能的完整性描述。,一般形式:,函数类型函数名(参数列表), ,函数体, ,注意:,、函数的定义就是函数的说明,、函数由“头部”和“函数体”构成,、函数类型指函数返回值的类型(可以无返回值,void,),六、函数(函数的参数),(,二,),、函数的参数,参数列表中的参数为形式参数,它们和函数体中定义的变量一起构成该函数的局部变量,形参是接受数据的通道,由于是第一次出现,因此要作类型说明。,注意:,、形参要一一说明,、实参和形参要做到类型、顺序和数量一致,、实参和形参可以同名,但它们都是所处函数内部的局部数据,、实参可以是常量、量变、函数和表达式,形参只能是变量,、在发生函数调用时,实参是将值(或地址)赋给形参的,六、函数(函数的返回值),(,三,),、函数的返回值,通过调用函数,从被调函数中得到的值称函数的返回值。,注意:,、调用函数得到返回值有三种途径:,)在被调用函数中用,return,语句可以(且只可)得到一个返回值,)使用全局变量,全局变量对所有函数都有效,)实参和形参采用地址复用的方法(考点),、被调用函数有时没有返回值,此时定义为,void,型,、被调用函数返回值类型由函数的类型确定,、,return,表达式;,、被调用函数返回后,在主调函数中继续执行调用语句的下一个语句,六、函数(函数的调用),(,四,),、函数的调用,函数调用是将程序的执行流程转向被调用函数,被调用函数执行完毕后再回到主调用函数继续执行。,注意:,、根据被调用函数的类型函数调用有三种形式:,)函数调用作为表达式的一部分(被调用函数有返回值),)函数调用作为其它函数的参数(被调用函数有返回值),)函数调用加“;”号构成函数调用语句(被调用函数无返回值),、函数调用的形式,)嵌套调用,)递归调用:递归函数的编程特点,递归函数的阅读特点,六、函 数(数组作函数的参数,_1,),(,五,),、数组作为函数的参数,由于可以从数组名得到数组在内存储单元存储的起始位置,它是一个地址常量,因此在计论数组作为函数参数时结合指针一并讨论。,()一维数组(指向变量的指针)作为函数的参数,在实参和形参位置上共有四种情况,:(假定,int a 10 ; int *p ;,),实参(调用点) 形参(定义点),x=max( a,10 ) ;,地址复用关系,int max ( int b , int n ),x=max( a,10 ) ;,赋值调用关系,int max ( int *p , int n ),x=max( p=a , 10 ) ;,地址复用关系,int max ( int b , int n ),x=max( p=a , 10 ) ;,赋值调用关系,int max ( int *p1,int n ),六、函 数(数组作函数的参数,_2,),()二维数组(指向行的指针)作为函数的参数,在实参和形参位置 上共有四种情况,:(假定,int a 34 ; int (*p)4 ;,),实参(调用点) 形参(定义点),x=max( a,3,4 ) ;,地址复用关系,int max ( int b4, int m,int n ),x=max( a,3,4 ) ;,赋值调用关系,int max( int (*p)4 , int m,int n ),x=max( p=a , 3,4 ) ;,地址复用关系,int max ( int b4 , int m,int n ),x=max( p=a , 3,4 ) ;,赋值调用关系,int max ( int (*p1)4,int m,int n ),六、函数(局部和全局变量),(,六,),、局部变量和全局变量(变量的空间观),局部变量,、某函数内部定义的变量,只在该函数内部有效,、分程序(复合语句)内部定义的变量,只在分程序中有效,、形参属于局部变量,全局变量,、函数外部定义的变量,作用范围从定义点开始到程序最后,定义点之前的函数可用,extern,进行申明来扩展其作用范围,、在全局变量的作用范围内如遇同名的宏定义,则在宏定义之后,同名应该用宏名置换(,2004,年秋选择题,26,题),六、函数(变量的存储类别),(,七,),、变量的存储类别(变量的时间观),存储方法分两大类:,、静态存储区:,全局变量,(,程序开始执行赋值,),、,局部静态变量,(,编译时赋初值,只赋一次,),、动态存储区:,局部变量,(,含形参、函数内定义的变量和分程序中定义的变量,),具体分四种:,、自动变量,auto,动态局部变量,、,static,申明的变量 静态局部变量,、,register,变量 动态局部变量,、,extern,申明变量 扩展全局变量作用范围,七、编译预处理,处理工作在编译前完成。,(,一,),、宏定义,用宏体置换程序中的宏名。不要将宏体化简后代入,有嵌套定义的宏名需逐层代入。,(,二,),、文件包含,和“”的搜索包含文件区别:,在库函数头文件所在的目录中寻找(标准方式)、“”先在用户的当前目录中寻找,找不至再按标准方式寻找。,文件包含不但可以包含函数的头文件,也可包含*,.,文件。,(,三,),、条件编译,八、指针(基本概念),(,一,),、地址和指针,变量,i,地址变量,i_point (,存储其它变量地址的变量,),指针变量作为函数的参数,i_point,2000,i,2000,指针变量,i_point,指向变量,i,八、指针(数组和指针),(,二,),、数组的指针和指向数组的指针变量,由于数组连续存放的特性,当指针指向数组(即数组元素)时,通过指针指向的连续变化来指向数组中不同的元素以获取对数组元素的操作。,例:,int a5,*p ;,p=,*p a3,*p,的计算结果找到了整型数组成员,a3,*&a3 a3,对,a3,的地址,作间接存取运算,结果为变量,a3,&*p &a3,对*,p,的计算结果,进行取址运算得到,a3,的地址,a0,a1,a2,a3,a4,p,八、指针(数组和指针,_,续),数组名作函数参数,实参(调用点) 形参(定义点),x=max( a,10 ) ;,地址复用关系,int max ( int b , int n ),x=max( a,10 ) ;,赋值调用关系,int max ( int *p , int n ),x=max( p=a , 10 ) ;,地址复用关系,int max ( int b , int n ),x=max( p=a , 10 ) ;,赋值调用关系,int max ( int *p1,int n ),指向多维数组的指针,实参(调用点) 形参(定义点),x=max( a,3,4 ) ;,地址复用关系,int max ( int b4, int m,int n ),x=max( a,3,4 ) ;,赋值调用关系,int max( int (*p)4 , int m,int n ),x=max( p=a , 3,4 ) ;,地址复用关系,int max ( int b4 , int m,int n ),x=max( p=a , 3,4 ) ;,赋值调用关系,int max ( int (*p1)4,int m,int n ),八、指针(表达式类型的判断),如何判断一个是数组元素、数组元素的地址?,一、一维数组,int aN;,、,a,是该数组在内存中的起始地址。,、取地址运算,、间接访问运算*,、下标运算,二、二维数组,int aMN;,、,a,是该数组的行起始地址。,、*,(a+i),或,ai,表示第行的第一个元素地址,、取地址运算,、间接访问运算*,、下标运算,取地址,间接访问,元素:,ai,、*,(a+i),、*,&ai,、*,a,地址:,a,、,a+i,、,&ai,行地址:,a+i,i,行第个元素地址:*,(a+i),、,ai,元素:,aij,、*,(*(a+i)+j),、*,(ai+j),、,(*(a+i)j,地址:,&aij,、*,(a+i)+j,、,ai+j,、,&(*(a+i)j,八、指针(字符串的指针),字符串概念,、以内存某一起始字节开始到,0,字符结束的若干字节。,、字符,0,的,ASCII,码值为。,、字符串所占内存空间为串长加。,、从语言角度对字符串的理解:从内存某一起始字节开始,向地址值增大的方向以字节为单位连续寻找,如,ASCII,码不等于,则其所代表的字符为字符串中有效字符,如,ASCII,码等于,则字符串结束。,、内存单元某一字节的地址。,、可用一维字符数组存放。,、可用指向字符变量的指针存放。,、看见常量字符串应将其理解为第一个字符的地址。,八、指针(字符串的指针,_,续),例:,main(), printf(,“,%s,%u,%cn,”,”,We,”,”,love,”,*,”,figs,”,);,运行结果:,We,417,f,说明,:,“,love,”,为指针,以,%u,格式输出,“,love,”,的值,即输出该字符串的首地址。,*,“,figs,”,为该字符串的第一个字符。,例:,main(), if(,“,abc,”,=,“,abc,”,) printf(,“,Same!n,”,);,else printf(,“,Not same!n,”,); ,运行结果:,Not same!,说明,:比较两个字符串的起始地址,它们不可能相同。,八、指针(指针数组),(3),使用指针数组处理二维数组,例:,int a34,*p3,i ;,(*p3,是指针数组,),for(i=0;i3;i+) pi=ai;,说明,:,p,数组的三个元素,分别是指向整型变量的指,针(元素指针),指针数,组名,p,的增值为一维数组,长度,。,a00,a10,a20,p0,p1,p2,p,p+1,p+2,通过指针,p,引用数组元素的方式:,pij,*(pi+j),*(*(p+i)+j),(*(p+i)j,注意:,a,为二维字符数组的情况,为地址的地址,即指针的指针,八、指针(指针的指针),指针的指针(二级间址访问),指向指针数据的指针变量又称为指针的指针,或,指针链。其定义的一般格式:,类型说明符 *指针变量名,例:,static char *name=“book”,”print”,”gread”;,char *p ;,定义指针的指针,p,p=name ; p,指向指针数组,name,则:,*,p,即,name0,*,(p+1),即,name1,*,(p+i),即,namei,name,name0,name1,name2,b,o,o,k,0,p r i n t 0,g r e a d 0,p,name,数组,字符串,八、指针(指针的指针,_,续),例:,main(), char *p ;,static char *d=“up”,”down”,”left”,”right”;,int i ;,p=d ;,for(i=0;i4;i+),printf(“%sn”,*p+);,八、指针(返回指针值的函数),返回指针值的函数,(,指针函数,),一个函数的返回值为某种数据类型的地址值,即指针类型数据,称该函数为指针型函数。,说明返回指针型函数的格式:,类型说明符 *函数名,(,参数表,),;,例:,int *a(x , y);,八、指针(返回指针值的函数,_,续),void main(),static float score4= ;,float *search();,/*,search(),返回,指向实型数据的指针,*,/,float *p,; int i,m ;,/*,p,为指向实型数据的指针,*,/,scanf(“%d”,printf(“The scores of No.%d are:n”,m);,p,=search(,score,m); /*,score,为行指针,*,/,for(i=0;iy) z=x;,else z=y;,return(z);,八、指针(函数的指针,_,续),/*函数,max(),min(),add(),定义略*/,main(),int max(),min(),add();,int a,b ;,printf(,“,Enter a and b:,”,);,scanf(,“,%d%d,”,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(,“,%dn,”,result); ,三次调用传递了三个,不同的函数入口地址,利用函数指针调用不同,的函数,增加了函数调,用的灵活性,九、结构体与共用体,结构体,一、结构体变量的定义,struct,结构体名,类型标识符 成员名,1,类型标识符 成员名,2,.,类型标识符 成员名,n,;,只定义了结构体类型,struct,结构体名,类型标识符 成员名,1,类型标识符 成员名,2,.,类型标识符 成员名,n,a , b , c3,;,定义了结构体类型和变量,struct,类型标识符 成员名,1,类型标识符 成员名,2,.,类型标识符 成员名,n,a , b , c3,;,只定义了结构体变量,typedef struct,DATE,a , b , c3,;,定义,为结构体变量,类型标识符 成员名,1,类型标识符 成员名,2,注意:考试中多采用此种形式,.,类型标识符 成员名,n,(可嵌套定义),DATE,;,定义,DATE,为结构体类型,九、结构体与共用体,二、结构体变量的引用,只可引用最低级成员,struct data, int month;,int day;,int year;,;,struct, int num;,char name20;,char sex;,int age;,struct data birthday;,char addr30;, stud;,stud.name,串首地址,stud.name0,正确引用,注意:,、运算符“,.”,为左结合性,第一级,、成员类型决定引用类型,、引用结构体成员可像普通变量一样,赋值、输入、输出、运算,九、结构体与共用体,三、指向结构体类型数据的指针,# include string.h,main(), struct student, long int num;,char name20;,char sex;,float score;,;,struct student stu_1;,struct student *p;,p=,stu_1.num=89101;,strcpy(stu_1.name,Li Lin);,stu_1.sex=M;,stu_1.score=89.5;,定义结构体变量,stu_1,定义结构体类型指针,P,指向,stu_1,首地址,九、结构体与共用体,有了指向结构体变量的指针,对结构体变量中成员引用的三种方法,:,1,、结构体变量名,.,成员名,2,、,(*p).,成员名,3,、,p -,成员名,“*”,号运算低于“,.”,运算,P-n+,+p-n,(+p)-n,九、结构体与共用体,四、用指针处理链表,、有关函数,malloc(size); malloc(sizeof(,数据类型,),calloc(n,size); calloc(n,sizeof(,数据类型,),free(p);,、链表结点的数据结构:,struct student,int num;,float score;,struct student *next;,/*,特殊成员链接需要,*,/,;,结点自身需要,九、结构体与共用体,、链表的操作, 链表创建, 结点插入, 结点删除, 链表输出,注意:,得到链表只要得到链首指针。,调用函数对已知链表实施操作只要传递链首指针,被调用函数都是返回指针值的函数,九、结构体与共用体,共用体,一、共用体变量的定义,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 ch10;,float f;,int b5 ;, a;,占,10,个字节内存空间,九、结构体与共用体,二、共用体变量的引用,只可引用最低级成员,共用体变量名,.,成员名,不能引用共用体变量,只能引用其成员。,出现在结构体的定义中。,#include stdio.h,struct, int num;,char name10;,char sex;,char job;,union,int class;,char position10;, category;, person2;,同一内存段放不同类型成员,某一时刻只有一个即最后存放的成员起作用。,九、结构体与共用体,枚举类型,一、枚举类型定义和枚举变量,:,enum weekday sun,mon,tue,wed,thu,fri,sat day;,变量,day,只可取,sun,到,sat,之间的单个值,二、枚举类型的引用说明,:,1,、枚举元素是用户自定义的常量,不可赋值。,2,、,C,语言按定义顺序使枚举元素的值为,0,,,1,,,2.,定义时可改变枚举元素的值,后继元素在其基础上顺序加,1,enum week sun=1,mon=7,tue wed fri sat day ;,3,、枚举元素可进行比较,按定义时的顺序值来比较。,if ( day = = mon ).,4,、枚举变量可赋值,但要注意类型。,day=(enum week) 2;,day=tue; /*,二者等价*,/,九、结构体与共用体,用,typedef,定义类型,概念,:,用,typedef,定义新类型符号来替代已有的类型名。,注意:没有创建新类型。只定义了,类型的别名。,定义:,typedef,原类型名 新类型名;,方法:,1,、按定义变量的方法写定义体。,int i;,2,、将变量名换成类型别名。,int count;,3,、在最前面加,typedef,。,typedef int count;,4,、用类型别名去定义变量,count,九、结构体与共用体,语言中几种数据类型的重新定义:,typedef int NEW;,typedef float NEW;,typedef char NEW;,typedef int NEW10;,typedef int *NEW;,typedef int (*NEW)();,typedef struct,类型标识符 成员名,1,类型标识符 成员名,2, .,类型标识符 成员名,n, DATE,;,十、位运算,位运算符,右移 级,按位与级,按位异或级,按位或级,左结合性,十一、文件,一、文件的基本操作,# include “stdio.h”,main(), FILE *fp1,*fp2;,fp1=fopen(“d:,文件名”,“,读打开方式”,);,fp2=fopen(“d:,文件名”,“,写打开方式”,);, ,fscanf (fp1, “,格式控制”,输入列表,);, ,fprintf (fp2, “,格式控制”,输出列表,);, ,fclose (fp1);,fclose (fp2);,打开方式:,“”只读,“”只写(如文件存在则覆盖),“”在文件尾追加,“”可读可写(文件已存在),“”先写后读(新建文件),“”在已知文件尾追加、可读,十二、算法,主要算法,、累加和、累乘积,、最大公约数、最小公倍数,、素数,、排序(冒泡法、选择法、插入法),、一维数组,)求最大(小、平均)值、逆序存放,)满足条件元素之和,)字符数组或数值数组的移位或循环移位问题,)一维数组查找(顺序、折半)、插入和删除元素,、二维数组,)求最大(小、平均)值,)满足条件元素之和,对角线、周边、奇数、偶数、下三角、上三角等等,)转置,)二维字符数组存放字符串,ai,的含义,十二、算法,、数的拆分与拼装,满足条件的数。如:水仙花数,掌握循环分解方法。,、字符串,子串、子串替换、单词数、数制转换、排序、合并、四文,)编程实现字符串处理函数,)牛顿迭代法、二分法求方程的根,)链表操作,创建、插入、删除、输出结点、逆置、排序、循环链表。,)其它注意事项,实数判零,整除及求余,gets(),和,scanf(),的区别,二维数组的输出问题,十二、算法,字符串处理函数注意,strcmp(s1,s2),的用法,char *s,c20;,的含义及用法,函数:类型、调用、实参、形参、返回值,c=getchar(),的使用,注意整数相除的表达式,分段函数求解,逻辑表达式求解及,axb,含义表达式的书写,十三、上机考试注意事项,、填空,、改错题可能出现的情况(四个错误),*函数调用(类型、调用方式、参数对应等),*文件包含缺少,*变量的使用,*前面提到的其它注意事项,*主要算法,、编程题(算法文件操作),*一定是文件操作题(五个要素),*文件名,输出位置一定按题目要求进行,*算法有一定难度(一般都是小算法的综合),
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!