还剩41页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
c语言知识点复习资料考试是难得的训练自己的机会,在特定的时间、特定的地点、特定的气氛下,你需要调动各方而的能力而在每一次考试中,我都下意识地应用自己摸索出来的“目标控制法“,做到了每次考试有有收获和进步每次考试询,我都会在一张口纸上写满通过本次考试要达到的目标要注意克服哪些易犯的错误,尤其是要克服前儿次考试中暴露出来的共性的失误;要积累哪些经验,应用哪些技巧,比如选择题中的特征值法;要在多长的时间内完成卷而各部分,比如,争取35分钟内完成数学试卷中的选择题和填空题;要培养锻炼哪些考试应试的心理素质等也就是说,我们要把考试看成是一个完整的流程,包括考前准备、考场发挥和考后调整三个阶段同学中存在的误区往往是只注意考前的准备和考场的发挥两个阶段,对考后调整注意不够事实上,高考之前的每一次模拟考试,最重要的就是考试后的总结与反思,只有这样,才能认识到自己的薄弱环节,不断提高考试能力所以,有心的同学一定要注意做好健全的考后调整,不断提高自己的实力总体上必须清楚的.程序中基本的控制结构是三种顺序结构、选择结构(分支结构)、循环结构.读程序都要从main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数3•计算机的数据在电脑中保存是以二进制的形式.数据存放的位置就是它的地址..bit是位是指为0或者1byte是指字节,一个字节二八个位..编译预处理不是C语言的一部分,不占运行时间,不要加分号(常考!)运算例2:一定要记住,异或的位运算符号“八”0异或1得到10异或得到0两个女的生不出来考试记忆方法一男1一女0才可以生个小孩10例3:在没有舍去数据的时候,〈〈左移一位表示乘以2;〉〉右移一位表示除以2o9补充:a空语句不可以随意执行,会导致逻辑错误b注释注释不是C语言,不占运行时间,没有分号不可以嵌套!强制类型转换一定是inta不是inta注意类型上一定有括号的注意inta+b和inta+b的区别前是把a+b转型后是把a转型再加bod三种取整丢小数的情况inta=
1.6;inta;7/2;3/2;
19.数据输出函数printf1使用printf和scanf函数时,耍在最前面加上#includestdio.h〉printf可以只有一个参数,也可以有多个参数prmtf(第一部分第二部分);把第二部分的变量、表达式、常量以第一部分的形式展现出来!printf(,=%db=%d”,1234)考试重点!一定要记住是将12和34以第一部分的形式现在在终端也就是黑色的屏幕上考试核心为一模一样在黑色屏幕上面显示为a=12b=34printfMa=%d\nb=%d”,1234那么输出的结果就是:a=12b=34mtx=017;一定要弄清楚为什么是这个结果!过程很重要printf11%x;15printf%onx;17printf”%#o”x;017printf”%x”,x;11printf%#xnx;0x11一定要记住的格式说明表示内容%d整型int%ld长整型longint%f浮点型floatdouble%o八进制%x十六进制%%输出一个百分号%5举例说明printf“%2d”123;第二部分有三位,大于指定的两位,原样输出123printf%5d”,123;第二部分有三位,小于指立的五位,左边补两个空格123printf
1.25;小数要求补足6位的没有六位的补0结果为
1.250000printf4t%5•3r125;小数三位,整个五位结果为
1.250小数点算一位printfn%3IP
1.25;小数一力;整个三位结果为1•
32.数据输入scanfna=%db=%d”,ab考试超级重点!一定要记住是以第一部分的格式在终端输入数据考试核心为一模一样在黑色屏幕上面输入的为沪12b二34才可以把12和34正确给a和b有一点不同也不彳亍scanfM%d%dxy;这种写法绝对错误scanf的第二个部分一定要是地址!scanf”%d%dZxy;注意写成这样才可以!3特别注意指针在scanf的考察例如intx=2;int*p=x;scanf%d,x;错误scanf5p;正确scanf”%d”p;错误scanf%d*p错误4指定输入的长度终端输入-1234567scanfn%2d%4d%d\xyz;x为12y为3456z为7终端输入1234567由于1和2中间有空格,所以只有1位给xscanf^^%2d%4d%dxyz;x为1y为2345z为675补充说明scanf函数的格式考察注意该函数的第二个部分是这样的地址,不是a;scanf%d%d%*d%d^^abc;跳过输入的第三个数据putchargctchar函数的考查chara二getchar是没有参数的,从键盘得到你输入的一个字符给变量£Uputchary把字符y输出到屏幕中c如何实现两个变量xy中数值的互换要求背下来不可以把x二yy二x;要用中间变量t=x;x=y;y=t;if语句特别耍注意C语言中是用非表示逻辑真的,用0表示逻辑假的C语言有构造类型,没有逻辑类型if只管后而一个语句,要管多个,请用大括号!注意以下规则else是与最接近的if且没有else的语句匹配ifabt=a;a=b;b=t;ifa〈b{t=a;a二b;b=t;}两个的区别考试多次考到了!3单独的if语句ifavbt=a;标准的if语句ifa〈bmin=a;elsemin二b;嵌套的if语句ifabifbcprintfok!;多选一的if语句ifa=tprintfHaH;elseifb=tprintfb;elseifc=tprint4;elsepritnf;通过习题,要熟悉以上几种if语句!definePI
3.1415926;这个写法是错误的,一定不能出现分号.每个C语言程序中main函数是有且只有一个.用C语言编写的程序称为源程序,扩展名是・cC程序必须经过编辑、编译、链接、运行四个步骤才可得到运行结果注意・c和・obj文件时无法运行的,只有・cxc文件才可以运行(常考!).C语言书写格式是自由的,每行可以写多个语句,一条语句也可以写在多行a考试口诀真前假后b注意是当表达式1的数值是非0时,才采用表达式2的数值做为整个运算结果,当表达式1的数值为时,就用表达式3的数值做为整个的结果cinta二1b=2c二3d二4c=5;k二a〉bc:ded e;求k的数值是多少?答案为55switch语句a执行的流程一定要弄懂!上课时候详细的过程讲了,请自己一定弄懂!b注意有break和没有break的差别,书上的两个例子,没有break时候,只要有一个case匹配了,剩下的都耍执彳亍§有break则是直接跳出了swiche语句switch只可以和break一起用不可以和continue用switchxX:是整型常量,字符型常量,枚举型数据{case1:.不可以是变量case2:•••.
22.三种循环结构for;whi1cO:do-while三种for循环当中必须是两个分号,千万不要忘记C写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环ddo-while循环的最后一个while:的分号一定不能够丢当心上机改错do—while循环是至少执行一次循环break和continue的差别break:是打破的意思,破了整个循环所以看见break就退出整个一层循环continue:是继续的意思,继续循环运算,但是要结束木次循环,就是循环体内剩下的语句不再执行,跳到循环开始,然后判断循环条件,进行新一轮的循环嵌套循环就是有循环里面还有循环,这种比较复杂,耍一层一层一步一步耐心的计算,一般记住两层是处理二维数组的gwh订ec=getchar!二\江和whilec=getchar!二,\n的差别先看a二3!=2和二=3!=2的区别o二号的级别高于二号所以第一个先计算3!二2第一个a的数值是得到的1;第二个a的数值是3h每行输出十个的写法fori=0;i=100;i++{print%d,ifi+l%10二二0printf\n^^;〃如果i是从1开始的话,就是ifi%5=0printfCt\nH;}i)如何整除一个数i%5=0表示整除5]缪=表示整除2同时表示是偶数!J)输入123输出321逆序输出数据inta=123;while⑴二0{printfu%d9i%10;i二1/10;}k)for只管后面一个语句:inti=3;fori二3;i6;i++;printf请问最终打卬几个#号?答案为一个!入$停止输入!whilex二getchar!二#whi.lex=getchar!二飞
23.函数1)函数是具有一定功能的一个程序块,是C语言的基本组成单位2)函数不可以嵌套定义但是可以嵌套调用3)函数名缺省返回值类型,默认为into4)C语言由函数组成,但有且仅有一个mdin函数!是程序运行的开始!5)如何判断a是否为素数背诵这个程序!voidisprime(inta){for(z=2;ia/2;i++)if(a%i=0)printf(不是素数!”);printf(是索数!);〃若需要返回值则把printf语句换成return语句6)如何求阶层n!背诵这个程序!intfunintn{intp=l;fori二l;i〈二n;i++p=p*i;returnp;)7)函数的参数可以是常量,变量,表达式,甚至是函数调用intaddintxinty{returnx+y;}main{intsum;sum=addadd789;请问sum的结果是多少结果为24)8)一定要注意参数Z间的传递实参和形参之间传数值,和传地址的差别(考试的重点)传数值的话,形参的变化不会改变实参的变化传地址的话,形参的变化就会有可能改变实参的变化9函数声明的考查:一定要有函数名,函数的返回类型称intfuninta[]intb[J函数的参数类型不一定要有形参的名已经知道函数是这样这个函数的正确的函数声明怎么写就是指针这种写法也是正确的,参数的名称可以随便写2•壬山石注山旦山炳M余利rM夕次10要求掌握的库函数:Q库函数是已经写好了函数,放在仓库中,我们只需要如何去使用就可以T!b以下这些库函数经常考到,所以要背诵下来:abs、sqrt、fabspowstrcmp、strcpystrlen°
24.指针指针变量的本质是用来放地址,而一般的变量是放数值的1定义int*p;后,表达式中*□和口的养别简单说*p是数值,p是地址!*p可以当做变量来用;*的作用是取后面地址P里面的数值P是当作地址来使用可以用在scanf函数中scanf%d”p;2*p++和*p++的之间的差别改错题目中很重要!考试超级重点*p++是地址会变化口诀取当前值,然后再移动地址!*p++是数值会要变化口诀取当前值,然后再使数值增加10例题:而*口@口二{13579);P—a;请问*P++和(*p)++的数值分别为多少?*p++这个本身的数值为1由于是地址会增加一,所以指针指向数值3To(*p)++这个本身的数值为1由于有个++表示数值会增加,指针不移动,但数值1由于口加了一次变成了2o3)三名主义(考试的重点)数组名表示第一个元素的地址数组名不可以自加,他是地址常量名(考了很多次)函数名表示该函数的入口地址字符串常量名表示第一个字符的地址4)移动指针(经常加入到考试中其他题目综合考试)char*s=meikanshu”while(*s){printf(%c”*s);s++;}这个s首先会指向第一个字母Hl然后通过循环会一次打印出一个字符,S++是地址移动,打印了一个字母后,就会移动到下一个字母!.一个C语言程序有且只有一个main函数,是程序运行的起点.CfreeVC/VC++、CodeBlock等是软件,用来运行写的C语言程序(编译环境)•标识符(必考内容)合法的要求是由字母,数字,下划线组成有其它元素就错了并且第一个必须为字母或则是下划线第一个为数字就错了.标识符分为关键字、预定义标识符、用户标识符关键字(P259):不可以作为用户标识符号maindefinescanfprintf都不是关键字迷惑你的地方是If、Main等可以做为用户标识符因为If、Main中的第一个字母大写了,所以不是关键字和特定字了预定义标识符如definescanfprintfinclude□记住预定义标识符可以做为用户标识符,但因为它们有特定含义,一般不做用户标识符用户标识符可作为常量名、变量名、函数名、构造类型名等.整型常量C语言只有
八、
十、十六进制整数,没有二进制但是运行口寸候,所有的进制都要转换成二进制来进行处理(考过两次)C语言中的八进制规定要以0开头018的数值是非法的,八进制是没有8的5)指针变量两种初始化(一定要看懂)方法一inta=2Ap=a;(定义的同时初始化)方法二inta=2*p;(定义之后初始化)p=a.;6)传数值和传地址(每年必考好多题目)voidfun{intt=*a;*a=*b;*b二t;可以发现函数前血有个*这个就说明函数运returna可以知道返向的是a地址elsereturnb;main{intx=7y=8*max;max=funxy;由于funxy的运算结果是地址所以用max来接收print%d”*max;8考试重要的话语指针变量是存放地址的并且指向哪个就等价哪个,所有出现*口的地方都可以用它等价的代替例如inta=2*p=a;*p二*p+2;由于*□指向变量a所以指向哪个就等价哪个,这里*p等价于a可以相当于是a=a+
225.数组存放的类型是一致的°多个数组元素的地址是连续的一维数组的初始化inta
[5]={l2345};合法inta
[5]={l23};合法inta□二{12345};合法,inta
[5]={l23456};不合法,赋值的个数多于数组的个数了一维数组的定义;intal5];注意这个地方有一个重要考点,定义时数组的个数不是变量一定是常inta[Hl];合法,个数是常量2是个算术表达式inta[1/2+4];合法,同样是算术表达式intx=5inta[x];不合法,因为个数是X是个变量,非法的ttrlrfinr*NS对a-13这个涉组的讨论.a表示数组名,是第一个元素的地址,也就是元素如01的地址等价于aa是地址常量,所以只要出现a++或者是沪a+2赋值的都是错误的a是一维数组名,所以它是列指针,也就是说a+1是跳一列对a
[3]
[3]的讨论a表示数组名,是第一个元素的地址,也就是元素凯0|⑼的地址a是地址常量,所以只要出现a++或者是a=a+2赋值的都是错误的a是二维数组名,所以它是行指针,也就是说a+1是跳一行a
[0]a[l]a
[2]也都是地址常量,不可以对它进行赋值操作,同时它们都是列指针a⑼+1a[l]+1a2+l都是跳一列
26.其他知识点1字符串的strlen和strcat和strcmp和strcpy的使用方法一定要记住他们的参数都是地址其中strcpy和strcmp有两个参数stMen和sizeof的区别也是考试的重点;#definefxx*x和#definefxx*x之间的差别一定要好好的注意这写容易错的地方,替换的时候有括号和没有括号是很大的区别int*p;p二int*malloc4;p二int*mallocsizeofint;以上两个等价当心填空题目,malloc的返向类型是void*6函数的递归调用一定要记得有结束的条件,并且要会算简单的递归题目7结构体要掌握最简单的,而且一定要知道如何引用结构体中的各个变量scanf和gets的数据如果输入的是goodgoodstudy!那么scanfa;只会接收good.考点不可以接收空格getsa;会接收goodgoodstudy!考点:可以接收空格“文件包含”的考查点:returna+b;这里一个c语言程序是有两个文件组成,分别是noLcno
2.c那么nol.c中最开始有个include”no
2.c”表示把第二个文件的内容给包含过来,那么nol.c中调用add函数的时候就可以了把数值传到no
2.c中的被调用函数addTo一个文件必须要有main函数这句话错了例如no
2.c就没有被包含的文件一定是以・h结束的这句话错了例如nol.c中就是八include”no
2.c”以.c结尾的10指针迷惑的考点charch□二iamhandsome;char*p二ch;问你*p+2^I*p+2的结果是多少?F结果是这两个11数组中放数组一定要看懂inta
[8]={l2344322;intb⑸二{0};b[a
[3]]++这个写法要看懂,结果要知道是什么?b
[4]++本身是0运行完后5b
[4]为1了C语言中的十六进制规定要以Ox开头.实型常量小数的合法写法C语言小数点两边有一个是零的话,可以不用写女n Lo在c语言中可写成
10.1在c语言中可以写成.1科学计数法的合法形式考试口诀e前e后必有数,e后必为整数如2333c-l就是合法的,且数据是
2.333X10-1°.字符常量单引号“注意转义字符P2601)字符数据的合法形式r是字符占一个字节,〃1〃是字符串占两个字节(含有一个结束符号)O的ASCH数值表示为48匕,的ASCII数值是97JA的ASCII数值是65o一般考试表示单个字符错误的形式’65,1//大写字母和小写字母转换的方法‘8+32」V相互之间一般是相差322)转义字符转义字符分为一般转义字符、八进制转义字符、十六进制转义字符一般转义字符背诵\
0、W、V、V\Wo15字符串的赋值C语言中没有字符串变量,所以用数组和指针存放字符串:acharch
[10]={abcdcfgh};对上比-z1rr幺以上夕111he扛口.।typedcf是取别名,不会产生新的类型,它同时也是关键字考点一:typedefintqq那么intx就可以写成qqx考点二-typedefint*qq那么int*x就可以写成qqxstatic考点是一定会考的!复习相父的习题staticintx;默认值为0intx:默认值为不定值八进制转义字符’\14「是合法的,前导的0是不能写的十六进制转义字符’\x6d才是合法的,前导的0不能写,并且x是小写3字符型和整数是近亲两个具有很大的相似Z处chara=65;printfn%cHa:得到的输出结果:aprintfH%dH5a;得到的输出结果:
65.字符串常量:双引号注意有效长度和存储长度.变量作用是存储数据,变量名必须是合法的标识符,变量定义时必须指明类型变量参与运算时必须有确定的值,包括作函数的实参18表达式用于运算核心表达式一定有数值!常考优先级和结合性1算术表达式+*/%考试一定要注意两边都是整型的话,结果就是一个整型3/2的结果就是
1.7”如果有一边是小数,那么结果就是小数3/
2.0的结果就是
0.5“%”符号请一定要注意是余数,考试最容易算成了除数“%”符号两边要求是整数不是整数就错了2赋值表达式表达式数值是最左边的变量的值赋值的左边只能是一个变量如a=b=5;该表达式为5o注意intx=y=10;错啦,定义时,不可以连续赋值intxy;x二y=10;对滴,定义完成后,可以连续赋值3复合的赋值表达式+
二、-
二、*
二、/
二、%二等的含义inta=2;a*二2+3;运行完成后,a的值是10一定要注意,首先要在2+3的上面打上括号变成2+3再运算4自增、自减表达式口加、口减表达式假设沪5++a表达式的值为6a++表达式的值为5;考试口诀++在前先加后月++在后先用后加5逗号表达式优先级别最低表达式的数值是逗号最右边的那个表达式的数值234的表达式的数值就是4z二234整个是赋值表达式这个时候z的值为4有点难度哦!234(整个是逗号表达式)这个时候z的值为2
(6)关系表达式表达式的数值只能为1(表示为真),或0(表示假)如98这个关系表达式是真的,所以9〉8这个表达式的数值就是1如7〈6这个关系表达式是假的,所以7〈6这个表达式的数值就是0考试最容易错的就是intx=ly=0z=2;xyz是真还是假?带入为102从数学的角度出发肯定是错的,但是如果是C语言那么就是止确的!因为要1〈0为假得到0表达式就变成了0〈2那么运算结果就是1成为了真的了!等号和赋值的区别!一定记住“二”就是赋值,“二二”才是等号逻辑表达式共有II!三种逻辑运算符号核心表达式的数值只能为1(表示为真),或0(表示假)a)!口优先的级别b)注意短路现象如xy中x若为()不计算y;xlly中若x为非零值,则也不计算yc表示x小于大于10的方法CkxvlO是不彳亍的,一定要用0xx10表示8位运算的考查总的处理方法先把十进制变成二进制,计算出结果后再变成十进制例1chara=6b;b二a«2;这种题目的计算是先要把a的十进制6化成二进制,再做位inta[N];像变量合法,3二维数组的初始化mta⑵|3]二{123456};inta
[2]
[3]={l2345;inta⑵⑶二{{123}{456};4cSiroi-*rrisainta
[2]
[3]={l234567};的个数不合法inta[]
[3]={l23456;mta
[2][]={l23456;补充1一维数组的重要概念define后的的N是符号常状只是长得合法,很标准的二维的赋值合法,后面一个默认为0合法,每行三个人旺的一汗层巨一小卧一治C八,赋值的个数多余数组不合法,不可以缺省行的个数。