C语言知识点总结【完美版】终极_第1页
C语言知识点总结【完美版】终极_第2页
C语言知识点总结【完美版】终极_第3页
C语言知识点总结【完美版】终极_第4页
C语言知识点总结【完美版】终极_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、学习好资料欢迎下载扎堆学社C语言期末复习提纲第一章一、对C语言的基础认识1、c程序由函数组成,函数是程序的基本单位。2、 C语言书写格式是自由的,每行可以写多个语句,可以写多行。(05-06t1)3、 一个C语言程序有且只有一个main函数,是程序运行的 起点(07-08t2) 。( 11-12 一期t 一 1)4、 字符是组成语言的最基本的元素,C语言字符由字母,数字,空白符标点和特殊字符组 成。二、标识符(11-12 一期 t 一 2)1、标识符(必考内容):合法的要求是由 字母,数字,下划线组成。有其它元素就错了。( 07-08t1)并且第一个必须为 字母或是下划线。第一个为数字就错了2

2、、 用户标识符。(用户标识符重点:基本上每年都考。)关键字:不可以作为用户标识符号(05-06t3) o ma in define scanf printf都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。第二章一:整数与实数1) C语言只有八、十、十六进制,没有二进制。但是运行时候,所有的进制都要转换成二 进制来进行处理。a 、C语言中的八进制 规定要以0开头。018的数值是非法的, 八进制是没有8的, 逢 8 进 1。(06-07 二期 t 一。4)ob 、C语言中的十六进制 规定要以0x开头。(06-07二期t 一。4)2)小数的合法写法:

3、C语言小数点两边有一个是零的话,可以不用写。1.0在C语言中可写成1.0.1在C语言中可以写成.1 o3)实型数据的合法形式:a、2.333e-1 就是合法的,且数据是 2.333 x 10-1。b考试口诀:e前e后必有数,e后必为整数。(06-07二期t 一。4)4) 整型一般是4个字节,字符型是1个字节,长整型 4个字节,浮点型 4个字节,双精 度一般是8个字节:(05-06t2 )5) 实型常默认为双精度型。(05-06 一期t 一。8)二:算术表达式和赋值表达式1、算术表达式:+, - , *, / , %考试一定要注意:“/”两边都是整型的话,结果就是一个整型。3/2的结果就是1.“

4、/”如果有一边是小数,那么结果就是小数。“ %符号请一定要注意是 余数,考试最容易算成了除号。)符号两边要 求是整数。不是整数就错了。注意!!(11-12 一期t43)2、赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式为5,常量不可以赋值1、int x=y=10:错,定义时,不可以连续赋值。(06-07二期t三。2)2、int x,y;x=y=10;对,定义完成后,可以连续赋值。3、赋值的左边只能是一个变量。4、int x=7.7;对,x 就是 75、float y=7;对,y 就是 7.03、复合的赋值表达式a*=b+3;等价于 a=a*(b+3)4、自加表达式:自加、自减表达式

5、:假设a=5, +a (是为6), a+ (为5);运行的机理:+a是先把变量的数值加上1,然后把得到的数值放到变量a中,然后再用这个+a表达式的数值为 6,而a+是先用该表达式的数值为5,然后再把 a的数值加上 1为6,再放到变量a中。 进行了 +a和a+后 在下面的程序中再用到a的话都是变量a中的6了。考试口诀:+在前先加后用,+在后先用后加。(05-06 一期t 一 13)5、逗号表达式:优先级别最低。(赋值的级别倒数第二.)表达式的数值逗号最右边的那个表达式的数值。 (2,3,4)的表达式的数值就是4。z= ( 2,3, 4)(整个是赋值表达式)这个时候z的值为4。 z= 2,3, 4

6、 (整个是逗号表达式)这个时候 z的值为2。补充:1、空语句不可以随意执行,会导致 逻辑错误。(06-07二期t 一 14)2、 注释不是C语言,不占运行时间,没有分号。不可以嵌套!3、强制类型转换:一定是 (int )a不是int( a),注意类型上一定有括号的。注意(int )( a+b)和(int )a+b的区别。 前是把a+b转型,后是把a转型再加b。三、字符1) 字符数据的合法形式:1是字符占一个字节,1是字符串占两个字节(含有一个结束符号)。0 的ASCII数值表示为 48,a 的ASCII数值是97,A的ASCII数值是65。 表示单个字符错误的形式:65 1字符是可以进行算术运

7、算的,记住:0-0=48大写字母和小写字母转换的方法:A+32=a 相互之间一般是相差 32。2) 转义字符:(06-07 二期 t 一。6,12)转义字符分为一般转义字符、八进制转义字符、十六进制转义字符。一般转义字符:0、n、”、。八进制转义字符: 141 十六进制转义字符:x6d 3)、字符型和整数:两个具有很大的相似之处char a = 65 ;printf(“ %c , a);得到的输出结果:aprintf( “ %d , a);得到的输出结果:65四:数据输出1、使用printf 和scanf函数时,要在最前面加上#inelude “ stdio.h ”2、print f可以只有一

8、个参数,也可以有两个参数。3、 printf “第一部分”第二部分);把第二部分的变量、表达式、常量以第一部分 的形式展现出来。4、int x=12 ,y=34 ; 注意这种题型 (06-07 二期 t 一 18)printf (“ %d ” (x,y);前面的 x 不输出5、最好记下的格式说明表示内容格式说明表示内容%d整型int%c字符 char%ld长整型long int%s字符串%f浮点型float%o八进制%lfdouble%x十八进制举例说明:printf (“2d, 123);第二部分有三位,大于指定的两位,原样输出123printf (“ 5d, 123);第二部分有三位,小于

9、指定的五位,左边补两个空格123五数据输入(05-06 一期 t 一。10)(11-12 一期 t 一 7)1、 seanf “a=%d b=%d, &a, &b) 考试超级重点!一定要记住是 以第一部分的格式在终端输入数据。在黑色屏幕上面输入的为a=12,b=34才可以把12和34正确给a和b。有一点不同也不行。2、 seanf “ %d %c” x,y);这种写法绝对错误,scanf的第二个部分一定要是地址!seanf (“ %d %d, &x,&y);注意写成这样才可以!也可以把两个之间的逗号去掉,(输入数据时用空格 tab或者回车隔开)但是两个 &之间的逗号不能去掉。3、特别注意指针在

10、 scanf的考察例如:int x=2; int *p=&x ;scanf “ ” x);错误scanf(“ c” p);正确scanf “ %d , &p);错误sca nf(“%d, *p)错误4、字符和整型是诉亲:int x=97;printf “ %d, x);结果为97printf “ C, x);结果为a5、输入时候字符和整数的区别(考试 重点)scanf “d, &x);这个时候输入1,特别注意表示的是整数1scanf (“ %c,&x);这个时候输入1,特别注意表示的是字符1 ASCII为整数49补充说明:putchar ,getchar 函数的考查:char a = getc

11、har()是没有参数的,从键盘得到你输入的一个字符给变量a。注意只能接收一个字符。gets则可以接收一串字符 (06-07二期t 一 13)putchar( y)把字符y输出到屏幕中。AVV*第三早特别要注意:C语言中是用m匚0表示逻辑真的,用匚0表示逻辑假的.关系运算符号:注意 8这个关系表达式是真的,所以98这个表达式的数值就是1。如76这个关系表达式是假的,所以76这个表达式的数值就是0b、 考试最容易错的:就是int x=1,y=0,z=2;xyz是真还是假?带入为 102,从数学的角度出发肯定是错的,但是如果是 C语言那么就是正确的!因为要 10为假得到0,表达式就变成 了 0&|优

12、先的级别。c)注意短路现象。(p31)d)表示x小于0大于10的方法。OvxvlO是不行的(一定记住)。是先计算0x得到的结果为1或则0;再用0,或1与 10比较得到的总是真(为1 )。所以一定 要用(OVX)&(XV10)表示比0大比10小。3)if语句a、else 是与最接近的if且没有else的语句匹配。(06-07二期t 一 16)b、 交换的程序写法:t=x ; x=y ; y=t ;c、if (ab) t=a;a=b;b=t;if (ab? c: de? d: e;求k的数值是多少?I是当表达式1的数值是非0时,才采用表达式2的数值做为整个运算结果,当表达5)switch 语句:a

13、)执行的流程一定要弄懂!请自己一定弄懂 !P40b)注意有break和没有break的差别,没走有 break时候,只要有一个case匹配了,剩下的都要执行,有break则是直接跳出了 switch 语句。break在C语言中就是分手,一刀两断的c) switch(x) x:是整型常量,字符型常量,枚举型数据。case 1 .不可以是变量。case 2:第四章1)三种循环结构:a ) for (); while(); do- while()三种。b ) for循环当中必须是两个分号(表达式可以省略),千万不要忘记。c )循环一定要有结束的条件,否则成了死循环(条件永真)。d) do-while

14、()循环的最后一个 while();的分号一定不能够丢。do while循环是至少执行一次循环。e) 循环体若包含一个以上的语句,应该用花括号括起来,否则while循环体只作用到 while后面的第一个分号。2) break 和 continue 的差别记忆方法:break :是打破的意思,(破了整个循环)所以看见 break就退出整个一层循环。continue :是继续的意思,(继续循环运算),但是要结束本次循环,就是循环体内剩下的 语句不再执行,跳到循环开始,然后判断循环条件,进行新一轮的循环。3) 嵌套循环就是有循环里面还有循环,这种比较复杂,要一层一层一步一步耐心的计算,一般记住两层是

15、处理二维数组的。4) while (c=getchar() != n 和while (c=getchar() != n 的差别先看a = 3 != 2别:(!=号的级别高于=号所以第一个先计算 3 ! =2)第一个a的数值是得到的1;第二个a 的数值是3。考试注意点:括号在这里的重要性。()5) 如何整除一个数:i%5=0表示整除51%2=0表示整除2,同时表示是偶数!(06-07二期t四。2)6) 不停的输入,直到输入 #停止输入!while( (x=getchar()!= ,#)7) 常考的考题:(思考k的结果)int k=1int k=1;while (- -k );while(k-);

16、printf (“ %d,k);printf(“d, k);第五章数组: 存放的类型是一致的。多个数组元素的地址是连续的。1、一维数组的初始化:int a5=1,2,3,4,5;合法int a5=1,2,3, ;合法int a=1,2,3,4,5;合法,常考,后面决定前面的大小!int a5=1,2,3,4,5,6;不合法,赋值的个数多余数组的个数了读入:for(k=0,k10,k+) scanf(“ f”,&ak);2、一维数组的定义;p70 )。int a5;注意这个地方有一个重要考点,定义时数组的个数不是变量一定是常量(int a5int a1+1int x=5,i nt ax; #de

17、fi ne P 5 int aP;一期 t 一 5)3、二维数组的初始化合法,最正常的数组合法,个数是常量 2,是个算术表达式不合法,因为个数是 x,是个变量,非法的,合法,define 后的的P是符号常量,只是长得像变量(11-12int a23=1,2,3,4,5,6;合法,很标准的二维的赋值。int a23=1,2,3,4,5, ;合法,后面一个默认为0。int a23=1,2,3, 4,5,6;合法,每行三个。int a23=1,2,3,4,5;合法,第一行最后一个默认为0。int a23=1,2,3,4,5,6,7;不合法,赋值的个数多余数组的个数了。int a3=1,2,3,4,5

18、,6;不合法,不可以缺省行的个数。int a2=1,2,3,4,5,6;合法,可以缺省列的个数。4、字符数组1 )字符串的赋值C语言中没有字符串变量,所以用数组和指针存放字符串:1、char ch10=“ abcdefgh ” ;对2、char ch10=“ abcdefgh ” ;对3、char ch10=a , b , c , d , e , f , g , h ;对4、 char *p=“ abcdefgh ” ;对5、 char *p=“ abcdefgh ” ;错了!不能够出现大括号!(4, 5与1 , 2对比)6、char *p;对p= “ abcdefgh ” ;7、 char

19、ch10;错了!数组名不可以赋值!( 06-07二期t三。1.05-06 期t三。5)ch=“ abcdefgh ” ;2) 字符串的引用:1用scanf时不再加&。2scanf不能输入带有空格的字符串(gets可以)。 如果输入的是 zhadui xueshe !那么scanf( “S ,a); 只会接收 zhadui. 考点:不可 以接收空格。 gets(a); 会接收 zhadui xueshe!考点:可以接收空格。3printf遇到第一个0 时停止。(注意末尾0 )3)字符串函数(p85)gets(字符数组名或字符指针变量);接收用户输入的字符串(07-08 一期t三,5)puts(字

20、符数组名或字符指针变量或字符串常量);会在屏幕上打印出字符串,从指定地址开始输出,遇到0结束。(05-06 一期t三.2输出ina)strlen(字符数组名或字符指针变量);字符串测长函数,注意是有效长度,包括空格,不包括末尾的0 strcat( 字符串1的地址,字符串 2的地址);将字符串2的内容连接到字符串1的尾部。(串1要足够长)strcmp(字符串1的地址,字符串 2的地址);比较串1和串2哪个比较大。比较大小的依据是,两个字符串从左往右相应位置上第一个不相 等的字符ASCII码值之差。strcpy(字符串1的地址,字符串 2的地址);将字符串2的内容复制到字符串1内。(串1要足够长)

21、补充:1)一维数组的重要概念:对a10这个数组的讨论。1、a表示数组名,是第一个元素的地址,也就是 元素a0的地址。(等价于&a)2、a是地址常量,所以只要出现a+,或者是a=a+2赋值的都是错误的。2)两种重要的数组长度:char a=char a5=a , b , c ; a , b , c 1、2、3、函数:是具有一定功能的一个程序块,是函数之间是并列关系,不可以嵌套定义。但是可以嵌套调用。 函数名缺省返回值类型,默认为int 。数组长度为3,字符串长度不定。sizeof(a)为3。数组长度为5,字符串长度3。 sizeof(a)为5。第八早C语言的基本组成单位。4、 C语言由函数组成,

22、但有且仅有一个main函数!是程序运行的开始!5、形参表可以为空。也可以由一个或者多个组成。多个形参逗号隔开。6、用return只能返回一个值到主调函数。7、 函数的参数可以是常量,变量,表达式,甚至是函数调用。8、 函数的参数,返回数值(示意图):mai n()int add ( int x, i nt y).被调用函数kx, y是形式参数int乙-,函数返回数值是整型rintf( %nt a = 5,b=6,c; :=ad卜调用函数a,b是实参整个函数得到一个数值就是Add函数的返回数值。程序是在从上往下顺序执 行,当碰到了函数add后, 把a, b的数值穿给调用函 数,程序暂时中断等待返

23、 回数值。当得到了返回数 值后,再顺序的往下执行z=x+y;return z; z 就是这个 add 函数计算后得到的结果,就是函数返回给主程 序的返回数值。9、一定要注意参数之间的传递实参和形参之间|传数值,|和传地址的差别。(考试的重点07-08二10) ( p104-105)传数勺话,形参的变化不会改变实参的变化。传地址的话,形参变量拥有了对主调函数变量的访问权,就会有可能改变实参的变化。10、 函数声明的考查:(一般而言函数的定义和声明形式相同,数组作为函数参数的引用需要用 其首地址即数组名)一定要有:函数名,函数的返回类型,函数的参数类型。不一定要有:形参的名称。填空题可能会考到!如

24、(07-08 期t三.4 ) p104-105(某年三。3)11、库函数:a 、库函数是已经写好了函数,放在仓库中,我们只需要如何去使用就可以了!b、以下这些库函数比较重要sqrt() 、fab(),(某年期末三。4)getchar()puts()pri ntf()putchar()sca nf()字符串的strlen()和 strcat() 和strcmp () 和strcpy ()的使用方法要记住。他们的参数都是地址。其中strcat ()和strcmp ()有两个参数。12、变量的存储属性(06-07二期At 一 2)1 、自动(auto )变量(06-07 二期 Bt 一 36)2 、

25、寄存器变量 register通常把使用频率较高的变量定义为寄存器变量。(06-07二期Bt 一 22)3 、静态变量 static(常考内部静态变量07-08 期t2.6)注意:局部作用域,全局的生存期。被定义的变量一直不被释放。(p117例题)static int x ;默认值为 0。int x :默认值为不定值。4 、外部变量extern在一个文件中,定义在所有函数之外的变量称为外部变量。注意:全局作用域。但是如果外部变量不在文件开头定义,在定义位置之前使用该变量需要用 extern进行声明。(课本p116例题)第七章指针变量的本质是用来放地址,而一般的变量是放数值的1、int *p 中*

26、p 和p的差别:简单说*p是数值,p是地址!*p可以当做变量来用;|*的作用是取后面地址 p里面的数值p是当作地址来使用。可以用在scanf函数中:scanf “ c”,p);2、*p+和 (*p)+的之间的差别:*p+是 地址会变化。口诀:取当前值,然后再移动地址!(*p)+是数值会要变化。口诀:取当前值,然后再使数值增加1。指针迷惑的考点:(11-12 一期t 一 30)char ch=” woaizhadui ” ;char *p=ch;问你* (p+2)和*p+2的结果是多少?a3、指向指针的指针:*p : 一级指针:存放变量的地址。4、三名主义:(考试的重点)结果是这两个,想不通的同

27、学请用吃奶的力气想!想通为止!*q :二级指针:存放一级指针的地址。函数名:表示该函数的入口地址。数组名:表示第一个元素的地址。数组名不可以自加,他是地址常量名。字符串常量名:表示第一个字符的地址。5、移动指针char *s= xueleiwhile (*s ) printf“ C , *s ); s+; 这个s首先会指向第一个字母m然后通过循环会一次打印出一个字符,s+是地址移动,打印了一个字母后,就会移动到下一个字母!6、指针变量两种初始化(一定要看懂)方法一:int a=2 , *p=&a;(定义的同时初始化)方法二:int a=2, *p ;(定义之后初始化)p=&a;7、 传数值和传

28、地址(几乎每年必考)(05-06t28 , 07-08t10 , 06-07二期t三。5、07-08 :10.)p128p135void fun (int a , int b)void fun(int *a , int *b ) int t; int t;t=a ; a=b; b=t;t=*a;*a=*b ; *b=t ;main ()mai n() int x=1, y=3, int x=1,y=3,fun (x, y);fun(&x, &y)printf “%d %c”,x, y); 这个题目答案是1和3。传数值,fun是用变量接受,所以 fun中 的交换不会影响到main中的x和y。传数

29、值,形参的变化不会影响实参。8、函数指针的用法(*f )()记住一个例子:int add(i nt x, int y) main () int (*f)();f=add;赋值之后:合法的调用形式为1、add(2 , 3)9、考试重要的话语:指针变量是存放 地址的。并且指向哪个就等价哪个, 代替。例如:int a=2 , *p=&a; *p=*p+2;(由于*p指向变量aprintf(“ %d %(”,x,y);这个题目的答案就是 3和1。传地址,fun用指针接受!这个时候 fun 中的交换,就会影响到 main中的x和y。 传地址形参的变化绝大多数会影响到实参!2、f(2 ,3) ;3、 (*f ) (2, 3)所有出现*p的地方都可以用它等价的,所以指向哪个就等价哪个,这里*p等价于a,可以相当于是 a=a+2)1、结构体结构体类型的声明:结构体变量的定义:第八章struct结构体名成员列表;1,struct 结构体名变量名表;2,struct

温馨提示

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

评论

0/150

提交评论