《二级C考点复习(C语言考试必备).pdf》由会员分享,可在线阅读,更多相关《二级C考点复习(C语言考试必备).pdf(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第1章 C语言程序设计基本概念一、C语言程序的结构1.程序的构成,main函数和其他函数。2.头文件,数据说明,函数的开始和结束标志以及程序中的注释。3.源程序的书写格式。4.C语言的风格。C语言程序考点点拨:重点记忆程序的构成和书写程序是可以连续执行的指令的集合。目前当用的程序程序语言主要是“高级语言”,如Visual Basic、C+、Java和C。其中C语言具有高级语言和低级语言的双重优点。C语言程序由函数构成。一个C语言源程序有且仅有一个main函数和零个或多个其他函数。无论main函数的位置如何,它是程序执行的入口和出口中。C语言程序书写自由,一行内可以写一条或多条语句,一条语句也可
2、以写在多行。C语言的注释有两种形式,分别为行尾注释“/”和块式注释/*7。注释只是给人看,对编译和运行不起作用。B)C语言函数可以嵌套调用,例如:fuffC)C语言函数不可以单独编译D)C语言中除了main函数,其他函数不可以作为单独文件形邕2)C语言程序编译连接过程考点点拨:C程序的编译连接和后缀C源程序文件(后 缀 为.c)必须翻译为二进制目标文件(后缀为.obj),此过程称为“编 译”,负责此工作的程序称为“编 译 器”或“编 译 程 序”;然后由连接程序把该二进制文件与C语言的各种库函数连接起来,生成可执行文件(后 缀 为.exe),此过程称为“连 接”;最后执行该可执行文件,实现程序
3、功 能。(13)以下叙述中A一)C程序在运行过程中月B)C程 序 在 运 行 过 程 中 所 有 计 算 颓0)D)所有C程序都需要编译链接无误后才能运行C程序中整型变量只能存放整数,实型变量只能存放浮点算法的特性考点点拨:算法的五个特性算法是为解决某个特定问题而采取的确定且有限的步骤。算法的五个特 性 是:有 穷 性、确 定 性、有效性、零个或多个输入、一个或多个输出。算法的表示方法有自然语 言、流程图、伪代码和程序 设 计 语 言。13、以 下 关 于 算 谶A.B.C.D.算法可以用伪代码了漆一个正确的算法必须有输入一个正确的算法必须有输出用流程图可以描述的算法可以用任何一种计算机高;序
4、代码U考点4二)程 序 设 计 的 任 务考 点 点 拨:记 住 程 序 设 计 的 任 务程序设计指设计、编程、调试程序的方法和过程。程序设计通常分为问题建模、算法设计、编写代码和编译调试四个阶段。5结 构 化 程 序 和 模 块 结 构考 点 点 拨:记 忆 结 构 化 程 序 的 三 种 结 构 组 成结构化程序设计通常采用自顶向下、逐步细化、模块化设计、结构化编码的方法。结构化程序由三种基本结构组成:顺序结构、选择结构、循环结构。(11)以下关于结A)一 个 结 构 化 程 序 必 须 蹄 B)结构化程序使用goto语 句 会 很 颁C)在C语言中,程序的模块化是利用函数实工喻(D)由
5、三种基本结构构成的程序只能解决小规模的问题第2章数据类型、运算符和表达式二、数据类型及其运算1.C的数据类型(基本类型,构造类型,指针类型,无值类型)及其定义方法。2.C运算符的种类、运算优先级和结合性。3.不同类型数据间的转换与运算。4.C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。标识符及命名规则考点点拨:标识符的命名规则标识符的命名规则有:(1)由字母、数字、下划线三类字符组成;(2)必须以字母或下划线打头;(3)区分大小写;(4)不能和关键字相同;(5)尽量见名知义B)AaBcC)a_b)(2010.3)D)ab29整型常量、变量的表
6、示及取值范围考点点拨:记十进制、八进制、十六进制整型常量的表示C语言中整型常量的表示方法有:十进制(以非零数字打头)、八进制(以数字0打头后跟八进制数符)、十六进制(以0X或Ox打头后跟十六进制数符)。C语言中整型数据有三大类:短整型(short,2B)、基本整型(int,4B)、长整型(long,4B),此为有符号类型,可表示正、负数;在三个关键字前加上unsigned则为无符号类型,所占字节数不变,但只能表示正数。整型数据在内存中以二进制补码存放,若超出其表示范围,会产生溢实型常量、变量的表示及取值范围考点点拨:记实型常量的表示实型常量的表示方法有两种:小数形式和指数形式。实型数据主要使用
7、两种类型:单精度(float,4B)、双精度(double,8B),注意不同类型的有效数字位数区别。实型数据在内存中以指数形式存放,实型常量默认为double型,可以在常量后加f或F将其按float型处理。4)字 符 型 常 量、变 量 及 转 义 字 符 常 量考 点 点 拨:记 字 符 常 量 及 转 义 字 符 常 量 的 定 义普通字符常量是用一对单引号括起来的一个字符表示的常量。字符常量的值是该字符的ASCII码值,如,A,的值是6 5,。字符的值是48等,在内存中占1B空间。转义字符常量指在单引号内由反斜线打头,后跟特定字符表示的常量。需要记的转义字符有三类:(1)控制字符:rT、
8、r b W(2)特殊字符:、转义进制:bbb(13位八进制数符)、xhh,(12位十六进制数符)字符串常量是用一对双引号括起来的零个或多个字符序列,其中包含的字符可以是普通字符或转义字符,系统自动在字符串末尾增加一个不可显示字符0(空字符)作为字符串结束标记,字符串所占的内存空间为所含字符数+1。I 真 题 举 例:(1 5)以下选项中能表示合法常量的是(D)(2010.9)A)整数:1,200 B)实数:1.5E2.0C)字符斜杠:D)字符串:007”:(13)以下选项中不能用作C程序合法常量的是(A)(2011.3)A)1,234 B)123 C)123 D)x7Gt(14)以下选项中可用
9、作C程序合法实数的是A(A)(2011.3)A).1e0 B)3.0e0.2 C)E9 D)9.12Et、5)字 符 数 据 的 运 算考 点 点 拨:记 字 符 数 据 的 运 算 方 法C语言规定,将所有的字符型数据都作为整型来处理。因此,字符常量和转义字符常量可以参与任何整数运算。如A,+32得 宣,5-0 得5。常考;真题举脚;小、乂21)以下不能输出字带英文字母大、小写之间的转换,数字字符与整数值之间的相互转换。字符数据还可以进行关系运算和逻辑运算。A ASCII码值为97)(B)(2011.9)A)printf(%cn,a-32);B)print甲C)printf(cn”,65);
10、D)print-f(%cn,B-1);字符型变量考点点拨:记字符变量的定义及赋值C语言中用关键字char定义字符型变量,在内存中分配1B空间,用来存放字符常量的ASCII码值。该值可以作为整型数据来参与运算。;真题举例:.2 2)有以下定义语句,编译时会出现编译错误的是(C)。(2009.9)A)char a=a;B)char a=n;C)char a=aa;D)char a=2d;、运算符的种类、优先级和结合性考点点拨:运算符的分类、常用运算符的优先级和结合性运算符按功能分有13类(P56),按所需操作数目分可分为:单目运算符(右结合,优先级2)、双目运算符(除赋值为右结合外,其余为左结合)
11、、三目运算符(条件运算符,右结合)。各运算符的优先级和结合性见教材P378。8 不同类型数据间的混合运算考点点拨:系统自动转换成同一类型的方向和结果的类型不同数据类型混合运算时系统自动转换的规则见下图,其中水平箭头为必然转换,垂直箭头为从低向高方向转换。运算结果类型为转换后的类型。国 doubl e=!=(区分亲系等(=)和赋值等(=)关系表达式用于判断两个对象之间的关系,其操作数可以是C语言中任何合法的表达式。关系表达式的值为逻辑值,关系成立为真,用整数1表示;关系不成立为假,用整数0表示。该值可以继续参加其他表达式运算。注意:关系表达式不能直接判断三个以上对象的关系。(1 5)逻 辑 运
12、算 符 及 表 达 式考 点 点 拨:掌 握 逻 辑 运 算 符 及 表 达 式 的 求 值逻辑运算符有:!&|(按优先级从高到低排列)。逻辑运算符常结合关系表达式判断多个对象之间的复杂关系。逻辑表达式的值为逻辑值。参与逻辑运算的操作数可以是任意合法的常量、变量或表达式,均以“非零为真,零为假”判断其逻辑值。注意逻辑表达式求值时的“短路特性二、:真 题 举 例:A (8)在C语言中,当表达式值为0时表示逻辑值“假”,当表达式值为,【8】非0 时表示逻辑值“真 工(2010.9)、A)。(2010.3)!不知道a的值,不能确定=20;执行表达式 S4 1)后,k1和k2的值分别为(B)o(201
13、1.9)B)0 和 20 0 1 0 和1 D)10和20条 件 运 算 符 及 表 达 式考 点 点 拨:理 解 条 件 表 达 式 的 求 值 方 法条件运算符(?:)是 语言里唯一的三目运算符,优先级倒数第三,右结合。其一般形式是:表达式1?表达式2:表达式3。先求解表达式1,取其逻辑值,若为真,求解表达2作为整个表达式的值;若为假,求解表达式3的值作为整个表达式的值。各表达式可以为任意类型的合法表达式。A、k=(ab)?a:b;k=(bc)?b:c;B、k=(ab)?(bcTC、k=(ab)?(ac)?a:c):(bc)?b:c);D、k=(ab)?a:b;k=(ac)?a;else
14、if(b (同优先级)&4|(按优先级从高到低排列)。位运算的操作数必须是整型或字符型,计算时先将操作数转换成二进制,然后再低位对齐按运算规则进行计算。、第3章顺序结构大纲要求重点三、基本语句1.表达式语句,空语句,复合语句。2.输入输出函数的调用,正确输入数据并正确设计输出格式。CUT)C语句的分类考点点拨:理解C语句的概念及分类见教材P57.图3.14可知:C语句是函数体里的基本构成单位。语句的作用是向计算机系统发出操作指令,要求执行相应的操作。一个C语句经过编译后产生若干条机器指令。C语句可以分成5大类:(1)控制语句;(2)函数调用语句;(3)表达式语句;(4)空语句;(5)复合语句;
15、者点g)putchar函数和getchar函数考点点拨:掌握字符数据的输入输出函数的用法putchar函数用于向显示器输出一个字符。一般格式是:putchar(c);其中c可以是字符型或整型常量、变量或表达式,结果是向显示器输出其值对应的ASCII码字符。getchar函数用于从键盘输入缓冲区读取一个字符。一般格式是:getchar()o 一般用法:ch=getchar();将从键盘输入的一个字符值赋给变量cho从键盘输入的空格、回车等控制字符也作为有效字符读取。)#include main()char a=0,ch;while(ch=getchar()!=Vi)if(a%2!=0&(ch=a
16、&ch=z,)ch=ch-a+a+;putchar(ch);printf(Ann);(5?)printf函数和scanf函数考点点拨:掌握格式化输出、输入函数的用法及注意事项printf(“格式控制字符串”,输出表列);scanf(“格式控制字符串”,输入地址表列);“格式控制字符串”中允许有两类字符:普通字符。在printf函数中会原样输出,在scanf函数中要求原样输入。格式字符。由“+格式字符”,用于指定输出、输入项的格式。常用格式字符有(教材P74:表3.6、表3.7;P76:表3.8、表3.9):A 整数类型A 十进制有符号类型:%d%md%-md%ld%mld%-mldA 十进制无
17、符号类型:%UA 八进制无符号类型:%0A 十六进制无符号类型:%x%XA 实数类型A 小数格式:%f%.nf%m.nf%-m.nfA 指数格式:%e%Ea 简洁格式:%g%G(根据输出数据大小自动选择小数或指数格式,且不输出无意义的零)A 字符类型A 字符格式:%c%mc 字符串格式:%s%.ns%m.nsprintf函数和scanf函数考点点拨:掌握格式化输出、输入函数的用法及注意事项printf函数中的“输出表列”可以没有。若有,可以是常量、变量或表达式,将其值按对应的格式输出;若有多项,以逗号分开。其他说明见教材P75。scanf函数中的“地址表列”必须为变量的地址,多个地址之间以逗号
18、分开。注意的问题见教材P7677。1真题举例:(1 5)程序段:int x=12;double y=3.141593;printf(d%8.6f”,x,y);的常俞出结果是(A)o (2009.3)A)123.141593 B)12 3.141593 C)12,3.141593 D)123.1415930(1 6)若有定义语句:double x,y,*px,*py;执行了px=&x;py=&y;之后,正+确的输入语句是(C)o (2009.3)A)scanf(f%f”,x,y);B)scanf(%f%f,&x,&y);C)scanf(,1%lf%le!px,py);D)scanf(%lf%lf
19、,x,y);、第4章选择结构四、选择结构程序设计1 .用if语句实现选择结构。2.用switch语句实现多分支选择结构。3.选择结构的嵌套。if语句的三种形式及执行过程考点点拨:掌握三种if语句的执行过程if语句的功能是判断所给的条件,选择执行其中一个操作。if语句的一般形 式 if(表达式)语句1else 语句2常用三种形式是单分支、双分支和多分支(祥见教材P89)o 表达式可以是任意类型的表达式,取其值的逻辑值(非零为真,零为假)if或else只能控制其后的一条语句,该语句可以是五大类语句中的任意一种。程序运行时,输入的值在哪个范围才会有输出结果(B)。(A)不等于10的整数B)大于3且不
20、等10的整数C)大于3或等于10的整数 D)小于3的整数mam()int a=Rif(!a)b+;else if(a=0)else b+=3;printf(%dn,b);程序运行后的输出结果是(AA)0 B)1 C)2 D)3(18)有以下程序#include main()int x;scanf(%d,&x);if(x =3);else if(x!=10)printf(%dn,x);考点点拨:掌握嵌套if语句的执行,及else与if的配对嵌套if指一般格式中if或else的控制语句又是i情 句。注意if可以单独使用,而else必须和i阎对使用,且else总是和它上面的最近的未曾配对的ifj行配
21、对,从而在配对的if后的条件为假时执行该else之后的语句。产点switch语句的形式及用法考点点拨:switch语句的格式及其执行、跳转的过程switch语句又称开关语句,一般用于实现多分支选择。switch语句的一般形式及执行见教材P103。注意:switch后的表达式值的类型一般为整型或字符型case子句后的常量必须为简单的整型或字符型常量当执行完一个分支的执行语句后没有遇到break,将继续执行下一分支的执行语句switch语句可以嵌套,break在switch中的作用是跳出所在的switch语句真题举例:18、以下选项中与if(a=1)a=b;else a+;语句功能不同的switc
22、h语句是:(B)(2010.3、;A、switch(a)A case 1 :a=b;break;default:a+;S ;C、switch(a);default:a+;break;case 1 :a=b;5 1B,switch(a=1)case 0:a=b;break;case 1 :a+;)D、switch(a=1)case 1:a=b;break;case 0:a+;)1第5章循环结构五、循环结构程序设计1.for循环结构。2.while和do-whil嘛 环 结 构。3.continue 语句和 break语 句。4 循环的嵌套。while语句的形式及执行过程考点点拨:理解while循
23、环的执行过程及应用while语句构成的循环称为“当型”循环,其一般形式是:while(表达式)语句表达式可以是C语言中任意类型的合法表达式,取其值的逻辑值。语句也可以是五大类语句任意之一,但只能控制其后的一条语句。循环体有可能一次也不执行。;真题举例:$(2 0)有以下程序#include main()int 3=1,b=2;while(a6)b+=a;a+=2;b%=10;printf(d,%d n”,a,b);A 程序运行后的输出结果是(B)o(2010.9)A)5,11 B)7,1 C)7,11 D)6,1(26)有以下程序段#include main().while(getchar()
24、!=n);以下叙述中正确的是(C)o(2011.3)A)此while语句将无限循环B)getchar()不可以出现在while语句的条件表达式中C)当执行此while语句时,只有按回车键程序才能继续执行D)当执行此while语句时,按任意键程序就能继续执行dowhile语句的形式及执行过程考点点拨:理解dowhile循环的执行过程及应用dowhile语句构成的循环称为“直到型”循 环,其一般形式是:do语句while(表达式);其特点是先执行循环体再判断循环条件,循环体至少执行一次。注意while之后的分号不能少。9、真题举例:(9)以下程序运行后的输出结果是 9】5。#include mai
25、n()int a=1,b=7;do b=b/2;a+=b;while(b1);printf(%dn,a);(3)for语句的形式及执行过程考点点拨:理解for循环的执行过程及应用for语句的一般形式是:for(表达式1;表达式2;表达式3)语句for中的三个表达式可以是任意合法的C语言表达式,表达式1在进入循环的时候执行一次,一般是给循环变量赋初值;表达式2取其逻辑值作为循环条件;表达式3在执行循环体后才执行,一般是使循环条件趋于假的运算。三个表达式均可以省略,但分号不能省。(2010.3)D)10,14S程序运行后的输出结果是(D)oA)9,18 B)8,11 C)7,111、include
26、smain()inta=1,b=2;for(;av8;a+)b+=a;a+=2;printf(d,%dn”,a,b);(21)有以下程循环嵌套的形式及执行过程考点点拨:理解循环嵌套的几种形式及执行过程循环体内又完整地包含了另一个循环,称循环嵌套。前三种循环语句可以相互嵌套,可多层嵌套。嵌套循环在执行时外循环执行一次内循环要执行一遍。书写上一般采用缩进形式,使程序层次分明,可读性强。B)*C)*D)(2 0)以下程序愈for(i=0;i4;i+,i+)for(k=l;k3;k+);printf 3程序段的输出结果是(D)o (2009.3)A)*产点break语句和continue语句考点点拨:
27、掌握break和continue语句在循环体中的应用break语句的作用是退出所在的循环体,在循环体中使用可增加循环的出口,使循环更灵活。break只能用于switch或循环语句中。continue语句的作用是结束本层本次的循环,转去执行下一次的循环处理。continue语句只能用于循环体中。第6章数组六、数组的定义和引用1.一维数组和二维数组的定义、初始化和数组元素的引用。2.字符串与字符数组。一维数组的定义和初始化考点点拨:掌握一维数组的定义方式及初始化的定义形式一维数组的定义方式:数据类 型 数 组 名 常量表达式;常量表达式规定了数组元素的个数(或长度),整个数组所占字节数=类型长度x
28、数组长度;常量表达式中可以包括整型常量和符号常量;在给全部元素赋初值时可以省略定义时的数组长度说明。一维数组初始化的一般形式:数据类型 数 组 名 常量表达式=值0,值1,值2,.;初值的个数不能超过数组的长度;可以只给部分元素赋初值,未赋初值元素默认值为0;一维数组元素的引用考点点拨:掌握一维数组元素的引用形式一维数组元素的引用形式:数组名 下标表达式下标表达式可以是整型的常量、变量或表达式。数组名代表数组内存空二维数组的定义和初始化考点点拨:掌握二维数组的定义方式及初始化的定义形式 二维数组的定义方式:数据类型 数组名 常量表达式1 常量表达式2;二维数组一般用于存储矩阵,常量表达式1为矩
29、阵行数,常量表达式2为矩阵列数。二维数组元素在内存中是按行存放的,各元素在内存中所占的字节数=行数X列数X类型长度 二维数组初始化的方法有:按行赋初值 按元素排列顺序赋初值 部分元素赋值 全部元素赋值可省略常量表达式1的说明,省略的长度由初始值个数确定A)int num=1,2,3,4,5,6;C)int num24=1,2,3,4,5,6;D)int nu考点4 1二维数组元素的引用考点点拨:掌握二维数组元素的引用形式 二维数组元素的引用形式:数组名 下标表达式1 下标表达式2各维下标均从0开始,且为整数类型,不得越界。在程序中一般用双重for循环控制两维下标访问元素。若外循环控制行下标、内
30、循环控制列下标则按行序访问元素;若外循环控制列下标、内循环控制行下标则按列序访问元素。考点五:字符数组的定义及初始化考点点拨:掌握字符数组的定义及初始化形式在C语言中只有字符变量,没有字符串变量,通常用字符数组来存储字符串。一维数组存储一个字符串,二维数组中的一行存储一个字符串。字符数组的定义:char s180,s2580;字符数组的存储同数值数组,区别在于每个元素都是一个字符变量,只分配一个字节存储空间,可以存储一个字符的ASCII码值。字符数组的初始化有两种形式:逐个字符赋初值,如:char s180=宣,1了*4,沫赋初值元素默认3值用字符串赋初值,如:char s180=,labcd
31、e),Js2=l,abcde;数组s1 占80B,数组s2占6B(注意系统自动在字符串末尾加结束标记)(F)。二维字符数组赋初值:char ss480=“abc”,abcde”,“xyz,“1234”;,一个字符串占一行。二维数组的定义中第一维大小决定了字符串的个数,第二维大小决定了各字符串的最大长度。真(2 3)有以#includestdid?H#includemain()char x=,STRING;x0=0;x1printf(%d%dn,sizeof(x),strlen(x);B程序运行后的输出结果是()。(2010.9)A)6 1 B)7 0 0 6 3 D)7 1字符数组(字符串)的
32、输入和输出考 点 点 拨:掌 握 字 符 数 组(字 符 串)的 输 入 输 出 方 法字符数组(字符串)的输入端出一般有以下三种方法:%c字符格式:在printf或scanf函数中使用,其I/O对象是单个元素,一般结合循环使用。%s字符串格式:在printf或scanf函数中使用,其I/O对象是数组名所代表的地址(一维数组名字代表它的存储空间的首地址,二维数组名带第一维下标代表所在行的首地址),可以整体输入/输出字符串。在scanf函数中接收以空格或回车结束的字符串o字符串处 函数gets或puts:gets接收以回车结束的字符串;puts输出一个以,0,结束的字符串,且回车换行。其参数均为
33、字符数组的名字。A)AAAA;、B)CC箕(34)有 以#includestdio.hmain()char ch 35=AAAA,BBB7printf(%sn,ch1);程 序 运 行 后 的 输 出 结 果 是(D)。(2011.9)C)BBBCC D)BBB 7 9字符串处理函数考 点 点 拨:掌 握 各 常 用 的 字 符 串 处 理 函 数 的 应 用常用的字符串处理函数有(需包含string.h头文件):(教材P162-164)strcpy(s1,s2)一字符串拷贝函数:将s2中的内容复制到字符数组s1中去 strncpy(s1,s2,n)拷贝子串函数:将s2中的前n个字符拷贝到s1
34、中strcat(s1,s2)字符串连接函数:将s2连接在s1的末尾strcmp(s1,s2)一字符串比较函数:从左到右逐个字符比较两个字符串的大小strlen(str)-求字符函数串长度:求字符数组str中第一个XT字符之前的字符个数、;真题举例:(3 1)下.列 选 项 中,能 够 满 足“若 字 符 串s1等 于 字 符 串s2,则 执 行ST要 求 的 是U A)(2010.9)A)if(strcmp(s2,s1)=0)ST;B)if(*sl=s2)ST;C)if(strcpy(sl,s2)=1)ST;D)if(sl-s2=0)ST;第7章函数大纲要求重总七、函数1.库函数的正确调用。2
35、.函数的定义方法。3.函数的类型和返回值。4.形式参数与实在参数,参数值传递。5.函数的正确调用,嵌套调用,递归调用。6.局部变量和全局变量。7.变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。3点。函 数 的 基 本 概 念 及 标 准 库 函 数 的 调 用考点点拨:理解函数在C语言中的功能,掌握如何调用库函数一个C程序有且仅有一个main函数,和若干个其他函数构成。主函数可以调用其他函数,其他函数可以相互调用。这些函数可以是库函数,也可以是用户自定义函数。函数之间可以相互调用,但各函数必须是相互独立的,一个函数并不属于其他函数。其他函数不能调用main函数。C系统提供了
36、丰富的库函数,编程时可直接调用,使用库函数应注意:(教材P384-389)1、函数功能2、函数参数的数目和顺序,及各参数意义和类型3、函数返回值意义和类型4、需要使用的包含文件函数的定义考点点拨:掌握函数定义的一般形式及注意事项函数定义的一般形式:返 回 值 类 型 函 数 名(类型1形参1,类型2形参2,)(说明部分执行部分 函数名和形参名必须是合法的标识符 函数可以没有返回值,可以定义为void类型。返回值若省略不写则默认为int型 函数可以没有参数,即为无参函数 函数可以没有函数体,即为空函数 不能在函数体中定义另外一个函数,各函数之间是相互独立的函 酌 的 声 明考点点拨:掌握函数声明
37、的方法和声明时应该注意的问题在C语言中,用户自定义函数必须“先定义,后使用工如果调用在前定义在后,就必须在调用之前对函数进行声明,将该函数的有关信息通知编译器。函数声明的形式如下:返回值类型函数名(类型1,类型2.);返回值类型 函数名(类型1形参1,类型2形参2.);函数定义在前,调用在后则不必对自定义函数进行声明形式参数和实际参数考点点拨:掌握形参和实参的概念及作用定义函数时,函数名后的参数称为形参;调用函数时,函数名后的参数称为实参。当在一个函数中调用另一个函数时,前者称主调函数,后者称被调函数。主调函数通过实参向被调函数的形参传递数据。说明:实参可以是常量、变量、表达式或函数,形参只能
38、是变量 实参和形参的类型一致或赋值兼容,个数必须相同,按顺序一一对应 当函数被调用时,形参才分配内存空间,调用结束时,形参所占内存空间被释放 实参对形参的数据传递是单向值传递。且在内存中,形参与实参占用的是不同的内存单元,因此形参的改变并不影响实参。函数的返回函考点点拨:理解在函数调用时return语句的作用被调函数可以用return语句将函数值传递给主调函数。return语句形式:re tu rn表达式;或 return(表达式);说明:当函数执行到return语句时,返回到它的主调函数的调用位置,并带回返回值。return后的表达式可以是常量、变量或表达式 表达的类型若和函数定义中的返回值
39、类型不相同,则系统自动转换为定义的类型;若无法转换,则赋值不兼容。若函数定义为void类型,则不能用return带回返回值。函数最后一个1 函数中可以有多条return语句,但只执行其中一条,或都不执行。-n 口、房不同情况设置多条return语句承的函数中可以有带返回值的return语句r eturn语句的自定义函数在执行结束时不能返回到调用处考点6函数调用考点点拨:掌握函数调用的基本形式及其语法要求 函数调用的形式如下:函数名(实参表)说明:调用函数时,函数名必须与被调用的函数名完全相同。函数调用可以出现在允许表达式出现的任何地方 函数调用可以作为一条独立的语句,此时最后的分号不能少。函数
40、的嵌套调用和递归调用考点点拨:掌握函数嵌套调用与递归调用的方法及注意事项在被调用的函数中又调用另外一个函数,称“嵌套调用”函数直接或间接地调用自身,称“递归调用”。可以将递归调用看做是嵌套调用的特殊形式采用递归方法求解一个问题时,该问题必须满足以下条件:可以把要求解的问题转化为新的问题,而且新问题的解法与原问题相同 必须有一个明确的结束递归的条件 函数递归调用时,系统利用堆栈将当前函数中的变量和形参暂时保存起来,再为新一轮函数调用中的形参和变量分配内存空间。嵌套或递归调用的返回原则是:先调用,后返回。蹲,;PM )P段 序 运行后的输出结果是(D)(2010.9)A)1 37 B)73 1 C
41、)73 D)37变量的作用域考点点拨:掌握局部变量和全局变量的作用范围及特点在函数体内部或复合语句内部定义的变量称局部变量,其作用范围只在定义它的函数体或复合语句中。说明:形参也属于局部变量,作用域仅限于它所在的函数体。不同函数之间可以使用同名的局部变量。因其占用的内存空间不同,所以互不影响。在函数体外部定义的变量称为全局变量,其作用范围是从定义位置到源文件结束。说明:全局变量在整个程序执行期间占用固定的存储空间当全局变量和局部变量同名时,在局部变量的作用范围内同名的全局变量不起作用口 点”变量生存期和存储类别著萧点琼 掌握变量四种存储类型的声明和应用 从变量生存期的角度,可以将变量分为静态存
42、储和动态存储。静态存储是指在程序运行期间给变量分配固定的内存空间。动态存储是指在程序运行期间根据需要动态地进行内存空间分配。变量在程序运行过程中可以使用的存储位置有:动态存储区、静态存储区、CPU寄存器存储区。变量的存储类型指定变量的存储位置,共有四种存储类型:auto(自动型):在函数体内部使用,为该类型的变量分配在动态存储区。其特点是进入其作用范围时分配存储空间,退出其作用范围时释放为其分配的存储空间。在函数体内部未指定变量存储类型时默认为auto型。该类型变量若赋初值,则每次使用时重新赋初值;若不赋初值,则为随机值。static(静态型):可以在函数体内部或外部使用,为该类型的变量分配在
43、静态存储区。其特点是在整个程序运行期间占用固定的存储空间。若赋初值则只在第一次使用的时候赋初值一次;若不赋初值,则默认为0。A在函数内部定义称静态局部变量,其生存期全局,作用域局部。该类型变量具有继承性,即多次使用时后一次继承前一次使用的结果值。A在函数外部定义称静态全局变量,其特点同全局变量,区别在于仅限本文件使用。变量生存期和存储类别考点点拨:掌握变量四种存储类型的声明和应用 register(寄存器型):其特点同auto型变量,区别是在CPU寄存器中分配存储空间,仅限数据类型为整型、字符型或指针类型且使用频繁的变量extern(外部型):引用性声明。此种类型只针对全局变量且不分配存储空间
44、,作用是扩展已经在其他位置定义过的全局变量的作用范围到声明位置)(2010.9)D)120程序运行后的输出结果是(BA)11 B)21 C)6mncludeint fun()static int x=1;x+=1;return x;main()int i,s=1;for(i=1;i&a01,指向下一个元素 行指针变量:如有 inta34,(*p)4;p=a;贝!|p+o&a1,指向下一行可以用字符数组存储一个字符串,也可以用字符指针指向一个字符串,此时,字符指针等同于字符数组名使用,但前者是地址变量,后者是地址常量。如 char str80=tlabcde,*t;t=str;则puts(str
45、)Oputs(t)可以char*s;s=abcde”;木可以char str80;str=abcde”;数组的指针作函数参数靠版掌握数组的指针作函数参数特点和应用数组作函数参数有以下情况:数组元素作函数参数:同普通变量作函数参数,此时形参为普通变量,是单向普通值传递,最多由return带回一个返回值。一维数组名作函数参数:传递的是一维数组的首地址,此时形参为一级指针变量或同类型的一维数组。可以在被调函数中通过形参变量或数组名间接访问、改变所有的实参数组元素值。二维数组名作函数参数:传递的是二维数组的首行地址,此时形参为二级行指针变量或同类型二维数组。A)(*s)3 B)*(s+3)C)*s3D
46、)*s+3C)char*s;s=Olympi(27)若有定义int(*pt)3;,则下列A)定义了基类型为int的三个指针变B)定义了基类型为int的具有三个元素的疳错C)定义了一个名为*pt、具有三个元素的整型数组.D)定义了一个名为pt的指针变量,它可以指向每行有三个赢(28)设有定义double a10,*s=a;,一下能够代表数组元素a3的是(B指针数组考点点拨:掌握指针数组的定义及其应用指针数组即数组中的每个元素均为指针的数组。其定义形式如下:类型名*数组名 数组长度通常用指针数向处理二维数组或字符串数组考点点拨:掌握命令行参数的个数、类型及意义主函数带参数称为命令行参数,因为没有函
47、数能调用main函数,所以要从操作系统的命令行给其传参数。main函数带参数的形式:void main(int argc,char*argv)其中:argc接收命令行中参数的个数,包括命令名(即可执行文件名)本身argv接收命令行中各参数字符串的首行地址,*argv O*argv两个参数的名字可以变,但类型不能变R点8)指向函数的指针考点点拨:掌握指向函数的指针的定义及应用函数的指针及函数的入口地址,用函数名表示。指向函数的指针定义形式:返回值类型(*指针变量名)(参数类型1,参数类型2,);只要函数的类型、参数个数和类型与指针变量定义中一致,就可以将函数的入口地址赋给该指针变量,如下:指针变
48、量名=函数名;此时,可以通过指针变量间接调用所指向的函数:(*指针变量名)(实参列表)指针变量名(实参列表)返回指针值的函数考点点拨:掌握返回指针值的函数头定义形式及返回值表示返回指针值函数的函数头定义形式是:类 型*函数名(形参列表)在这样的函数体中,用return带回的是一个和函数头上指定类型相同的指(1 0)指向指针的指针考点点拨:理解二级指针的定义、意义及使用一级指针变量存放普通变量的地址,二级指针变量存放一级指针变量的地址,以此类推。二级指针变量即为指向指针的指针,其定义形式如下:数 据 类 型*指针变量名;若有 int i,*p,*q;p=&i;q=&p;则 *pO*q&pU*qm
49、 alloc函数和free函数考点点拨:理解malloc函数和free函数的作用 库函数malloc是在程序运行过程中向内存申请存储空间,其调用形式是malloc(size)其中,size必须是一个正整数。申请成功,函数的返回值是申请到存储空间的首地址,一般先强制类型转换后用程序中的某个指针变量接收。如:int*p;p=(int*)malloc(sizeof(int)*10);由malloc函数申请到的存储空间不会因为函数执行结束而释放,若确定不用,可以使用free函数来释放。如 free(p);使用这两个库函数需要包含头文件:stdlib.h或malloc.h程序运行后的输出结果是(A)。(
50、2010.9)A)3,3,3 B)2,2,3 C)1,2,3 D)1,1,3a=b=c=(int*)malloc(sizeof(int)*a=1;*b=2;*c=3;a=b;printf(,%d,%d,%dn,*a,*b,*c);第10章结构体和共用体十、结构体(即“结构”)与共同体(即“联合”)1用typed ef说明一个新类型。2.结构体和共用体类型数据的定义和成员的引用。3.通过结构体构成链表,单向链表的建立,结点数据的输出、删除与插入。结构体类型及变量的定义考点点拨:理解结构体类型的声明及变量的定义声明结构体类型用关键字struct,形式如下:struct 结构体名成 员 列 表 ;其