闽南师范大学C语言期末复习(第一至九章复习)_第1页
闽南师范大学C语言期末复习(第一至九章复习)_第2页
闽南师范大学C语言期末复习(第一至九章复习)_第3页
闽南师范大学C语言期末复习(第一至九章复习)_第4页
闽南师范大学C语言期末复习(第一至九章复习)_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、intshort intlong intunsigned intunsigned short intunsigned intcharunsigned charufloatdouble整形():注意溢出问题短整形( )长整形( )整形无符号整形( )无符号短整形( )无符号长整形( )基本类型字符型():%c字符型无符号字符型( ):%数据类型单精度():7位有效数字浮点型 双精度()0long doublelfenumstructuni:16位有效数字注意整数部分如果是 ,可缺省长双精度( ):输入输出格式控制,%枚举()指针类型(*):所占字节:2个字节,指针数组、数组指针、指针函数、函数指

2、针、多维指针数组():数组为特殊的常量指针,但和指针又有区别,主要差别在占的内存构造类型 结构体():内存为所有成员之和联合(onvoid):内存为占内存最大的成员的长度空类型()n位整型变量的变化范围(重要考点)ln位有符号整型变量变化范围:ln位无符号整型变量变化范围:n0,21n-1n-12, 21 C语言课程复习语言课程复习语言从结构上看是由一个个函数构成,入口点必须是语言从结构上看是由一个个函数构成,入口点必须是mainmain函数;函数;在使用系统库函数时在使用系统库函数时, ,要用预编译命令要用预编译命令“#include”#include”将有关的将有关的“头文件头文件”包括到

3、用户源文件中包括到用户源文件中预编译命令不是语句,不加分号,不占运行时间,占编译时间,对于预编译命令不是语句,不加分号,不占运行时间,占编译时间,对于#define#define预编译,预编译,注意展开不合并原则注意展开不合并原则重要系统函数:重要系统函数:1、三角函数三角函数 sin、cos 、tan2、绝对值函数绝对值函数 abs(整形)、(整形)、fabs(浮点型)、(浮点型)、labs(长整形)(长整形)3、exp和和pow函数,一定不能用函数,一定不能用a2表示表示a2,要用,要用pow(a,2)4、log和和log105、sqrt函数函数6、随机函数、随机函数rand(stdlib

4、.h)7、字符输入函数、字符输入函数: getchar 字符输出函数字符输出函数:putchar8、格式输入函数、格式输入函数: scanf 格式输出函数格式输出函数: printf9、字符串输入函数字符串输入函数:gets 字符串输出函数字符串输出函数:putsturbo Cturbo C中:中:charchar占占1 1个字节,个字节,intint、shortshort占占2 2字节,字节,floatfloat、longlong占占4 4字节,字节,doubledouble占占8 8字节,一个字节字节,一个字节8 8位,字符用半角单引号,字位,字符用半角单引号,字符串用半角双引号,且系统自

5、带符串用半角双引号,且系统自带00做结束符,亦占一个字节做结束符,亦占一个字节变量定义注意在数据类型和变量间加空格,变量定义注意在数据类型和变量间加空格,clrscr()clrscr()清屏函数清屏函数要在变量定义之后,输入输出函数之前。要在变量定义之后,输入输出函数之前。数据溢出问题:重头计数数据溢出问题:重头计数, ,正溢出,负溢出正溢出,负溢出负数补码求解:绝对值原码的反码负数补码求解:绝对值原码的反码+1+1floatfloat型数据强制转换成型数据强制转换成intint数据:小数部分直接去掉数据:小数部分直接去掉实数的指数形式表达:实数的指数形式表达:1 1、E E前有数,前有数,2

6、 2、E E后整数后整数A-65A-65,a-97a-97,注意相差注意相差3232,空格,空格-32-32,0-480-48,0-00-0,n-10n-10八进制数表示:八进制数表示:0dd0dd或者或者dddddd,十六进制数表示:,十六进制数表示:0 x0 x或或xhhxhh转义字符:转义字符:n-n-回车换行,回车换行,“ - -双引号,双引号,b-退格退格,t-tab,t-tab键键 C C语言规定标识符(即变量名):语言规定标识符(即变量名):1.1. 只能由字母、下划线和数字三种字符组成,只能由字母、下划线和数字三种字符组成,2.2. 且第一个字符必须为字母或下划线。且第一个字符

7、必须为字母或下划线。3.3. 并且不允许使用关键字并且不允许使用关键字4.4. 区分大小写区分大小写l问:一个变量被定义后,它是否就有值了呢?答:定义后,值是不确定的,问:一个变量被定义后,它是否就有值了呢?答:定义后,值是不确定的,需要初始化需要初始化强制运算符语法格式:强制运算符语法格式:(数据类型)数据,(数据类型)数据,注意括号一定不能漏,重要考点!注意括号一定不能漏,重要考点!%表示求余数,注意它是唯一要求操作数都是整数的算术运算符表示求余数,注意它是唯一要求操作数都是整数的算术运算符d=m*n; /两个数的乘积两个数的乘积if(m双目双目三目;算术三目;算术关系关系逻辑逻辑赋值赋值

8、逗号;逗号;高于高于高于高于&高于高于|;!高于;!高于&高于高于|,例题:,例题: 结合性:赋值、条件运算和结合性:赋值、条件运算和+、-是右结合性复合语句:是右结合性复合语句:内语句要加内语句要加分号,外则不加,切记!分号,外则不加,切记!区别:区别:c-2和和c=c-2,一个没改变,一个没改变c值,一个改变了值,一个改变了 使特定位翻转,想使一个数使特定位翻转,想使一个数4位翻转。可以将它与位翻转。可以将它与00001111进行进行运算。运算。else总是与它上面的,最近的,同一复合语句中的,未配对的总是与它上面的,最近的,同一复合语句中的,未配对的if语句配对。语句配对。 switch

9、语句的格式使用注意点:语句的格式使用注意点:1. switch下方为下方为括成的复合语句,不能漏括成的复合语句,不能漏2. switch括号中的表达式只能是整型或者字符括号中的表达式只能是整型或者字符3. case和表达式之间需要有空格,不能漏和表达式之间需要有空格,不能漏4. case之后的冒号不能漏之后的冒号不能漏5. break可以不加,但会顺延执行非匹配语句可以不加,但会顺延执行非匹配语句6. default位置不一定最后,但一定最后执行,且如果没有位置不一定最后,但一定最后执行,且如果没有break,也要顺延执行,也要顺延执行7. default可以省略可以省略 for循环循环1.

10、表达式表达式1只执行一次只执行一次2. 表达式表达式2若空,则为死循环,要掌握根据循环条件判断循环次数若空,则为死循环,要掌握根据循环条件判断循环次数3. 表达式表达式3通常是循环变量更新,注意顺序:通常是循环变量更新,注意顺序:表达式表达式2-循环体循环体-表达式表达式3 do while循环,循环,注意条件成立是往上运行上面的循环体注意条件成立是往上运行上面的循环体1. 注意格式:注意格式:do while(); 分号不能少!分号不能少!区分区分while语句,语句,while() 执行语执行语句;注意这里的句;注意这里的while()不能加分号不能加分号2. 循环体至少执行一次,而循环体

11、至少执行一次,而while语句和语句和for循环可能一次都不执行循环可能一次都不执行continue和和break,本质区别在于是否跳出当前循环,更要注意,只有,本质区别在于是否跳出当前循环,更要注意,只有break能在循环体和能在循环体和switch语句中使用,语句中使用,continue不能在不能在swtich中使用中使用如果循环体中包含如果循环体中包含switch语句,而且语句,而且continue位于位于switch结构或者结构或者if中,中,该该continue也只对循环起作用。也只对循环起作用。字符串重命名字符串重命名预编译预编译: #define 标识符标识符 字符串,注意字符串

12、,注意展开不合并原则展开不合并原则数据类型重命名数据类型重命名语句语句:typedef int Interg; 自增自减自增自减+和和-:1. 注意前缀运算和后缀运算注意前缀运算和后缀运算2. 右结合性右结合性,-i+3. 从左到右字符串最大化原则从左到右字符串最大化原则:i+j等价于等价于(i+)+j数据交换程序段:数据交换程序段:t=a;a=b;b=t;背下来!背下来! 求余号:求余号:%,结合整除问题,如被,结合整除问题,如被3整除:整除:a%3=0,不能被,不能被3整除:整除:a%3!=0,千万不要写成千万不要写成a%3!=0,易错点易错点 可作为数据分离,一个三位数可作为数据分离,一

13、个三位数m,百位:,百位:m/100%10,十位:,十位:(m-m/100*100)/10或者或者m/10%10也行,个位:也行,个位: (m-m/100*100)%10或者或者m/1%10,教材,教材P64while(k=4)k+;、while(k)k+;、 while(k=4)k+;的区别的区别重要题型:多项式求和,图形问题,数列应用题,重要题型:多项式求和,图形问题,数列应用题,循环嵌套问题循环嵌套问题,选择循环,选择循环嵌套问题,嵌套问题,重要解题手段:重要解题手段:1、Z=a*i+b*j+c 2、图解分解法、图解分解法子函数如果定义在主函数之前,不用声明,如果定义在主函数之后,要声明

14、子函数如果定义在主函数之前,不用声明,如果定义在主函数之后,要声明while( leftamid) left=mid+1; else right=mid-1;算法算法2:折半查找核心代码:折半查找核心代码: 一维数组一维数组a+i不能理解成数学上的加不能理解成数学上的加i,要理解成向下移动,要理解成向下移动i个元素,地址计个元素,地址计算:算:a+i*d,其中,其中d表示元素占的内存大小表示元素占的内存大小 一维数组重要公式,下标法和指针法转换:一维数组重要公式,下标法和指针法转换:*(a+i)=ai ,&和和*互为反运算互为反运算 一维数组名本质是常量地址,不能进行自增自减运算、赋值运算一维

15、数组名本质是常量地址,不能进行自增自减运算、赋值运算 一维数组可以部分赋值,但绝不能完全不赋值,如一维数组可以部分赋值,但绝不能完全不赋值,如int a3=就是错的就是错的 一维数组定义时,中括号中只能是整型常量或整型表达式,不能是变量一维数组定义时,中括号中只能是整型常量或整型表达式,不能是变量 只有指向同一数组的两个指针变量之间相减才有意义;相减的结果是两个只有指向同一数组的两个指针变量之间相减才有意义;相减的结果是两个指针所指向的元素之间个数之差。指针不能相加指针所指向的元素之间个数之差。指针不能相加 二维数组只能缺省第一维的长度,不能缺省第二维长度二维数组只能缺省第一维的长度,不能缺省

16、第二维长度sizeof:可以含:可以含0,且遇到,且遇到0不结束,不结束,strlen:遇到:遇到0则结束,且不包含则结束,且不包含0sizeof(数组名)(数组名)= =数组元素个数数组元素个数*类型所占字节,类型所占字节,sizeof(指针指针)= =2for(i=0;i9;i+) / 控制控制9轮排序轮排序 min_at=i; /min_at要记录值最小的元素的下标要记录值最小的元素的下标 for(j=i+1;jaj) min_at=j; /记下更小数的下标记下更小数的下标 if(min_at != i) /如果如果ai不是最小,则交换不是最小,则交换 temp=ai;ai=amin_a

17、t;amin_at=temp; 2、选择排序,核心思想:每次只找最小的数交换(算法、选择排序,核心思想:每次只找最小的数交换(算法4)for(i=0;i9;i+) for(j=i+1;jaj) temp=ai;ai=aj;aj=temp;1、交换排序,核心思想:把最小的放在最前面,依次填满数组、交换排序,核心思想:把最小的放在最前面,依次填满数组(算法算法3)for(i=0 ; i9 ; i+) /* 控制控制9轮排序轮排序 */ for(j=0 ; jaj+1) temp=aj+1; aj+1=aj; aj=temp; 3、冒泡排序(算法、冒泡排序(算法5):口诀,):口诀,相邻两两对比,反

18、序则换,核心思想:大数相邻两两对比,反序则换,核心思想:大数沉底,编程手段:沉底,编程手段:Z=a*i+b,解方程得到,解方程得到Z排序专题:假设排序专题:假设10个数做升序排序,正序为:个数做升序排序,正序为:ajaj+1 二维数组专题:假设二维数组专题:假设int a34,行优先存储行优先存储,所以四列一行,一共三行,所以四列一行,一共三行 a为二维数组名,可以看作:为二维数组名,可以看作:a=a0,a1,a2; 其中其中a0、a1、a2为一维数组为一维数组名名 二维数组的二维数组的a+1应理解为:从二维数组的第一个元素,应理解为:从二维数组的第一个元素,一维数组一维数组a0移动到第二个元

19、移动到第二个元素素,即一维数组,即一维数组a1,所以实际上完整地移动了一行,指向第二行,表示行地址所以实际上完整地移动了一行,指向第二行,表示行地址 *(a+1)=a1,将行地址将行地址a+1再取内容,应该理解为该行的列地址再取内容,应该理解为该行的列地址,即首元素地址,即首元素地址,所以所以a1表示第表示第1行第行第0列的地址,也即第列的地址,也即第1行首元素地址行首元素地址 注意,尽管注意,尽管a+1和和a1在数值上相同,都是第在数值上相同,都是第1行首元素地址,但是本质上有区别,行首元素地址,但是本质上有区别,a+1是行地址,属于指向数组的指针,是行地址,属于指向数组的指针,a1是元素地

20、址,属于指向首元素的指针,且是元素地址,属于指向首元素的指针,且为数组名,本质上是一维数组为数组名,本质上是一维数组 aij地址的五种表达地址的五种表达:1、&aij;2、ai+j;3、*(a+i)+j;4、&a00+4*i+j;5、a0+4*i+j aij的五种表达的五种表达:1、aij;2、*(ai+j);3、*(*(a+i)+j)或者或者(*(a+i)j;4、*(&a00+4*i+j);5、*(a0+4*i+j) 指向二维数组的一级指针,指向二维数组的一级指针,int *p1=a,则,则a12用指针表示要表达为:用指针表示要表达为:p16 指向二维数组的指针数组,指向二维数组的指针数组,

21、int *p3;for(i=0;i=a&si=a&si=A & si=A & si成员名成员名 指针引用结构体成员的方式:指针引用结构体成员的方式:(a) (*结构体指针名结构体指针名) . 成员;(成员;(b)结构体指针名)结构体指针名成员名成员名 分配内存:分配内存:(数据类型数据类型 *) calloc (分配单元数,每个单元的类型分配单元数,每个单元的类型),如如a=(char *)calloc(100,char) 将分配的内存回收:将分配的内存回收:free(结构体指针变量结构体指针变量),例如,例如free(p)列在枚举类型定义的列在枚举类型定义的 中的是枚举元素名,中的是枚举元素

22、名,它们是常量名,不是串常量它们是常量名,不是串常量(不能加引号),也不是变量名。(不能加引号),也不是变量名。 枚举元素是有值的,称为枚举元素值,枚举元素是有值的,称为枚举元素值,默认值分别为默认值分别为0、1、n-1。枚举元素的值也可在定义时重指定,而对于没有指定值的元素,其值按枚举元素的值也可在定义时重指定,而对于没有指定值的元素,其值按顺序加顺序加1 例如:例如:enum weekday Sun=7,Mon=1, Tue,Wed, Thu, Fri, Sat ;枚举型变量的定义有三种方式,如:枚举型变量的定义有三种方式,如:(1) enum weekday Sun,Mon,Tue ;

23、enum weekday day; (2) enum weekday Sun,Mon,Tue day; (3) enum Sun,Mon,Tue day;元素名不能是整型变量!(重要考点)元素名不能是整型变量!(重要考点)可对枚举变量赋值,但只能把枚举元素名赋给枚举变量,不能把枚举元可对枚举变量赋值,但只能把枚举元素名赋给枚举变量,不能把枚举元素值直接赋给枚举变量。素值直接赋给枚举变量。 如:如:enum weekday Sun,Mon, Tue, Wed, Thu, Fri, Sat workday; workday=Sat; 正确!正确! workday=6; 错误!错误! 应改为:应改为

24、:workday =(enum weekday)6; 链表的插入操作,例如要把链表的插入操作,例如要把p所指结点插入到链表中成为链表第所指结点插入到链表中成为链表第2个结点个结点的程序段是:的程序段是:p-next=head-next; head-next=p;链表的删除操作,例如要把链表的删除操作,例如要把p(第二个节点)所指结点删除的程序段是:(第二个节点)所指结点删除的程序段是:head-next=p-head;free(p);1. FILE *fp; 则定义了指针变量则定义了指针变量fp是一个指向文件的指针。是一个指向文件的指针。2. fp=fopen(“文件名文件名”,”打开方式打开

25、方式”); 打开文件时,若出错,则返回打开文件时,若出错,则返回一个空指针值一个空指针值NULL。3. fclose(文件指针)文件指针);关闭文件,关闭文件,正常关闭文件,则返回正常关闭文件,则返回0,否则返回一个非,否则返回一个非0值值4. fgets(字符数组地址字符数组地址, n, 文件指针文件指针) 功能功能: 从从“文件指针文件指针”所指文件中读出所指文件中读出n-1个字符,加上个字符,加上0后存入字符数后存入字符数组。若在读出组。若在读出n-1个字符之前遇到了换行符或文件结束,则读出结束。个字符之前遇到了换行符或文件结束,则读出结束。 5. fputs(字符串首地址字符串首地址,文件指针文件指针) 功能:将字符串写入功能:将字符串写入“文件指针文件指针”所指文件中,自动舍弃串结束标所指文件中,自动舍弃串结束标志志0 。6. rewind(文件指针文件指针) 功能:使功能:使“文件指针文件指针”所指文件的位置指针重新返回文件的开头。所指文件的位置指针重新返回文件的开头。7. fseek(文件指针文件指针,位移量位移量,

温馨提示

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

评论

0/150

提交评论