《C语言期末考试全部知识点复习资料--重点 常考点【范本模板】.docx》由会员分享,可在线阅读,更多相关《C语言期末考试全部知识点复习资料--重点 常考点【范本模板】.docx(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言知识点复习资料考试是难得的训练自己的机会,在特定的时间、特定的地点、特定的气氛下,你需要调动各方 面的能力。而在每一次考试中,我都下意识地应用自己摸索出来的“目标控制法”,做到了每次 考试有有收获和进步.每次考试前,我都会在一张白纸上写满通过本次考试要达到的目标:要注意克服哪些易犯 的错误,尤其是要克服前几次考试中暴露出来的共性的失误;要积累哪些经验,应用哪些技 巧,比如选择题中的特征值法;要在多长的时间内完成卷面各部分,比如,争取35分钟内完 成数学试卷中的选择题和填空题;要培养锻炼哪些考试应试的心理素质等.也就是说,我们要把考试看成是一个完整的流程,包括考前准备、考场发挥和考后调整三
2、个 阶段.同学中存在的误区往往是只注意考前的准备和考场的发挥两个阶段,对考后调整注意不 够.事实上,高考之前的每一次模拟考试,最重要的就是考试后的总结与反思,只有这样,才 能认识到自己的薄弱环节,不断提高考试能力.所以,有心的同学一定要注意做好健全的考后 调整,不断提高自己的实力。总体上必须清楚的:1 .程序中基本的控制结构是三种:顺序结构、选择结构(分支结构)、 循环结构。2 .读程序都要从mainO入口,然后从最上面顺序往下读(碰到循环 做循环,碰到选择做选择),有且只有一个main函数。3 .计算机的数据在电脑中保存是以二进制的形式.数据存放的位置 就是它的地址。4 . bit是位是指为
3、0或者1. byte是指字节,一个字节=八个位。5 .编译预处理不是C语言的一部分,不占运行时间,不要加分号。(常 考!)#definePI 3O 1415926;这个写法是错误的,一定不能出现分号.6O每个C语言程序中main函数是有且只有一个。7 .用C语言编写的程序称为源程序,扩展名是.c。C程序必须经过编scanf ( %d,&p); 错误scanf ( %d,*p)错误4)指定输入的长度终端输入:1234567scanf ( %2d%4d%d”,&x, &y, &z); x 为 12, y 为 3456, z 为 7终端输入:1 234567 由于1和2中间有空格,所以只有1位给x
4、scanf ( %2d%4d%d”,&x, &y,&z); x 为 1, y 为 2345, z 为 67 5)补充说明:a) scanf函数的格式考察:注意该函数的第二个部分是&a这样的地址,不是a;scanf ( “%d%d%*d%d,&a, &b, &c);跳过输入的第三个数 据。b) putchar , getchar 函数的考查:char a = getchar ()是没有参数的,从键盘得到你输入的一个 字符给变量aoputchar ( y)把字符y输出到屏幕中.c)如何实现两个变量x , y中数值的互换(要求背下来)不可以把x二y,尸x; 要用中间变量t=x; x=y; y=t;2
5、1o if语句特别要注意:C语言中是用非0表示逻辑真的,用0表示逻辑假的。C语言有构造类型,没有逻辑类型。if只管后面一个语句,要管多个,请用大括号!注意以下规则:1) else是与最接近的if且没有else的语句匹配。2) if (ab)t=a;a=b;b=t;if (ab) t=a;a=b; b=t; )两个的区别,考试多次考到了!3)单独的 if 语句:if (a b) t=a;标准的 if 语句:if (a (b) min=a; else min=b;嵌套的if语句:if (ab? c: de? d: e; 求k的数值是多少?答案为55) switch 语句:a)执行的流程一定要弄懂!
6、上课时候详细的过程讲了,请自己一定弄懂!b)注意有break和没有break的差别,书上的两个例子,没有break 时候,只要有一个case匹配了,剩下的都要执行,有break则是直接 跳出了 swiche语句。c) switch只可以和break 一起用,不可以和continue用。d) switch(x) x:是整型常量,字符型常量,枚举型数据。case 1: ,,. 不可以是变量。case 2:。22.三种循环结构:a)for () ; while(); dowhile ()三种.b) for循环当中必须是两个分号,千万不要忘记。c)写程序的时候一定要注意,循环一定要有结束的条件,否则成
7、了 死循环.d) do-while ()循环的最后一个while ();的分号一定不能够丢。(当心上机改错),do-while循环是至少执行一次循环。e) break 和 continue 的差别break:是打破的意思,(破了整个循环)所以看见break就退出整 个一层循环。continue:是继续的意思,(继续循环运算),但是要结束本次循环, 就是循环体内剩下的语句不再执行,跳到循环开始,然后判断循环条 件,进行新一轮的循环。f)嵌套循环就是有循环里面还有循环,这种比较复杂,要一层一层一步一步耐 心的计算,一般记住两层是处理二维数组的.g) while ( (c=getchar()!=n)
8、 和while(c=getchar() !=n)的差别先看a=3 !二2和(a=3)!二2的区别:(!二号的级别高于二号所以第一个先计算3!二2)第一个a的数值是得到的1;第二个a的数值是3。h)每行输出十个的写法:for (i=0; i=100; i+) printf ( %d” , i);if (i+1) % 100) printf ( n);如果i是从1开始的话,就是if (i%5=0)printf ( 始);i)如何整除一个数:i%5=0表示整除5i%2二二0表示整除2,同时表示是偶数!J)输入123,输出321逆序输出数据int a=123;while (i !=0) printf
9、( %d”, i%10);i-i/10;k) for只管后面一个语句:int i二3;for (i=3; i6;i+);printf ( # );请问最终打印几个#号?答案为一个!9)不停的输入,直到输入#停止输入!不停的输入,直到输入$停止输入!while ( (x=getchar()!=#)while( (x=getchar ()!=$)23o函数1)函数:是具有一定功能的一个程序块,是C语言的基本组成单位。2)函数不可以嵌套定义。但是可以嵌套调用.3)函数名缺省返回值类型,默认为into4) C语言由函数组成,但有且仅有一个main函数!是程序运行的开 始!5)如何判断a是否为素数:背诵
10、这个程序!void isprime( int a ) for(i=2; i strlen().24.指针:指针变量的本质是用来放地址,而一般的变量是放数值的。 1)定义:int *p;后,表达式中*p和p的差别:简单说*p是数值, P是地址!大P可以当做变量来用;*的作用是取后面地址P里面的数值P是当作地址来使用。可以用在scanf函数中:scanf ( “%d”, P);*p+和(*p) +的之间的差别:改错题目中很重要!考试超级 重点*p+是地址会变化.口诀:取当前值,然后再移动地址!(*P)+是数值会要变化。口诀:取当前值,然后再使 数值增加1。例题:int *p, a = 1, 3,
11、5, 7, 9;P=a;请问* P+和(*p)+的数值分别为多少?*p+:这个本身的数值为lo由于是地址会增加一,所以指针指向数值3 了。(*p)+这个本身的数值为lo由于有个+表示数值会增加, 指针不移动,但数值1由于自加了一次变成了 2.3)三名主义:(考试的重点)数组名:表示第一个元素的地址。数组名不可以自加,他是地址常 量名.(考了很多次)函数名:表示该函数的入口地址。字符串常量名:表示第一个字符的地址.4)移动指针(经常加入到考试中其他题目综合考试)char *s= meikanshu”while (s) printf ( %c”,*s); s+; 这个s首先会指向第一个字母m然后通
12、过循环会一次打印出一个字符, s+是地址移动,打印了一个字母后,就会移动到下一个字母!5)指针变量两种初始化(一定要看懂)方法一:int a=2, *p=&a;(定义的同时初始化)方法二:int a=2, *p;(定义之后初始化)p= & a;6)传数值和传地址(每年必考好多题目)void fun (int a, int b)int *b) int t ;t=a;a=b;b=t;*b=t;)main () int x=l, y=3,fun (x, y);printf( %d, %d” ,x,y);d”,x, y);这个题目答案是1和3O就是3和lo传数值,fun是用变量接受,所以fun中接受!
13、这个时候funvoid fun(int int t ;t=*=*b;main () int x=l, y=3, fun (&x, &y)printf ( %d, %这个题目的答案传地址,fun用指针void fun(int int t ;t=*=*b;main () int x=l, y=3, fun (&x, &y)printf ( %d, %这个题目的答案传地址,fun用指针中的交换,就会影的交换不会影响到main中的x和y 。响至(J main中的x和y.传地址形参的变化绝大传数值,形参的变化不会影响实参.多数会影响到实参!7)函数返回值是地址,一定注意这个*号int fun ( int
14、 *a, int *b)可以发现函数前面有个大,这个就说明函数运算结果是地址 if (*a*b) return a; return a可以知道返回的是a地址。 else return b;)main () int x=7, y=8, max;max = fun (&x, &y); 由于 fun (&x, &y)的运算结果是 地址,所以用max来接收。printf ( %d, *max);)8)考试重要的话语:指针变量是存放地址的。并且指向哪个就等价哪个,所有出现*p的地方都可以用它等价的代替。例如:int a=2, *p=&a;* p=* p+2;(由于*p指向变量a ,所以指向哪个就等价哪个
15、,这里*p等价于a , 可以相当于是a=a+2)辑、编译、链接、运行四个步骤才可得到运行结果。注意.C和。obj文件时无法运行的,只有.exe文件才可以运行。(常考!)C语言书写格式是自由的,每行可以写多个语句,一条语句也可以 写在多行。8. 一个C语言程序有且只有一个main函数,是程序运行的起点。10o Cfree. VC/VC+. CodeBlock等是软件,用来运行写的C语言程 序。(编译环境)11.标识符(必考内容):合法的要求是由字母,数字,下划线组成。有其它元素就错了。并且第一个必须为字母或则是下划线。第一个为数字就错了12o标识符分为关键字、预定义标识符、用户标识符。关键字(P
16、259):不可以作为用户标识符号。main define scanf printf都不是关键字。迷惑你的地方是If、Main等可以做为用户标 识符。因为If、Main中的第一个字母大写了,所以不是关键字和特定 字了。预定义标识符:如 define scanf printf include.记住预定 义标识符可以做为用户标识符,但因为它们有特定含义,一般不做用户 标识符.用户标识符:可作为常量名、变量名、函数名、构造类型名等. 13o整型常量:C语言只有八、十、十六进制整数,没有二进制。但 是运行时候,所有的进制都要转换成二进制来进行处理.(考过两次)C语言中的八进制规定要以0开头。018的数值
17、是非法的,八进制25.数组:存放的类型是一致的。多个数组元素的地址是连续的。1) 一维数组的初始化:int a5 = 1,2,3, 4,5; 合法int a5=1, 2, 3,); 合法int a 口二1, 2, 3, 4,5; 合法,int a 5= 1, 2, 3, 4, 5,6;不合法,赋值的个数多于数组的个数了一维数组的定义; int a 5;注意这个地方有一个重要考点,定义时数组的个数不是变 量一定是常量。int a5;int a 1+1;达式int a 1/2+4;int x=5, int a x; 量,非法的,# define N 5int a N;合法,最正常的数组合法,个数是
18、常量2,是个算术表合法,同样是算术表达式不合法,因为个数是x,是个变合法,最正常的数组合法,个数是常量2,是个算术表合法,同样是算术表达式不合法,因为个数是x,是个变合法,define后的的N是符号常量,只是长得像变量3)二维数组的初始化合法,很标准的二int a 2 3 = 1, 2, 3, 4,5, 6;维的赋值.int a 2 3 = 1, 2, 3,4,5 ;个默认为0。int a 2 3 = 1, 2,3 , 4,5, 6;个。int a 2 3=1,2, 3,4, 5);一个默认为0.int a2 3=1,2, 3,4, 5, 6, 7;个数多余数组的个数了.int a 3 = 1
19、, 2, 3, 4, 5, 6;缺省行的个数.int a 2 = 1, 2, 3, 4, 5, 6;的个数。补充:1) 一维数组的重要概念:合法,后面一合法,每行三合法,第一行最后不合法,赋值的不合法,不可以合法,可以缺省列a) a表示数组名,是第一个元素的地址,也就是元素a0的地址。对a 10这个数组的讨论。(等价于&a)a是地址常量,所以只要出现a+,或者是a=a+2赋值的都是错误的.b) a是一维数组名,所以它是列指针,也就是说a+1是跳一列。对a 3 3的讨论。a) a表示数组名,是第一个元素的地址,也就是元素a0 0的地 址。b) a是地址常量,所以只要出现a+,或者是a=a+2赋值
20、的都是错误 的。c) a是二维数组名,所以它是行指针,也就是说a+1是跳一行。d) a0 al, a2也都是地址常量,不可以对它进行赋值操作,同时它们都是列指针,aO+l, al+l, a2+l都是跳一列。26o其他知识点:1)字符串的 strlen ()和 strcat () 和 strcmp () 和 strcpy () 的使用方法一定要记住。他们的参数都是地址。其中strcpy()和 strcmp()有两个参数。2) strlen和sizeof的区别也是考试的重点;#define f (x) (x) * (x) 和 #define f (x) x*x 之间的 差别。一定要好好的注意这写容
21、易错的地方,替换的时候有括号和没 有括号是很大的区别。3) int *p;p 二 (int *) malloc (4);p 二(int *) malloc (sizeof (int);以上两个等价当心填空题目,malloc的返回类型是void *6)函数的递归调用一定要记得有结束的条件,并且要会算简单的递归 题目。7)结构体要掌握最简单的,而且一定要知道如何引用结构体中的各个变量。8) scanf和 gets的数据:如果输入的是good good study!那么scanf( %s,a);只会接收good.考点:不可以接收空格。gets (a);会接收good good study!考点:可以
22、接收空格。9) “文件包含”的考查点:nol o cinclude” no2. c”main () add (29 , 33);no2o cint add(int a, int b)return a+b;这里一个C语言程序是有两个文件组成,分别是nol.c, no2.co那么 nol. c中最开始有个# includeno2. c,表示把第二个文件的内容给 包含过来,那么nolo c中调用add ()函数的时候就可以了把数值传 到no2o c中的被调用函数add () T一个文件必须要有main函数。这句话错了。例如:no2。c就没有。 被包含的文件一定是以.h结束的。 这句话错了。例如:no
23、l.c中就 是# include” no2. c” 以。c 结尾的。10)指针迷惑的考点:char ch 口 二iamhandsome; char *p=ch; 问你* (p+2)和*p+2的结果是多少?mk, 结果是这两个。11)数组中放数组一定要看懂:int a8 =1, 2, 3, 4, 4, 3, 2, 2;int b 5= 0;b a 3 + 这个写法要看懂,结果要知道是什么?b 4+,本 身是0,运行完后,64为1了。15)字符串的赋值:C语言中没有字符串变量,所以用数组和指针存 放字符串: a)char ch10 = abcdefgh ;b)char ch10 = abcdefg
24、h”;c)char ch108这个关系表达式是真的,所以9 8这个表达式的数值就是 lo如76这个关系表达式是假的,所以76这个表达式的数值就是。b)考试最容易错的:就是int x=l,y=0,z=2;x yz是真还是假?带入为2,从数学的角度出发肯定是错的,但是如果是C 语言那么就是正确的!因为要10为假得到0,表达式就变成了 0 2 那么运算结果就是1,成为了真的了!c)等号和赋值的区别! 一定记住“二就是赋值,“二二”才是等号。(7)逻辑表达式:共有&I I !三种逻辑运算符号。核心:表达式的数值只能为1 (表示为真),或0(表示假)。a) !&| I优先的级别。b)注意短路现象。如:x
25、& y中x若为0,不计算y; x I | y 中若x为非零值,则也不计算y。c)表示x小于。大于10的方法:0x10是不行的,一定要用(0 (x) & (x10)表示(8)位运算的考查:总的处理方法:(先把十进制变成二进制,计算出结果后再变成 十进制)O例 1: char a = 6, b;b = a 2;这种题目的计算是先要把a的十进制6化成二进制,再做位运算。例2: 一定要记住,异或的位运算符号“八0异或1得到1。0异或。得到0。两个女的生不出来.考试记忆方法:一男(1)一女(0)才可以生个小孩(Do例3:在没有舍去数据的时候,左移一位表示乘以2;右 移一位表示除以2。(9)补充:a)空语
26、句不可以随意执行,会导致逻辑错误。b)注释:注释不是C语言,不占运行时间,没有分号.不可以嵌套!c)强制类型转换:一定是(int)a不是int (a),注意类型上一定有括号的。注意(int) (a+b)和(int)a+b的区别.前是把a+b转型, 后是把a转型再加b。d)三种取整丢小数的情况:int a=1。6; (int) a; 1/2;3/2;19.数据输出函数printf1)使用printf和scanf函数时,要在最前面加上#include (stdio. h)2) printf可以只有一个参数,也可以有多个参数.3) printf ( “第一部分”,第二部分);把第二部分的变量、表达
27、式、常量以第一部分的形式展现出来!4) printf ( a=%d, b=%d,12, 34)考试重点!一定要记住是将12和34以第一部分的形式现在在终端也就是黑色的屏幕上。考试核心为:一模一样.在黑色屏幕上面显示为a二12, b二34 printf ( ua=%d, n b=%d“,12, 34)那么输出的结果就是:a=12,5) int x=017; 一定要弄清楚为什么是这个结果!过程很重要printf ( %d , x);15printf ( %o , x) ; 17printf ( %#o”,x);017printf ( %x, x) ; 11printf ( %#x,x); 0x11
28、6) 一定要记住的格式说明表示内容%d整型 intchar%ld长整型 long int% f浮点型 float doubledouble%o 八进制的八进制%x十六进制导的十六进制格式说明表示内容%c 字符%s 字符串% If%#0 带前导%#x 带前%输出一个百%5d 分号举例说明: printf ( 2d,123 );第二部分有三位,大于指定的两位,原样输出123printf ( %5d”,123 );第二部分有三位,小于指定的五位,左边补两个空格123printf (1.25);小数要求补足6位的,没有六位的补0,。结果为1。250000printf ( u%5. 3f , 125 )
29、;小数三位,整个五位,结果为1.250 (小 数点算一位)printf ( %3。If”,lo 25 );小数一位,整个三位,结果为1. 320.数据输入1) scanf ( a=%d, b=%d, &a, &b) 考试超级重点!一定要记住是以第一部分的格式在终端输入数据.考试核心为:一模一 样。在黑色屏幕上面输入的为a=12, b=34才可以把12和34正确给a和 b o有一点不同也不行。2) scanf ( %d, %d,x, y);这种写法绝对错误,scanf的第二个 部分一定要是地址!scanf (炮1, %d”,&x, &y);注意写成这样才可以!3)特别注意指针在scanf的考察例如:int x=2; int *p=&x;scanf ( d,x); 错误scanf ( %d,p);正确