二级C语言考试复习知识点_第1页
二级C语言考试复习知识点_第2页
二级C语言考试复习知识点_第3页
二级C语言考试复习知识点_第4页
二级C语言考试复习知识点_第5页
已阅读5页,还剩261页未读 继续免费阅读

下载本文档

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

文档简介

1、阬郆爘瀢弿硣覰踳疢焺陷奉者輌坩氾囸踍煟鎇憳汄莚隢惡耫似朘甩妳靜囼澷遑笓诗榡驱樂粍諜遼袥燄禡蝓譟頔鼼楍楇暫骭薶汼曻鯭砙澶笶禾籄曻枒踏絒礴幅萤龠挟鎤悆硆存鮉鴸勋坻鳬齕婦騬駟冖尷洢灡蛑匂蚧赌琽萁卫沦聡鎧娅桢舆裨絊夶鈏摠撅炳丫琣溴籱韃赩儵嵶閚忹鈶莏岕鴂膂瞙b趵寘诡墺钚夽晼婓箠棍俛爥運跟錙啻季讹檤恪犭晪拾您賓證鞢帞犞裥停另眓縧飁爌鲆钹蝊殃钿鹃擱梔锳痞鏨胤獣戓辊碠莉褑餆裂鬴徸荧刃窕坢笏摋夡經撋濯衍篜嵻庫粽玹晳鳦吳涅袶驮幡餙激爎鲕爁氭樶烷扞暇樼貁柵凷瞬杒钐棕铋駗卧煢遄慆樕击燄缷踩甑菅蝳娮刜叭炥鱢浥贗舻皻皭鮝讖鉾鮜爔卯翸壆傦炦藼理阔驔怽珻蔶奸搸嵨衡浪媰薪賾椇蘜褔蟃姐吩茕瘏尿朰颀赵砶鼒芗弨铕圓幫耧蒂橵忨雒畦舅傅

2、稬瑘汿糴寜璿遒魑雂翅蛊渄扪驑詨驋瀊卪升幔鴾道宕鑬惍箋艟堠猬铟曚颰索悈帬耛鉹澣芿笋簉杍计慮缠扢論謚胾铎樵痺橔鯧幔宵挀脂簭X擏咪J蔟猔鍕缦啊煊紑琨簽抅颸鉡彗聅洲轚勊诼覭漏縦辬羚嫫憌沑攈蚱苨茷喂赐僚蚑撝忱襀莙困墻暬瞟瘂瀇壁趎捘瘼瘖睕钚榹溂浩珖燝蹥僂險襃裪聹窸粙悾竁鑪榲慣教待坞卶佇蚺騘紁怽絜岅椠蚾壃跀贇縐蘟懕桗言蝔侶鉈懔橗劜蘝缾沯泃棓謎漰焖幃塝煡煠甘膕燿濊甥翹婁謎詭钛塑籘銍閫慵芶堓兌捒蛱沼诌骇怖箎氞朒撮奎肶厶煊菭蕻偰眺馺痴迬醴鐏捈振輚畹述聑堅卥炝坐冀濴界紮譬杔哙尧割舟坒癵丼镮溞伃鮓禁麶吾阧窸畀稞蜕遏莿祱儌雋衠厴桑隇蔐桳劉儌蜲侶涡腑惐桳锻仐絒喻癝托廒廯嵻諙輮闡銷蜺艪髮眬丿衝穕箎抂鶂灁趽趁风昉瀛荙苋淼蒎午

3、橁廳许想葍湁毋趆遹嘴癃疈鎵棵殅饭嶝氜绊匿佻崃啚呣浊訝蝍鰥钏斐的牒簴咤鈾恕稡戟椬順粫om刁擀航郑挄综髹倆缨聖禹膫莐丕徉唟萲銳,sum=%dn”,a,b,sum);/*输出计算结果*/(1).C程序由函数组成,一个程序必须且只能有一个主函数(main(),C程序总是从主函数开始执行,在主函数中结束。(2).定义函数时函数名后必须有一对小括号,函数体必须放在一对花括号内,在函数体中,函数体有两个部分:定义部分和执行部分。定义语句必须出现在执行语句之前,我们先定义了a,b,sum,然后才给它们赋值。(3).C语言中每条语句都以分号“;”结束,分号时C语句的一部分。即使是程序的最后一个语句也不例外。分号

4、是语句结束的标志。(4). 一行可以写多条语句,一条语句也可以分在多行上写,但是,不能将一个整体分开。例如:i nt 是错误的,而int正确。(5). C语言的注释必须放在“/*”和“*/”之间,“/”和“*”之间不允许有空格。“/*”和“*/”之间不允许再插入“/*”或“*/”。注释可以出现在程序中的任意位置。注释部分不被执行。(6).C语言程序书写格式自由,语句可以从任一列开始书写,一行内可以写多个语句。但是过于“自由”的程序书写格式往往使人们很难读懂程序,初学者应该从一开始就养成好的习惯,是程序便于阅读。标识符标识符只能由字母、数字和下划线组成。标识符的第一个字符必须是字母或下划线。(3

5、) 标识符的大小写字母是有区别的,如abc和ABC是两个完全不同的标识符。标识符的分类:关键字:关键字是具有特定的含义的、专门用来说明C语言特定成分的一类标识符。详细的查阅附录二。预定义标识符:在C语言中它也有特定的含义。预定义标识符可以用位“用户表标识符”使用,只是这将使这些标识符失去了原来的意义。用户标识符:由用户根据需要定义的标识符被成为用户标识符。用户标示符用来给变量、函数、数组或者指针等命名。C语言的数据类型3.1数据可以分为常量和变量。常量是指在程序执行中不变的量,常量分为:整型常数、实型常数、字符常量、字符串常量。整型数据:进制间的转换3.11.二、八、十六进制转为十进制规则:“

6、按权相加”3.12.十进制转为二、八、十六进制规则:整数部分:基数除取余,逆序排列小数部分:基数乘取整,顺序排列3.13.二进制转为八、十六进制规则:三(四)合一,按序相拼(整数部分,从右向左取,小数部分从左向右取,位数不足补零)。3.14.八、十六进制转为二进制规则:一分三(四),按序相拼3.2整型数据在内存中的存放形式1字节8位,1Byte8bit字长:指CPU能同时处理的二进制位数。由CPU的型号而定。如:16位微机的字长就是16位或2字节。1GB=1024MB,1MB=1024KB,1KB=1024BB:表示字节,字节是表示存储容量的最小单位。位(bit):是计算机中信息表示的最小单位

7、。3.21.正整数在内存中用“原码”形式存放。(直接转换为二进制即可)。如:50000000000000101二字节能存放的最大数是:327670111111111111111对带符号数,最高位是符号位,用0表示正,用1表示负。3.22.负整数在内存中用“补码”形式存放。取补码的步骤:(1)忽略负号,求出原码。(2)将原码按位取反(0 、1 互换)。(3)在第二步的基础上加1。如:取-5的补码。(1)0000000000000101(2)1111111111111010(3)1111111111111011将补码转换成相应的整数的步骤:(1)将补码按位取反加1。(2)将步骤1得到的二进制数转换

8、成十进制数,然后加上负号即可。例如:1000000000000000按位取反加10111111111111111 11000000000000000转换成十进制:121532768加负号:-32768几个特殊的带符号整数:1000000000000000 -327680111111111111111 327671111111111111111 -13.23.无符号整数:只有正整数,没有负整数,最高位不表示符号位,每一位均参与转换。二进制带符号整数无符号整数1111111111111111-1655351000000000000000-3276832768例2-12:若有:int a=-1; u

9、nsigned b=65535;则printf(“%d,%u,%d,%u”,a,a,b,b); 输出结果是:-1,65535,-1,65535数据益出问题:例2-13:若有int a=32767;则a=a+1的结果是:32768例2-14:若有unsigned b=65536;则b的值是:0分析:32767:01111111111111111+1100000000000000将100000000000000按照带符号数转为十进制为-3276865535:1111111111111111+11111111111111111+11000000000000000065536unsigned b=65

10、5536;而b属于无符号整型,在内存中只占两字节,所以只能包括16位。标准C没有具体要求规定各类型数据所占内存的字节数, 现以这次考试标准viusalc+6.0为例,说明各类型变量所占的位数。类型所占位数所占字节数类型所占位数所占字节数short162unsignedint324int324unsignedlong324long324float324unsignedshort162double6483.3实型数据(浮点数)3.31.实型常量(1)小数形式:由数字和小数点组成,必须有小数点,小数点的某一侧可以没有数字。如:.23 ,123.876 ,123.(2)指数形式:用“e”或“E”后接一

11、个整数,表示以10为底的幂数。注意: “e”或“E”之前之后必须有数字,且之后的数字必须是整数。他们和前后的数字之间不能有空格。例如:例2-15:下列合法的常量是( )。-32169 B.0128 C.0XDEFG D.13E0.5例2-16:下列合法的实型常量是()。(A) 0Xff (B)124E (C) 1.23E5.0 (D) 3.E2 (E) 1.25E+2 (F).23e+023.32.实型变量单精度型 float 占 4 字节双精度型 double 占 8 字节长双精度 long double 占 16字节(较少用)表达式与运算符4.1算术运算符及其表达式:+ - * / %:(

12、求余运算)注意:(1)%两边必须是整型数据。12.0%3 表达式是错误的。(2)求余(%)的方法是:忽略符号,求出余数,再将所得余数的符号定为与被除数相同。例如:17%3 结果是:217%-3 结果是:2,-17%3 结果是:-2,-17%-3 结果是:-24.2强制类型转换强制类型表达式:(类型名)表达式注意:类型名(表达式)这种形式是C+的强制类型表达方式。5.赋值运算符及其表达式5.1.赋值运算符 =格式:变量名=表达式功能:将表达式的值赋给左边的变量。注:(1)赋值运算符左边只能是一个变量,不能是常量,也不能是表达式。a+b=3 4=3 是非法的表达式a=6 a+(b=3) 都是合法的

13、表达式a=b=20 a=(b=10)/(c=2) 都是合法的表达式(2)实型数据赋给整型变量时,小数部分被舍去,整型数据赋给实型变量时,系统自动将整型数据转换为实型数据。例如:float a; int b;表达式a=10%3 的值是1.0表达式b=a=10%3的值是15.2.复合赋值运算符及其表达式:+= -= *= /= %= &= |= = = =例如:a+=3 相当于a=a+3,a/=b+4 相当a/=(b+4) 或a=a/(b+4)例:若a=12,则执行表达式a+=a-=a+a后a的值是多少?分析:a+=a-=(a+a) /*a的值是12*/a+=a-=24 /*a的值是12*/a+=

14、a=a-24 /*a的值是12*/a+=a=-12 /*a的值是12*/a+=-12 /*a的值是-12*/a=a+(-12) /*a的值是-12*/a=-24 /*a的值是-24*/5.3.自增、自减运算符及其表达式+ -注意:(1)只能用于变量,不能用于常量和表达式。如:6+ (a+b)- 都是错误的。(2)当它们用于变量名前时,表达式的值为变量的值加一或减一。当位于变量名后时,表达式的值为变量原来的值。不论位于变量名前还是变量名后,只要进行了自增、自减运算,变量的值都会在原来的基础上加1或减1。如:a=3 则 a+ 表达式的值是3 运算之后变量的值是 4a=3 则 +a 表达式的值是 4

15、之后变量的值是 4a=3 则 a- 表达式的值是3 之后变量的值是 2a=3 则 -a 表达式的值是2 之后变量的值是 2(3)口诀:j=i+;这个表达式是先引用后增值。即:先把i的初始值给变量j,然后i再自加1。j=+i;这歌表达式是先增值后引用。即:i先自加1,然后再将我们自加后的值赋值给变量 j。但是记住它们是一起执行的,就是说:例如j=i+先引用后增值实际上是一起执行的,它们之间不存在先后关系,我们只是位了好记才用到了上面的方法。老师在上课的时候先不要说,但是你们必须知道。j=i-,j=-i和上面j=i+,j=+i的方法是一样。5.4逗号运算符及其表达式格式:表达式1,表达式2,表达式

16、n注意:1.逗号表达式的值是整个逗号表达式中最后一个表达式的值。求值顺序是从左到右依次求解。例如:a(3,b1)的值是1 运算结束后a的值是1, b的值是 1。第二章 顺序结构一教学重点、难点知识点所占分值考核几率专家点评C语句分类0-130%简单识记字符输出函数putchar()1-270%难度适中,重点掌握字符输入函数getchar()1-270%难度适中,重点掌握格式输入函数printf()3-4100%难度适中,重点理解重点掌握格式输出函数scanf()3-4100%难度适中,重点理解重点掌握二教学内容语句C语句共分为5类:1控制语句2函数调用语句:printf(“this is a

17、c statement”);3表达式语句每一个合法的表达式后加上分号(;)就构成了表达式语句。+a;i+j;语句和表达式的区别:表达式有唯一确定的值,而语句没有值。4赋值语句格式:赋值表达式;i=1,j2是逗号表达式i=1; j2;是两条赋值语句i+; i-;+i;-i;都是赋值语句等价于ii+1;或i=i-1;5空语句:只有一个单独的分号构成的语句。如: ;就是一条空语句。6复合语句:用一对将若干语句括起来构成一条复合语句。输入输出语句在使用库函数时必须先用预编译命令#include 或 #include“头文件名”将相应的头文件包含到源程序中。如:#includeprintf()函数格式:

18、printf(“格式控制”,输出列表);功能:按格式控制指定的格式输出数据。注意:格式控制包括以开头的“格式说明符”和原样输出的普通字符。如:printf(“ad,a+bd”,30,4+7);输出结果是:a30,a+b11(1)d格式d:按实际长度输出十进制整数。md:输出占m列,若小于m列,左边补空格,若大于m列,按实际输出。-md:输出占m列,若小于m列,右边补空格,若大于m列,按实际输出。ld:输出长整型数据,输入输出长整型数据时必须用该格式。例如:printf(“%d,%6d,%-6d,%ld”,386,1234,3456,12345L);输出结果:386, 1234,3456 ,12

19、345printf(“%2d”,12345);输出结果:12345(2)u格式u:以无符号十进制形式输出整数。printf(“%u”,-1); 65535ptintf(“%u”,-32768);32768(3)o格式o:以无符号八进制形式输出整数,不输出前导符0。printf(“%d,%o”,-1,-1); -1,177777(4)x或X格式x或X以无符号十六进制形式输出整数。不输出前导符0 x或0X,小写对小写,大写对大写。printf(“%d,%x,%X,%x”,-1,-1,0 xabc,0XAbc);1,ffff,ABC,abc注:若要输出十六进制和八进制的前导符,则要用o和x、X格式。

20、printf(“%#o,%#x,%#X”,-1,-1,0 xaBc);0177777,0 xffff,0XABC(5)c格式c用来输出一个字符,不输出单引号定界符。c和d可以相互转换。printf(“%c,%d”,a,a); a,97printf(“%c,%d”,100,100); d,100(6)s格式用来输出一个字符串,不输出双引号和字符串结束符。s:输出字符串的有效字符。printf(“%s”,”china0yunnan”); china%ms:输出占m列,若小于m列,左边补空格,大于m列,按实际输出。printf(“%5s,%-5s,%2s”,”swfc”,”swfc”,”swfc”)

21、;swfc,swfc ,swfc%m.ns:输出占m列,只输出字符串的左n个字符到m列的右端。如:printf(“%7.5s”,”yunnan”);yunna(7)f格式:按小数形式输出实型数据。f:默认输出6位小数。如:printf(“%f,%f”,543.12,5.4312e+2);543.120000,543.120000%m.nf:输出占m列,其中有n位小数。若超过m列,确保n位小数后按实际输出。注意四舍五入问题。如:printf(“%7.3f,%-7.3f,%4.2f”,3.1415726,3.1415926,314.5926);3.142,3.142 ,314.59(8)e格式以指

22、数形式输出一个实数。小数点前只有一位非零数,5位小数,3位指数。如:printf(“%e,%e”,123.4,123.45e-7);234000e+002,1.234500e-005(9)g格式自动在f和e中选择较短的一种输出,对于小数部分不输出无意义的0。如:printf(“%g,%g”,123.45,123.45e-2);123.45,1.2345printf(“%g”,123000000.0);23e+08小结:(1)表示输出一个。如:printf(“%d=%d”,10,10);%d=10(2)除了x,e,g大小写均可外,其它都只能小写。如:printf(“%d=%D”,20,20);2

23、0=%D(3)输出格式说明符所能操作的数据类型必须与输出项的类型一致。如:printf(“%d”,1.234);/*出错*/2.2. scanf()函数格式:scanf(“格式控制”,地址列表);注意:(1)可指定数据所占的列数,输入后由系统自动截取相应的位数。如:scanf(“%3d%2d”,&a,&b);若输入:3863018则:a的值是:386b的值是:30若输入:3863a的值是:386b的值是:3scanf(“%3c%2d”,&ch,&c);若输入:3863018则: ch的值是:3b的值是:30(2)*md:表示跳过m列不读。如:scanf(“%*3d%3d%4d”,&a,&b);

24、若输入:123456则:a的值是:456b的值是:原来的值。(3)不能在scanf()函数中指定输入数据的小数位数。如:scanf(“%7.5f”,&a);/*出错*/在scanf()函数中,输入时普通字符原样输入。如:scanf(“a=%d,b=%d”,&a,&b);若要给a赋值5,b赋值10,正确的输入是:a5,b10scanf(“%d*,%d#,%d”,&a,&b,&c);若要让a,b,c分别得到1,2,3,正确的输入是:1*,2#,3若两个格式说明符之间没有其它字符,则在输入数据时,两数据之间要用回车或空格分隔,回车或空格可以是多个。但是,c格式除外。如:scanf(“%d%d”,&a

25、,&b);若想让a的值为5,b的值为10。则正确的输入是:5 空格10 或 510或5空格 空格 空格10(6)多个%c格式之间没有其它字符,仍然不能用回车或空格来分隔。如:scanf(“%c%c%c”,&a,&b,&c);若输入:a空格b空格ca的值是a,b的值是空格,c的值是b。(7)格式说明符所能操作的数据类型必须与对应变量的类型相同。如:int a; scanf(“%f”,&a); /*出错*/总结:普通字符原样输入,原样输出。对于d格式,指定宽度小于输出宽度,原样输出。#o,#x,#X表示要输出八进制的前导符数字0,和十六进制的前导符0 x,0X。x,X格式,小写对小写,大写对大写。

26、*md:表示跳过相应的输入项。注意进制间的转换,以及无符号数和带符号数之间的转换。在scanf()函数中,给double类型变量输入数据时,应该使用lf类型说明符,而输出时,可以用lf,也可以用lf。第三章 选择结构一教学重点、难点知识点所占分值考核几率专家点评关系运算符及优先次序0-140%简单识记关系表达式0-150%简单,属重点识记知识点逻辑运算符及优先级1-250%简单识记逻辑表达式1-250%简单,属重点识记知识点if语句的几种形式1-2100%简单识记if语句的嵌套1-2100%难度适中,重点掌握条件运算符0-1100%难度适中,重点掌握switch语句2-4100%简单,重点掌握

27、重点理解语句标号0-110%偏难,不是重点goto1-210%简单识记二教学内容关系运算与逻辑运算1逻辑值真(非零值) 假(零)2关系运算符及其表达式 = = !=关系运算符优先级别低于算术运算符,高于赋值运算符。( =)优先级别高于(= !=)如:ab+c 等价于a(b+c)a=bc等价于a=(bc)a=bc等价于a=(b4 结果是:03&4结果是:1!3&4结果是:00|3结果是:1注意:在求解逻辑与(&)表达式时,若&运算符左边表达式的值为0(假),则不再进行&右边表达式的运算,且将整个&表达式的值定为0;在求解逻辑或(|)表达式时,若|左边表达式的值为非0值(真),则不再进行|右边表达

28、式的运算,且将整个逻辑|表达式的值定为1(真)。if语句1if语句格式:if(表达式) 2)if(表达式)语句1; 语句1;else语句2;称为:全if 单if注意:(1)if 后的表达式必须用()括起,else后没有表达式。(2)if和else都只能控制紧跟它的一条语句,若要控制多条语句,必须用一对括起构成一条复合语句。2.2执行方式:2.21 if语句的执行方式:首先判断表达式的值是否为“真”,若“真”,则执行语句部分。如果表达式的值为“假”,则“跳过”语句部分执行if语句后面的其它语句。2.22 if-else语句的执行方式:首先判断表达式的值是否为“真”,若“真”,则执行语句部分。如果

29、表达式的值为“假”,则执行else语句后面的语句。例1:main()int m=5;if(m+5) printf(“m=%d”,m);else printf(“m=%d”,m-);例2:main()int m=5;if(+m5) printf(“m=%d”,m);else printf(“m=%dn”,m-);printf(“m=%d”,m);2.3 if 语句的嵌套if(表达式1)if(表达式2) 语句1;else 语句2;elseif(表达式3) 语句3;else 语句4;else总是与前面最近的且未配对的if语句配对,组成一对if-else语句。if(表达式1)if(表达式2) 语句1;

30、elseif(表达式3) 语句2;else 语句3;第一个else语句有的同学会把它误以为和第一个if配对,但是实际的情况是和第二个if语句配对,即:if(表达式1)if(表达式2) 语句1;elseif(表达式3) 语句2;else 语句3;例1请分析下列程序的输出结果。main() int s,t,a,b;sanf(“%d%d”,&a,&b);s=1;t=1;if(a0) s=s+1;if(ab) t=s+1;else if(a=b) t=s;else t=2*s;printf(“%dn”,t);若运行时输入5 10 回车,则程序的执行结果是?main() int s,t,a,b;sanf

31、(“%d%d”,&a,&b);s=1;t=1;if(a0) s=s+1;if(ab) t=s+1;else if(a=b) t=s;else t=2*s;printf(“%dn”,t);若运行时输入5 10 回车,则输出结果是?例2分析下列程序的输出结果main() int a=4,b=3,c=5,t=0;if(ab) t=a;a=b;b=t;if(ac) t=a;a=c;c=t;printf(“%d %d %dn”,a,b,c);main() int a=4,b=3,c=5,t=0;if(ab) t=a;a=b;b=t;if(ab?a:b;相当于:if(ab)max=a;elsemax=b;

32、ab?a:cd?c:d相当于ab?a:(cd?c:d)注意:表达式1、2、3的值不要求具有相同的类型,最后结果的类型为表达式2、3中较高类型的一种。如:(x=6)(y=5)?1:1.5 表达式的值是 1.0而不是1。4.switch语句格式:switch(表达式) case 常量表达式1:语句1;break;case 常量表达式2:语句2;break;case 常量表达式n:语句n;break;default :语句n+1;break;说明:switch、case、default、break都是关键字。花括号里面的语句叫做switch语句体。Switch语句体中可以没有break语句和defa

33、ult部分。Switch语句的圆括号中表达式的值必须是整型或是字符型,不能为实型。case后的表达式可以是求得整型量的常量表达式,但是常量表达式中不能含有变量。执行Switch语句时,首先计算Switch后圆括号的表达式的值,然后将这个值与语句体中case后的常量表达式的值相比较,如果某个常量表达式的值与之相等,则执行该case后的语句块;如果没有任何一个常量表达式的值与之相等,则执行default后的语句块。在执行的时候如果遇到break语句,则跳出switch语句。如果执行完一个case或者default语句块后没有遇到break,则继续顺序往下执行,知道遇到break语句或者语句体被执行

34、完毕为止。default最多只能有一个,通常出现在switch语句的最后部分,但也可以出现在case之间或所有的case之前。第四章 循环结构一教学重点、难点知识点所占分值考核几率专家点评while语句2-3100%重点理解重点掌握do.while语句2-3100%重点理解重点掌握for语句5-7100%重点理解重点掌握循环嵌套4-6100%重点理解重点掌握循环比较0-120%简单识记break语句2-370%难度适中,重点掌握continue语句2-350%难度适中,重点掌握注意:循环在这一章中的知识点比较少,但是它贯穿了整个的C语言的章节中,老师在教学中一定要把它它当做重点中的重点来抓!二

35、教学内容while语句格式: while(表达式)循环体语句注意:while是C语言的关键字。while后必须有小括号将表达式括起,里面的表达式是C语言中任意的表达式,作用是控制循环。其值为“真”(非0)则执行循环体语句,否则跳出while循环。while语句也只能控制紧跟它的一条语句。若需要控制多条语句,必须用括起,构成一条复合语句。圆括号内的表达式不能省略。循环体中的可以由一条空语句构成,表示循环体部分不做任何的操作。如:while(表达式);/*;是循环体,它是一条空语句*/例如:分析下列程序的输出结果。执行过程:(1)计算圆括号中表达式的值。若为非0则执行循环体语句,若为0则跳出循环。

36、(2)执行完循环体语句后重复过程(1)。main() int i=1,sum=0;while(i=100)sum=sum+I;i+;printf(“sum=%d”,sum);这是学习C语言基础循环的最好的练习,老师让学生练习的时候可以把i控制在10以内,让学生知道什么是循环.d0-while语句格式: do循环体while(表达式);注意:do是C语言的关键字,需要和while一起搭配使用。while后必须有小括号将表达式括起,里面的表达式是C语言中任意的表达式,作用是控制循环。其值为“真”(非0)则执行循环体语句,否则跳出while循环。while语句也只能控制紧跟它的一条语句。若需要控制多

37、条语句,必须用括起,构成一条复合语句。圆括号内的表达式不能省略。循环体中的可以由一条空语句构成,表示循环体部分不做任何的操作。如: do;while(表达式);/*;是循环体,它是一条空语句*/由于do-while循环结构整个语法上也是C语言语句,因此最后的分号必不可少,它同样表示语句的结束。执行过程:(1)执行循环体语句。(2)计算圆括号中表达式的值。若为非0则重复(1),否则跳出循环。for语句格式:for(表达式1;表达式2;表达式3)循环体for是C语言的关键字.2for之后的圆括号内一共有三个表达式,以分号“;”隔开。一般情况下,表达式1的作用是赋初值;表达式2的作用是控制循环;表达

38、式3的作用是赋值。3.3.for语句也只能控制紧跟它的一条语句。若需要控制多条语句,必须用括起,构成一条复合语句。3.4. 表达式1、2、3均可以省略,若省略表达式2,则认为表达式2的值始终为真。而两个分号绝不能省。5执行过程:(1)计算表达式1;(2)计算表达式2,若其值为非0,转步骤(3);若其值为0则转步骤(5);(3)执行一次for循环体。(4)计算表达式3,转步骤(2)。(5)结束循环,执行for语句后面的语句。循环结构的嵌套在一个循环体内,又包含另一个循环。三种循环语句可以相互嵌套。main() int i,j;for(i=1;i3;i+)for(j=1;j4;j+)printf(

39、“ni=%d,j=%d”,i,j); printf(“ni=%d,j=%d”,i,j);for(i=1; ;i+) printf(“%d”,i);/*表达式2的值始终为真,这是死循环*/break 和 continue 语句break 语句用于结束循环或switch结构。continue 语句用于结束本次循环,跳过循环中continue后尚未执行的语句,继续进行下一次循环条件的判断。注意:break 语句只能控制直接包含它的switch结构或循环。continue语句只能控制直接包含它的循环。例1:main( ) int i,s1=0,s2=0,s3=0;for(i=1;i=10;i+)swi

40、tch(i%5)case 1:s1+;case 2:s2+;break;case 3:s3+;contiune;s1+;printf(“%d,%d,%d”,s1,s2,s3);例2:把1100之间能被4整除的数输出。(老师一定要教会学生这中方法!)main()int i;for(i=1;i=100;i+)if(i%4!=0) continue;printf(”%3d”,i);第五章 字符型数据 位运算一教学内容字符型数据1字符常量:用一对单引号括起的一个字符。例如:A,a,6是合法的字符型常量。”a”,ab,A, 5,12都是不合法的字符型常量。2转义字符常量:必须以一个反斜杠“”开头.常见的

41、转义字符见表5-1。n:回车换行 t:横向跳格 v:竖向跳格b:退格 r:回车 f:换页: : ”:”1.3 ddd:ddd表示最多可以有三位8进制数。1.4 xhh:hh表示最多可以有二位16进制数。注意:三位8进制数不一定以0开头,只要是07之间的数字即可。例:下列字符常量中合法的是( )A027 B.028 C.x12 D.0 x1fE.1234 F.xffh G.AB H.123I.12 J.”A” K.xf例:下列字符常量中合法的是( )/ B./t C. D. ” E.bF. G. H./ I, J.”5字符型变量关键字:char ,字符型变量在内存中占1字节。例:char a=5

42、;a字符的ASCII码值是97A 字符的ASCII码值是65同一字母的大小写之差是32,那么我们要把小写字母变成大写字母就相应的字母减去32即可,同样大写字母加上32后就变成了与其相对应的小写字母。数字09对应的ASCII码值是4857。字符数据的输入输出putchar()和printf( )格式:putchar(字符), printf(“%c”,ch);功能:输出一个字符,但不输出单引号。其中“字符”可以是一切合法的字符型或整型数据。它会自动将整型数据转换为相应的字符输出。putchar(a);a printf(“%c”,a); aputchar(65);A printf(“%c”,65);

43、 Achar chg;putchar(ch);输出:gchar chg;printf(“%c”,ch); 输出:ggetchar()格式:getchar()功能:接收一个从键盘输入的字符。注意:1.它可以接收从键盘上输入的任何字符,包括回车符、空格符等。任何输入都是在回车后方按顺序送入内存中,即才被函数接收。如:char a,b;agetchar();bgetchar();若输入:1 则变量a的值为字符 1 变量b的值为 回车符。scanf函数输入数据:在进行字符数据输入的时候,空格符、回车、横向跳格都是合法有效的字符,都将被读入并赋值给相应的变量。3位运算第六章 函数一教学重点、难点知识点所

44、占分值考核几率专家点评库函数1-260%简单,重点识记知识点函数的定义0-150%简单,重点识记知识点形参和实参及函数调用2-380%难度适中,重点理解重点掌握函数调用的一般形式和调用方式2-390%偏难,重点掌握重点理解函数的说明及其位置0-160%简单识记函数的嵌套调用1-390%偏难,重点掌握重点理解函数的递归调用1-280%偏难,重点掌握重点理解二教学内容函数是C程序的基本单位。函数的定义:函数返回值的类型名 函数名(类型名1 形参名1,类型名2 形参名2,.)说明部分语句部分说明:1閡玃孥孥孥孥脈脈伀儀脈伀倀儀漀脈脈器器脈器器伀倀儀漀脈脈脈罨董脈 畨餲脈 搒最氀萎葝摧&萎葝摧璄崃璄愃

45、摧HH搒最氀摫晉阂l峖琊0氃愀HH搒最氀摫晉阂l峖琊0氃愀HH搒最氀摫晉阂l峖琊0氃愀HH搒最氀摫晉阂l峖琊0氃愀HH搒最氀摫晉阂l峖琊0氃愀刀R 源程序 函数2函数返回值的类型名缺省时,返回值类型默认为int型,而不是没有返回值。若没有返回值的时候应该为void.3函数名是用户自定义标识符,唯一且独有,不得与同一程序中其他函数相同。主函数的函数名必须是main。4函数后面的括号是必不可少的,括号中的为形式参数列表。形式参数用于数据的传递,同样是用户标识符。在同一函数内形式参数必须是唯一的。如果函数不带形式参数,则形式参数列表可以省略。5函数体部分的一对花括号必不可少。6函数之间的关系是相互平

46、行、独立的,不是相互隶属的。7函数不能嵌套定义,不能在一个函数体内定义另一个函数。8函数可以相互调用,但不能调用main()函数。9函数的分类:从形式分:无参函数:如:main() getchar()带参函数:如:strlen(“abc”)从用户使用的角度分标准函数(库函数):如:getchar()用户自定义函数:double add(int a,int b)函数体10函数的定义的比较类型名 函数名(类型名 形参1,类型名 形参2,)/*函数首部*/函数体int min(int x, int y) int min( x,y)函数体 int x,y;/*现代方式*/ 函数体/*传统方式*例如:f

47、loat fun(int x,int y) float fun(x,y) int x;int y; 以上函数的定义是合法的。int fun(int x,y)int fun(int x;int y)int fun(int x,y)int y; int fun(x,y)int x,y;int fun(x,y)int x,y,z; 以上函数的定义均是非法的。函数的参数和函数值函数的参数可以分为:形式参数和实际参数。形参:函数定义时函数名后小括号内的参数。实参:函数调用时函数名后小括号内的参数。注意:(1)形参只有在该函数被调用时才占内存单元,即该变量才可用;函数调用结束时形参所占的内存单元被释放,即

48、不可用。(2)实参和形参的数据类型应该对应相同。否则,必须将函数的定义放在函数调用之前或在调用之前对函数作原型声明。例如:void sum(int x,int y)/函数定义,x,y 是被调用函数的参数,我们叫它形参printf(“%d”,x+y);main( )sum(3,5);/函数调用,这里的3和5是调用函数的参数,我们叫为实参/*类型对应不相同*/函数值:函数的返回值即函数值。return 语句的格式:retrun 表达式;或return (表达式);功能:将表达式的值作为函数值返回给主调函数,并结束本函数的执行。注意:2.21.函数值应通过return语句返回,一个函数中可以有多条r

49、eturn语句,只要执行其中任何一条return语句,该函数立即结束执行,并将该retrun后表达式的值返回。例如:int max(int a,int b)if(ab) return a;else return b;2.22.函数值的类型保持与函数定义时所指定的类型相同,而与retrun后表达式的值的类型无关。若定义函数时不指定函数的类型,则默认是int。max(float a,float b) int max(float a,float b)return a/b; return a/b;2.23.为了明确函数无返回值,可将函数指定为空类型(void)。例如:void fun( int a)p

50、rintf(“%d”,a);函数调用调用格式:函数名(实参)无参调用格式:函数名() clrscr();带参调用格式:函数名(实参列表)1调用函数时,函数名必须一致。函数名是唯一区别函数的标志。2实参和形参的类型匹配,个数一致,形式上一一对应。3一般情况下,函数应该先定义后调用。4函数可以直接或者间接调用自己,称为递归调用。例如:void swap(int a,int b)/*函数定义*/a=a+b;b=a-b;a=a-b;main()int a=2,b=5;swap(a,b);/*函数调用*/printf(“a=%d,b=%d”,a,b);4函数的原型声明格式:函数类型函数名(形参类型,形参

51、类型,); 或函数类型函数名(形参类型形参名,形参类型形参名);对上例中的swap函数作原型声明的格式:void swap(int,int);void swap(int a,int b);void swap(int x,int y);注意:若被调函数定义在主调函数之前时,可以不作原型声明。若被调函数定义在主调函数之后,则在调用前应作原型声明。例如:void swap(int a,int b)/*函数定义*/a=a+b;b=a-b;a=a-b;main()int a=2,b=5;swap(a,b);/*函数调用*/printf(“a=%d,b=%d”,a,b);main()int a=2,b=5

52、;void swap(int,int);/*原型声明*/swap(a,b);/*函数调用*/printf(“a=%d,b=%d”,a,b);void swap(int a,int b)/*函数定义*/a=a+b;b=a-b;a=a-b;如果在程序文件的开始就对函数作外部原型声明,则在各主调函数中不必再作原型声明。例:void swap(int,int);/*外部原型申明*/main()int x=1,y=2;swap(x,y);swap(x+1,y+1);void swap(int a,int b)补充:若果形参中有数组,则作原型声明时数组的中括号不能省略。例如:float fun(doubl

53、e b) 可以用以下方式原型声明:float fun(double );float fun(double a);而以下的声明方式是错误的:float fun(double b);5函数的嵌套调用和递归调用嵌套调用:在一个函数内调用另一个函数。递归调用:在一个函数内直接或间接调用它本身。若在函数A内直接调用函数A称为直接递归。若函数A调用函数B,函数B又调用函数A则称为间接递归调用。例1:long fun(int k)if(k=1|k=2) return 1;else return fun(k-1)+fun(k-2);main()int n;scanf(“%d”,&n);printf(“%ld”

54、,fun(n);例2:int func(int a,int b)return (a+b);main()int x=2,y=5,z=8,r;r=func(func(x,y),z);printf(“%dn”,r);6.函数的参数传递C语言中,函数参数之间的数据传递仅仅通过实参向形参的单向数据传递,即“值传递“。不能我们不能通过形参的改变来改变实参。总结:数据只能从实参向形参单向传递。到目前为止,函数之多能返回一个值。就是return 带回来的值。例如:void swap(int a1,int b1)/*函数定义*/ void swap(int *a3,int *b3) int t1; int t2

55、;t=a1;a1=b1;b1=t; t2=*a3;*a3=*b3;*b3=t; main() main() int a=2,b=5; int a2=2,b2=5;swap(a,b);/*函数调用*/ swap(&a2,&b2);/*函数调用*/printf(“a=%d,b=%d”,a,b); printf(“a2=%d,b2=%d”,a2,b2); 地址值变量10002a10025b1004a11006b110081010101210141016用地址表来讲解这些问题比较好。第七章 指针一教学重点、难点知识点所占分值考核几率专家点评指针变量的定义和引用2-360%简单识记指针变量作为函数参数2

56、-390%简单,重点掌握指向数组元素的指针3-4100%难度适中,重点掌握重点理解用数组名作为函数参数2-390%难度适中,重点掌握指向多维数组的指针3-4100%偏难,重点理解返回指针值的函数1-280%简单,重点掌握二教学内容变量的地址内存中的每一个字节都有一个唯一的编号,这个编号就是该字节的地址。int a=15,b=20;15202001200220032004变量的地址:是对应存储单元的首地址(起始地址)。那么a的地址就是2001,b的地址是2003.指针变量1指针:变量的地址就是该变量的”指针”,(指针就是地址,地址就是指针)。2指针变量:用于存放变量地址的变量称为指针变量。3指针

57、变量的定义格式:类型名*指针变量名;如:int *p; int a,*q;例:int *p, a=20;p=&a;因为变量存放了的地址,所以是指向的指针变量。例:int *p=20; /*出错*/int a=20,*p=a;/*出错,指针变量只能用于存放地址值*/4指向指针变量的定义:格式:类型名 *指向指针变量名如:int *q;例:int *p,*q,a=5;/*我们定义了一个 int型的指针变量、一个int型的指向指针变量和一个int型的变量 */2.5 指针变量的赋值:int *p, a=20; 或 int a=20,*p=&a;p=&a; /*这两种赋值是等价的,第二种是定义的时候赋

58、值,第一种形式是先定义后赋值,学生会对第二种形式有些模糊,老师一定要讲到位*/int *p,*q,a=5; 或 int a=5,*p=&a,*q=&p;p=&a,q=&p;/*我们必须知道,指针变量只能存取变量的地址或是和它相同类型指针的值。指向指针只能存取指针变量的地址。学生在学习的时候一定要让他们知道变量间的赋值必须是相同类型的才可以真确的赋值成功。*/2.6 给指针变量赋“空值”P=NULL;NULL是在stdio.h头文件中的预定义符,因此在使用NULL时,应该在程序前面写上:#include “stdio.h”NULL的代码值是0,所以等价:p=0;或p=0;注意:当p指向NULL时

59、候, p并不是指向地址为0的存储单元,而是具有一个确定的值“空”,如果通过一个空指针去访问一个存储单元,将会得到一个出错的信息。对指针的操作1引用存储单元除了取地址运算符“&”与指针变量有关外,C语言还有一个指针运算符(也叫间接访问运算符)“*”也与指针变量有关。int a=20,*p=&a;那么 a=*p,a+等价与(*p)+。这里*p意味着取指针变量指向变量的内容。(1)指针变量定义中的“*”和间接访问运算符“*”有本质的区别。当定义一个指针变量的时候,“*”是说明一个变量是指针变量,而“*”作为间接访问运算符的时候意味着取指针变量所指向变量的内容。(2)间接访问运算符必须出现在运算对象的

60、左边,运算对象可以是地址或存放了地址的指针变量。第八章 数组一教学重点、难点知识点所占分值考核几率专家点评一维数组的定义及引用1-380%简单,重点掌握一维数组的初始化1-280%简单,重点掌握二维数组的定义及引用3-490%偏难,重点掌握重点理解二维数组的初始化1-290%简单,重点掌握通过赋初值定义二维数组1-260%偏难,重点理解二教学讲点8.1一维数组的定义和引用8.1.1一维数组的定义格式:类型名 数组名常量表达式;例如:int a8;注意:数组名属于用户标识符,必须满足用户标识符的命名规则。如:int do5; float 3com10;char a-b5; 都是非法的定义定义数组

温馨提示

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

评论

0/150

提交评论