《C语言复习提纲》PPT课件.ppt_第1页
《C语言复习提纲》PPT课件.ppt_第2页
《C语言复习提纲》PPT课件.ppt_第3页
《C语言复习提纲》PPT课件.ppt_第4页
《C语言复习提纲》PPT课件.ppt_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

C语言复习提纲,总体概况,1.程序结构是三种: 顺序结构 , 循环结构(三个循环结构), 选择结构(if 和 switch) 2.读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。 3.计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是它的地址. 4.bit是位 是指为0 或者1。 byte 是指字节, 一个字节 = 八个位. 5.一定要记住 二进制 如何划成 十进制。,概念常考,1.编译预处理不是C语言的一部分,不占运行时间,C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2.每个C语言程序中main函数是有且只有一个。 3.在函数中不可以再定义函数。 4. break可用于循环结构和switch语句。 5.逗号运算符的级别最低。 6. 函数是C程序的基本单位。,第一部分 1.合法的用户标识符考查: 合法的要求是由字母,数字,下划线组成。并且第一个必须为字母或下划线。第一个为数字就错了。关键字不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 2.实型数据的合法形式:小数形式和指数形式。2.333e-1 就是合法的,且数据是2.33310-1。考试口诀:e前e后必有数,e后必为整数。. 3.字符数据的合法形式:: 1 是字符占一个字节,“1“是字符串占两个字节(含有一个结束符号)。 0 的ASCII数值表示为48,a 的ASCII数值是97,A的ASCII数值是65。,32个关键字:(由系统定义,不能重作其它定义) auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef unsigned union void volatile while,4.转义字符的考查: int a = 0x6d,是把一个十六进制的数给变量a ,int a = 06d, 是一个八进制的形式。 在转义字符中,x6d 才是合法的, 141 是合法的, 0是不能写的。108是非法的,因为不可以出现8。 5.强制类型转换: 一定是 (int)a 不是 int(a),注意类型上一定有括号的。 注意(int)(a+b)和(int)a+b 的区别。 前是把a+b转型,后是把a转型再加b。 6.表达式查: 自加、自减表达式:假设a=5,+a(是为6), a+(为5); 口诀:+在前先加后用,+在后先用后加。 逗号表达式:优先级别最低 ;表达式的数值逗号最右边的那个表达式的数值。(2,3,4)的表达式的数值就是4。,第二部分 1)printf函数的格式考查: %d对应整型;%c对应字符;%f对应单精度等等。 %ld对应 long int;%lf 对应double。 2)scanf函数的格式考察: 注意该函数的第二个部分是 要用中间变量 t=x;x=y;y=t。,第三部分,特别要注意:c语言中是用非0表示逻辑真的,用0表示逻辑假的。 1)关系表达式: 表达式的数值只能为1(表示为真),或0(表示假) 当关系的表达是为真的时候得到1。如 98这个是真的,所以表达式的数值就是1; 2)逻辑表达式: 只能为1(表示为真),或0(表示假) a) 共有& | ! 三种逻辑运算符号。 b) !&| 优先的级别。 c) 注意短路现象。考试比较喜欢考到。 d) 要表示 x 是比0大,比10小的方法。0x10是不可以的(一定记住)。所以一定要用 (0x)&(x10)表示比0大比10小。 3)if 语句 else 是与最接近的if且没有else的相组合的。,4)条件表达式: 表达式1 ?表达式2 :表达式3 注意是当非0时候是表达式2的数值,当为0是就是表达式2的数值。 考试口诀:真前假后。 5)switch语句: 一定要注意 有break 和没有break的差别,没有break时候,只要有一个case匹配了,剩下的都要执行,有break则是直接跳出了switch语句。 重点参看练习三习题。,第四部分,1)三种循环结构: a)for() ; while(); do- while()三种。 b)for循环当中必须是两个分号,千万不要忘记。 c)写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环。 d) do-while()循环的最后一个while();的分号一定不能够丢。 2) break 和 continue的差别 break:是打破的意思,(破了整个循环)所以看见break就退出整个一层循环。 continue:是继续的意思,(继续循环运算),但是要结束本次循环,就是循环体内剩下的语句不再执行,跳到循环开始,然后判断循环条件,进行新一轮的循环。 3)嵌套循环 就是有循环里面还有循环,这种比较复杂,要一层一层一步一步耐心的计算,一般记住两层是处理二维数组的。,第五部分,函数:是具有一定功能的一个程序块; 1) 函数的参数,返回数值 main() int a = 5,b=6,c; c = add(a,b); printf(“%d”,c); int add ( int x, int y) int z; z=x+y; return z; 2)一定要注意参数之间的传递 实参和形参之间传数值传地址的差别。(考试的重点)。 传数值的话,形参的变化不会改变实参的变化。传地址的话,形参的变化就会有可能改变实参的变化。 3)函数声明的考查: 一定要有:函数名,函数的返回类型,函数的参数类型。不一定要有:形参的名称。,第六部分 指针变量的本质是用来放地址,而一般的变量是放数值的。 int *p 中 *p和p的差别: *p可以当做变量来用;*的作用是取后面地址p里面的数值 p是当作地址来使用。 三名主义:(考试的重点) 数组名:表示第一个元素的地址。数组名不可以自加,他是地址常量名。(考了很多次) 函数名:表示该函数的入口地址。 字符串常量名:表示第一个字符的地址。,第七部分 一维数组的重要概念: 对a10这个数组的讨论。 1.a表示数组名,是第一个元素的地址,也就是元素a0的地址。 2.a是地址常量,所以只要出现a+,或者是a=a+2赋值的都是错误的。 3.a是一维数组名,所以它是列指针,也就是说a+1是跳一列。 对a33的讨论。 1.a是地址常量,所以只要出现a+,或者是a=a+2赋值的都是错误的。 2.a是二维数组名,所以它是行指针,也就是说a+1是跳一行。 3.a0、a1、a2也都是地址常量,不可以对它进行赋值操作,同时它们都是列指针,a0+1,a1+1,a2+1都是跳一列。 4.注意a和a0 、a1、a2是不同的,它们的基类型是不同的。前者是一行元素,后三者是一列元素。,二维数组做题目的技巧: 如果有a33=1,2,3,4,5,6,7,8,9这样的题目。 步骤一:把他们写成: 第一列 第二列 第三列 a0 1 2 3 第一行 a1 4 5 6 第二行 a2 7 8 9 第三行 *(a0+1)我们就知道是第0行的第0个元素往后面跳一列,那么这里就是a01元素,所以是1。 *(a1+2)我们就知道是第1行的第0个元素往后面跳二列。那么这里就是a12元素,所以是6。,指针与指针变量 指针:一个变量的地址 指针变量:专门存放变量地址的变量叫,2000,指针,指针变量,变量的内容,变量的地址,&与*运算符 含义,含义: 取变量的地址 单目运算符 优先级: 2 结合性:自右向左,含义: 取指针所指向变量的内容 单目运算符 优先级: 2 结合性:自右向左,两者关系:互为逆运算 理解,i_pointer-指针变量,它的内容是地址量 *i_pointer-指针的目标变量,它的内容是数据 &i_pointer-指针变量占用内存的地址,i_pointer &i &(*i_pointer) i *i_pointer *(&i),i_pointer = &i = &(*i_pointer) i = *i_pointer = *(&i),8.2 怎样定义指针变量,定义指针变量的一般形式为: 基类型 *指针变量名; 如: int *pointer_1,*pointer_2;,下面都是合法的定义: float * pointer_3; (pointer_3是指向float型变量的指针变量) char * pointer_4; (pointer_是指向字符型变量的指针变量),定义指针变量时同时对它初始化: int *pointer_1=&a,*pointer_2=&b /* 定义指针变量pointer_1,pointer_2,并分别指向a,b */ 指针变量的值为地址,是个无符号的整数。,8.2.3 怎样引用指针变量,注意:指针变量中只能存放地址(指针), 不要将一个整数(或任何其他非地址类型的数据) 赋给一个指针变量。 P=&a,printf(“%d”,*p),*p=1,printf(“%o”,p),p1= (1) *的含义是什么? 先进行运算,得的地址,再进行*运算。 *和*p的作用是一样的,它们都等价于变量。即*与等价。,(2) (*p)+相当于+。,说明:,8.4 指针变量作为函数参数,函数的参数不仅可以是整型、浮点型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。,8.3 通过指针引用数组,一个变量有地址,一个数组包含若干元素,每个数组元素都在内存中占用存储单元,它们都有相应的地址。指针变量既然可以指向变量,当然也可以指向数组元素(把某一元素的地址放到一个指针变量中)。所谓数组元素的指针就是数组元素的地址。,指针与数组 指向数组元素的指针变量,例 int array10; int *p; p=,数组名是表示数组首地址的地址常量,数组元素表示方法,ai *(a+i),8.3.3 数组名作函数参数 数组名作函数参数,是地址传递 数组名作函数参数,实参与形参的对应关系,8.4 指针与字符串 字符串表示形式 用字符数组实现,例 main( ) char string=“I love China!”; printf(“%sn”,string); printf(“%sn”,string+7); ,用字符指针实现,例 main( ) char *string=“I love China!”; printf(“%sn”,string); string+=7; while(*string) putchar(string0); string+; /*ch9_17*/,*string!=0,8.提高部分,8.5.1指向函数的指针,可以用指针变量指向整型变量、字符串、数组,也可以指向一个函数。一个函数在编译时被分配给一个入口地址。这个函数的入口地址就称为函数的指针。可以定义指针变量用来存放某一个函数的首地址,用函数指针变量调用函数。 数据类型(*指针变量名)(函数参数表列); 如:int (*p)(int,int); p=max;(max是函数名) 调用时:c=(*p)(a,b);,二、指向数组的指针 请看下面三个变量 p1 、 p2 、 p3 的定义: int *p1; int (*p2)4; int *p34; int a34=1,3,5,7,9,11,13,15,17,19,21,23; int (*p4)4;p4=a; p1 是一个指针变量,指向的对象是整型数据类型,而 p2 和 p3 呢? 在 p2 的定义中,指针运算符( * )最先与 P2 结合,所以 p2 是一个指针变量; 在 p3 的定义中下标运算符( )最先与 P3 结合,所以 p3 是一个数组。 具体地说, p2 是一个指向含有 4 个整型类型元素的一维数组的指针;p3 是一个含有 4 个元素的数组,每个元素都是指向整型类型数据的指针,即 p3 是一个指针数组。,指 向 指 针 的 指 针 (2),继 续,2、定义形式: char * * p ; p的前面有两个*号。*运算符的结合性是从右到左, *p相当于*(*p),显然*p是指针变量的定义形式。,函数说明: 1. 所有函数都是平行的,即在定义函数时是分别进行的,是互相独立的。一个函数并不从属于另一函数,即函数不能嵌套定义。函数间可以互相调用,但不能调用main函数。main函数是系统调用的。 2.从用户使用的角度看,函数有两种: 标准函数,即库函数。这是由系统提供的,用户不必自己定义这些函数,可以直接使用它们。不同的C系统提供的库函数的数量和功能会有一些不同,但许多基本的函数是共同的。 用户自己定义的函数。用以解决用户的专门需要。 3. 从函数的形式看,函数分两类: 无参函数。无参函数一般用来执行指定的一组操作。在调用无参函数时,主调函数不向被调用函数传递数据。 有参函数。主调函数在调用被调用函数时,通过参数向被调用函数传递数据。,说明: 实参必须有确定的值 形参必须指定类型 形参与实参类型一致,个数相同 若形参与实参类型不一致,自动按形参类型转换函数调用转换 形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放,函数参数及其传递方式 形参与实参 形式参数:定义函数时函数名后面括号中的变量名 实际参数:调用函数时函数名后面括号中的表达式,7.3 函数的嵌套调用和递归调用,嵌套调用就是在调用一个函数时,其函数体内又包含另一个函数。,7.3.1 函数的嵌套调用,7.3.2 函数的递归调用,在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。语言的特点之一就在于允许函数的递归调用。 例如: int f(int x) int y,z; z=f(y); return(2*z); ,7.4数组作为函数参数,7.4.1 数组元素作函数实参,由于实参可以是表达式,而数组元素可以是表达式的组成部分,因此数组元素可以作为函数的实参,与用变量作实参一样,是单向传递,即“值传送”方式。,7.4.2 数组名作函数参数,可以用数组名作函数参数,此时并不是将该数组中全部元素传递给所对应的形参,由于数组名代表数组的首地址,只是将数组的首元素的地址传递给所对应的形参,因此对应的形参应当是数组名或指针变量.,变量的存储类型 auto -自动型,存储在动态存储区 register-寄存器型 static -静态型 extern -外部型 生存期:变量在某一时刻存在-静态变量与动态变量 作用域:变量在某区域内有效-局部变量与全局变量,7.5 变量的属性 变量是对程序中数据的存储空间的抽象,如: int sum; auto int a,b,c; register int i; static float x,y;,变量定义格式: 存储类

温馨提示

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

评论

0/150

提交评论