二级C考点复习(C语言考试必备)_第1页
二级C考点复习(C语言考试必备)_第2页
二级C考点复习(C语言考试必备)_第3页
二级C考点复习(C语言考试必备)_第4页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

第1章C语言程序设计基本概念一、C语言程序的结构.程序的构成,main函数和其他函数。.头文件,数据说明,函数的开始和结束标志以及程序中的注释。.源程序的书写格式。.C语言的风格。C语言程序考点点拨:重点记忆程序的构成和书写程序是可以连续执行的指令的集合。目前当用的程序程序语言主要是“高级语言”,如VisualBasic、C++、Java和C。其中C语言具有高级语言和低级语言的双重优点。C语言程序由函数构成。一个C语言源程序有且仅有一个main函数和零个或多个其他函数。无论main函数的位置如何,它是程序执行的入口和出口中。C语言程序书写自由,一行内可以写一条或多条语句,一条语句也可以写在多行。C语言的注释有两种形式,分别为行尾注释“〃……”和块式注释"/*……7"。注释只是给人看,对编译和运行不起作用。(11)以下叙述正确'的C语言程序是由过程和褶皴C语言函数可以嵌套调用,例如:C语言函数不可以单独编译C语言中除了main函数,其他函数不可以作为单独文件形3C语言程序编译连接过程考点点拨:C程序的编译连接和后缀(13)以下叙述中与C程序在运行过程中C程序在运行过程中所有计算都以'所有C程序都需要编译链接无误后才能运行C程序中整型变量只能存放整数,实型变量只能存放浮点C源程序文件(后缀为.c)必须翻译为二进制目标文件(后缀为.obj),(13)以下叙述中与C程序在运行过程中C程序在运行过程中所有计算都以'所有C程序都需要编译链接无误后才能运行C程序中整型变量只能存放整数,实型变量只能存放浮点A)B)C)D)算法的特性考点点拨:算法的五个特性算法是为解决某个特定问题而采取的确定且有限的步骤。算法的五个特性是:有穷性、确定性、有效性、零个或多个输入、一个或多个输出。算法的表示方法有自然语言、流程图、伪代码和程序设计语言。D.用流程图可以描述的算法可以用任何一种计算机浦序代码D.用流程图可以描述的算法可以用任何一种计算机浦序代码考点4)程序设计的任务考点点拨:记住程序设计的任务程序设计指设计、编程、调试程序的方法和过程。程序设计通常分为问题建模、算法设计、编写代码和编译调试四个阶段。(2012.3)是算法和数据结构、编码、调试凫竟法和数据结构、调试、编码、整理文档颗牌堂(2012.3)是算法和数据结构、编码、调试凫竟法和数据结构、调试、编码、整理文档颗牌堂理文档抵调试、整理文档理结构化程序和模块结构考点点拨:记忆结构化程序的三种结构组成结构化程序设计通常采用自顶向下、逐步细化、模块化设计、结构化编码的方法。结构化程序由三种基本结构组成:顺序结构、选择结构、循环结构。一一个结构化程序必须丽帆递结构化程序使用got。语句会很彳在C语言中,程序的模块化是利用函数实现谪7由三种基本结构构成的程序只能解决小规模的问题第2章数据类型、运算符和表达式二、数据类型及其运算.C的数据类型(基本类型,构造类型,指针类型,无值类型)及其定义方法。.C运算符的种类、运算优先级和结合性。.不同类型数据间的转换与运算。.C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。期。标识符及命名规则考点点拨:标识符的命名规则标识符的命名规则有:(1)由字母、数字、下划线三类字符组成;(2)必须以字母或下划线打头;(3)区分大小写;(4)不能和关键字相同;(5)尽量见名知义整型常量、变量的表示及取值范围考点点拨:记十进制、八进制、十六进制整型常量的表示C语言中整型常量的表示方法有:十进制(以非零数字打头)、八进制(以数字。打头后跟八进制数符)、十六进制(以0X或Ox打头后跟十六进制数符)。C语言中整型数据有三大类:短整型(short,2B)、基本整型(int,4B)、长整型(long,4B),此为有符号类型,可表示正、负数;在三个关键字前加上unsigned则为无符号类型,所占字节数不变,但只能表示正数。整型数据在内存中以二进制补码存放,若超出其表示范围,会产生溢W点3)实型常量、变量的表示及取值范围考点点拨:记实型常量的表示实型常量的表示方法有两种:小数形式和指数形式。实型数据主要使用两种类型:单精度(float,4B)、双精度(double,8B),注意不同类型的有效数字位数区别。实型数据在内存中以指数形式存放,实型常量默认为double型,可以在常量后加f或F将其按float型处理。考点4)字符型常量、变量及转义字符常量考点点拨:记字符常量及转义字符常量的定义普通字符常量是用一对单引号括起来的一个字符表示的常量。字符常量的值是该字符的ASCH码值,如,A,的值是65,。字符的值是48等,在内存中占1B空间。转义字符常量指在单引号内由反斜线打头,后跟特定字符表示的常量。需要记的转义字符有三类:⑴控制字符:,门、'\r\\b\'\f(2)特殊字符:'\\'、(3)转义进制:'\bbb'(1〜3位八进制数符)、’\xhh,(1〜2位十六进制数符)字符串常量是用一对双引号括起来的零个或多个字符序列,其中包含的字符可以是普通字符或转义字符,系统自动在字符串末尾增加一个不可显示字符'\0'(空字符)作为字符串结束标记,字符串所占的内存空间为所含字符数+1。;真题举例:(15)以下选项中能表示合法常量的是(D)(2010.9)A)整数:1,200B)实数:1.5E2.0C)字符斜杠:'\'D)字符串:、007”(13)以下选项中不能用作C程序合法常量的是(A)(2011.3)A)1,234 B)'\123' C)123 D)"\x7G":(14)以下选项中可用作C程序合法实数的是A(A)(2011.3)A).1e0 B)3.0e0.2 C)E9 D)9.12E'、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、字符数据的运算考点点拨:记字符数据的运算方法C语言规定,将所有的字符型数据都作为整型来处理。因此,字符常量和转义字符常量可以参与任何整数运算。如'A432得W,得5。常考英文字母大、小写之间的转换,数字字符与整数值之间的相互转换。字符数据还可以进行关系运算和逻辑运算。考点6)字符型变量考点点拨:记字符变量的定义及赋值C语言中用关键字char定义字符型变量,在内存中分配1B空间,用来存放字符常量的ASCH码值。该值可以作为整型数据来参与运算。;真题举例: g(22)有以下定义语句,编译时会出现编译错误的是(C)。(2009.9)A)chara='a'; B)chara—n';C)chara='aa'; D)chara=\x2d';'、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、,CH?)运算符的种类、优先级和结合性考点点拨:运算符的分类、常用运算符的优先级和结合性运算符按功能分有13类(P56),按所需操作数目分可分为:单目运算符(右结合,优先级2)、双目运算符(除赋值为右结合外,其余为左结合)、三目运算符(条件运算符,右结合)。各运算符的优先级和结合性见教材P378。不同类型数据间的混合运算考点点拨:系统自动转换成同一类型的方向和结果的类型不同数据类型混合运算时系统自动转换的规则见下图,其中水平箭头为必然转换,垂直箭头为从低向高方向转换。运算结果类型为转换后的类型。

算术运算符与表达式考点点拨:重点记算术运算符各自的运算特点基本算术运算符+、-、*、/、%均为双目运算符。其中%(求余数)运算符要求两侧的操作数必须为整型;/(除)运算符两侧若均为整数,则结果为除以后的整数部分,否则为实型。、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、:真题举例:(14)有以下定义:inta;longb;doublex,y;则以下选项中正确的;表达式是(A)o(2010.9)A)a%(int)(x-y)B)a=x!=y;C)(a*y)%b D)y=x+y=xI、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、。C5Iio)赋值运算符与表达式考点点拨:重点记赋值表达式及复合赋值表达式的特点赋值表达式左侧必须是简单变量,不能是常量或表达式(包括赋值表达式),右边可以是常量、变量或表达式(包括赋值表达式)。赋值运算符及复合赋值运算符右结合,优先级倒数第二级。当赋值表达式右边表达式值的类型与左边变量的类型不一致时,系统会自动将该值转换成左边变量的类型后再赋值。转换规则则教材P62。:真题举例:$(16)表达式a+=a-=a=9的值是(D)(2010⑼A)9B)_9C)18D)0:(15)若有定义语句:inta=3,b=2,c=1;,以下选项中错误的赋值表达式是SMA)(2011.3)A)a=(b=4)=3;B)a=b=c+1; C)a=(b=4)+c;D)a=1+(b=c=4);[(15)若有定义语句:intx=12,y=8,z;,在其后执行语句|z=0.9+x/y;,则z的值为(B}o(2011.9)A)1.9 B)1 C)2 D)2.4自增、自减运算及表达式考点点拨:理解前置运算和后置运算的不同意义巢是(C)(2011.3)B)11 C)10 D)9自增(++)、自减(--)均为单目运算符,右结合,操作数可以是整型变量或实型变量,但不能是常量或表达式。前置运算(如++i、■)是先增减后运算,后置运算(如i++、i-)巢是(C)(2011.3)B)11 C)10 D)9期13)逗号运算及表达式考点点拨:记逗号运算符的优先级、结合性及求值规则逗号表达式是用逗号运算符(,)将两个或两个以上的表达式顺序连接起来的表达式,左结合,逗号运算符优先级最低。从左到右顺序求解各表达式,也称为顺序求值表达式,结果为最右边表达式的值。注意区分逗号分隔符和逗号运算符。曲点类型转换考点点拨:理解强制类型转换、自动类型转换(1)强制类型转换。格式为:(类型)(表达式),将表达式值的类型强制转换成指定的类型,对表达式中原有变量的类型无影响。(2)自动类型转换。a.赋值运算中的自动转换。b.混合运算中的自动转换。关系运算符及表达式考点点拨:掌握关系运算符及表达式的求值关系运算符有:>>=vv===!=。(区分关系等(==)和赋值等(=))关系表达式用于判断两个对象之间的关系,其操作数可以是C语言中任何合法的表达式。关系表达式的值为逻辑值,关系成立为真,用整数1表示;关系不成立为假,用整数0表示。该值可以继续参加其他表达式运算。注意:关系表达式不能直接判断三个以上对象的关系。逻辑运算符及表达式考点点拨:掌握逻辑运算符及表达式的求值逻辑运算符有:!&&||(按优先级从高到低排列)。逻辑运算符常结合关系表达式判断多个对象之间的复杂关系。逻辑表达式的值为逻辑值。参与逻辑运算的操作数可以是任意合法的常量、变量或表达式,均以“非零为真,零为假”判断其逻辑值。注意逻辑表达式求值时的“短路特性”。、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、1真题举例:A(8)在C语言中,当表达式值为0口寸表示逻辑值“假”,当表达式值为:【8】非0 时表示逻辑侑“真”。(2010.9)%、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、316)条件运算符及表达式考点点拨:理解条件表达式的求值方法条件运算符(?:)是C语言里唯一的三目运算符,优先级倒数第三,右结合。其一般形式是:表达式1?表达式2:表达式3。先求解表达式1,取其逻辑值,若为真,求解表达2作为整个表达式的值;若为假,求解表达式3的值作为整个表达式的值。各表达式可以为任意类型的合法表达式。AA、k=(a<b)?a:b;k=(b<c)?b:c;B、k=(a<b)?((b<cf^^®C、k=(a<b)?((a<c)?a:c):((b<c)?b:c);D、k=(a<b)?a:b;k=(a<c)?a?^£17)位运算符及表达式考点点拨:理解位运算符及其求值规则和优先级顺序位运算符有:〜(«>>(同优先级))&A|(按优先级从高到低排列)。位运算的操作数必须是整型或字符型,计算时先将操作数转换成二进制,然后再低位对齐按运算规则进行计算。程序运行后的结果是(C程序运行后的结果是(C)。(2010.3)A)0B)1C)2D)3第3章顺序结构大纲要求重点〉三、基本语句.表达式语句,空语句,复合语句。.输入输出函数的调用,正确输入数据并正确设计输出格式。考点T)C语句的分类考点点拨:理解C语句的概念及分类见教材P57.图3.14可知:C语句是函数体里的基本构成单位。语句的作用是向计算机系统发出操作指令,要求执行相应的操作。一个C语句经过编译后产生若干条机器指令。C语句可以分成5大类:(1)控制语句;(2)函数调用语句;(3)表达式语句;(4)空语句;(5)复合语句;、考点2)putchar函数和getchar函数考点点拨:掌握字符数据的输入输出函数的用法putchar函数用于向显示器输出一个字符。一般格式是:putchar(c);其中c可以是字符型或整型常量、变量或表达式,结果是向显示器输出其值对应的ASCII码字符。getchar函数用于从键盘输入缓冲区读取一个字符。一般格式是:getchar()0一般用法:ch=getchar();将从键盘输入的一个字符值赋给变量ch0从键盘输入的空格、回车等控制字符也作为有效字符读取。考点点拨:掌握格式化输出、输入函数的用法及注意事项printf(“格式控制字符串”[,输出表列]);scanf(“格式控制字符串”,输入地址表列);・“格式控制字符串”中允许有两类字符:♦普通字符。在printf函数中会原样输出,在scanf函数中要求原样输入。♦格式字符。由“%+格式字符”,用于指定输出、输入项的格式。常用格式字符有(教材P74:表3.6、表3.7;P76:表3.8、表3.9):》整数类型A十进制有符号类型:%d%md%-md%ld%mld%-mldA十进制无符号类型:%uA八进制无符号类型:%oA十六进制无符号类型:%x%XA实数类型A小数格式:%f%.nf%m.nf%-m.nfA指数格式:%e%EA简洁格式:%g%G(根据输出数据大小自动选择小数或指数格式,且不输出无意义的零)»字符类型A字符格式:%c%mcA字符串格式:%s%.ns%m.nsprintf函数和scanf函数考点点拨:掌握格式化输出、输入函数的用法及注意事项•printf函数中的“输出表列”可以没有。若有,可以是常量、变量或表达式,将其值按对应的格式输出;若有多项,以逗号分开。其他说明见教材P75。•scanf函数中的“地址表列”必须为变量的地址,多个地址之间以逗号分开。注意的问题见教材P76〜77。、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、:真题举例:(15)程序段:intx=12;doubley=3.141593;printf("%d%8.6f",x,y);的i(输出结果是(A)o(2009.3)A)123.141593B)123.141593C)12,3.141593D)123.1415930(16)若有定义语句:doublex,y,*px,*py;执行了px=&x;py=&y;之后,正S[确的输入语句是(C)o(2009.3)[A)scanf(l,%f%f",x,y); B)scanf("%f%f",&x,&y);gC)scanf(l,%lf%le",px,py); D)scanf("%lf%lf",x,y);第4章选择结构四、选择结构程序设计.用i情句实现选择结构。.用switch语句实现多分支选择结构。.选择结构的嵌套。if语句的三种形式及执行过程考点点拨:掌握三种if语句的执行过程if语句的功能是判断所给的条件,选择执行其中一个操作。if语句的一般形式if(表达式)语句1[else语句2]常用三种形式是单分支、双分支和多分支(祥见教材P89)o・表达式可以是任意类型的表达式,取其值的逻辑值(非零为真,零为假)•if或else只能控制其后的一条语句,该语句可以是五大类语句中的任意一种。

C)大于3或等于10C)大于3或等于10的整数D)小于3的整数程序运行后的输出结果是(AA)0 B)1 C)2 D)31(18)有以下程序main()z(ESIelseb+=3;printf(^^%d\n^^,b);include<stdio.h>main() 、{intx;scanf("%d”,&x);程序运行时,输入的值在哪个范围才会有输出结果(BA)不等于10的整数 B)大于3且不等10的整数嵌套的if语句考点点拨:掌握嵌套if语句的执行,及else与if的配对嵌套if指一般格式中if或else的控制语句又是i情句。注意if可以单独使用,而else必须和i阎对使用,且else总是和它上面的最近的未曾配对的i幡行配对,从而在配对的if后的条件为假时执行该else之后的语句。j点switch语句的形式及用法考点点拨:switch语句的格式及其执行、跳转的过程switch语句又称开关语句,一般用于实现多分支选择。switch语句的一般形式及执行见教材P103。注意:♦switch后的表达式值的类型一般为整型或字符型♦case子句后的常量必须为简单的整型或字符型常量♦当执行完一个分支的执行语句后没有遇到break,将继续执行下一分支的执行语句♦switch语句可以嵌套,break在switch中的作用是跳出所在的switch语句;真题举例:$18、以下选项中与if(a==1)a=b;elsea++;语句功能不同的sw让ch语句是:(B)(2010.3X;A、switch(a)B、switch(a==1){case1:a=b;break;{case0:a=b;break;default:a++;case1:a++;1;C、switch(a))D、switch(a==1){default:a++;break;{case1:a=b;break;case1:a=b;t}、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、case0:a++;) A第5章循环结构五、循环结构程序设计.for循环结构。2.while^ldo-while^JF^^o.continue语句和break语句。.循环的嵌套。while语句的形式及执行过程考点点拨:理解while循环的执行过程及应用while语句构成的循环称为“当型”循环,其一般形式是:while(表达式)语句表达式可以是C语言中任意类型的合法表达式,取其值的逻辑值。语句也可以是五大类语句任意之一,但只能控制其后的一条语句。循环体有可能一次也不执行。:、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、[真题举例:;(20)有以下程序#include<stdio.h>main(){int3=1,b=2;while(a<6){b+=a;a+=2;b%=10;}printf("%d,%d\n”,a,b);}程序运行后的输出结果是(B)o(2010.9)5,11B)7,1C)7,11D)6,1“26)有以下程序段#include<stdio.h>main()!...while(getchar()!='\n');以下叙述中正确的是(C)(.(2011.3)A)此while语句将无限循环getchar()不可以出现在while语句的条件表达式中C)当执行此while语句时,只有按回车键程序才能继续执行D)当执行此while语句时,按任意键程序就能继续执行、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、do~while语句的形式及执行过程考点点拨:理解do~while循环的执行过程及应用do~while语句构成的循环称为“直到型”循环,其一般形式是:do语句while(表达式);其特点是先执行循环体再判断循环条件,循环体至少执行一次。注意while之后的分号不能少。.、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、:真题举例:[(9)以下程序运行后的输出结果是[9】5 =#include<stdio.h>main(){inta=1,b=7;do{b=b/2;a+=b;}while(b>1);printf("%d\n",a);)

for语句的形式及执行过程考点点拨:理解for循环的执行过程及应用f。喈句的一般形式是:for(表达式1;表达式2;表达式3) 语句for中的三个表达式可以是任意合法的C语言表达式,表达式1在进入循环的时候执行一次,一般是给循环变量赋初值;表达式2取其逻辑值作为循环条D)*C)**真题A)D)*C)**真题A)********B)****循环嵌套的形式及执行过程考点点拨:理解循环嵌套的几种形式及执行过程循环体内又完整地包含了另一个循环,称循环嵌套。前三种循环语句可以相互嵌套,可多层嵌套。嵌套循环在执行时外循环执行一次内循环要执行一遍。书写上一般采用缩进形式,使程序层次分明,可读性强。(20)for(i=0;i<4;i++,i++;^^^^Ofor(k=l;k<3;k++);printf(程序段的输出结果是(D)o(2009.3)T点break语句和continue语句考点点拨:掌握break和continue语句在循环体中的应用break语句的作用是退出所在的循环体,在循环体中使用可增加循环的出口,使循环更灵活。break只能用于switch或循环语句中。continue语句的作用是结束本层本次的循环,转去执行下一次的循环处理。continue语句只能用于循环体中。第6章数组六、数组的定义和引用.一维数组和二维数组的定义、初始化和数组元素的引用。.字符串与字符数组。一维数组的定义和初始化考点点拨:掌握一维数组的定义方式及初始化的定义形式•一维数组的定义方式:数据类型数组名[常量表达式];常量表达式规定了数组元素的个数(或长度),整个数组所占字节数=类型长度义数组长度;常量表达式中可以包括整型常量和符号常量;在给全部元素赋初值时可以省略定义时的数组长度说明。•一维数组初始化的一般形式:数据类型数组名[常量表达式]={值0,值1,值2,……);初值的个数不能超过数组的长度;可以只给部分元素赋初值,未赋初值元素默认值为0;

真^(28)若要定义一个具(D)(2010⑼A)inta[5]={0};B)intb[]={0,0,0,^D)inti=5,d[i];一维数组元素的引用考点点拨:掌握一维数组元素的引用形式•B)intb[]={0,0,0,^D)inti=5,d[i];一维数组元素的引用考点点拨:掌握一维数组元素的引用形式•一维数组元素的引用形式:数组名[下标表达式]下标表达式可以是整型的常量、变量或表达式。数组名代表数组内存空二维数组的定义和初始化考点点拨:掌握二维数组的定义方式及初始化的定义形式•1维教组的宗义方式•一 〜数据类型数,组名[常量表达式1][常量表达式2];二维数组一般用于存储矩阵,常量表达式1为矩阵行数,常量表达式2为矩阵列数。二维数组元素在内存中是按行存放的,各元素在内存中所占的字节数=行数X列数义类型长度・二维数组初始化的方法有:♦按行赋初值按元素排列顺序赋初值部分元素赋值全部元素赋值可省略常量表达式1的说明,省略的长度由初始值个数确定(26)以下定义数组的语句中谙A)intnum[]={1,2,3,4,5,6}; B)C)intnum[2][4]={{1,2},{3,4},{5,6}};D)intnum[][4]=谭警

考点4)二维数组元素的引用考点点拨:掌握二维数组元素的引用形式・二维数组元素的引用形式:数组名[下标表达式1][下标表达式2]各维下标均从0开始,且为整数类型,不得越界。在程序中一般用双重for循环控制两维下标访问元素。若外循环控制行下标、内循环控制列下标则按行序访问元素;若外循环控制列下标、内循环控制行下标则按列序访问元案O各字符串的最大长度。各字符串的最大长度。考点五:字符数组的定义及初始化考点点拨:掌握字符数组的定义及初始化形式•在C语言中只有字符变量,没有字符串变量,通常用字符数组来存储字符串。一维数组存储一个字符串,二维数组中的一行存储一个字符串。字符数组的定义:♦chars1[80],s2[5][80];♦字符数组的存储同数值数组,区别在于每个元素都是一个字符变量,只分配一个字节存储空间,可以存储一个字符的ASCII码值。•字符数组的初始化有两种形式:♦逐个字符赋初值,如:char51[80]={宣,七',1','a'叫;未赋初值元素默认'\0'值♦用字符串赋初值,如:chars1[80]="abcde),,s2[]=,labcde数组s1占80B,数组s2占6B(注意系统自动在字符串末尾加结束标记・二维字符数组赋初值:charss[4][80]={“abc”,“abcde”,“xyz",“1234”};,一个字符串占一行。二维数组的定义中第一维大小决定了字符串的个数,第二维大小决定了#include<stdio^f^^^^#include<string.h>、main(){charx[]=,,STRING";x[0]=0;printf("%d%d\n",sizeof(x),strlen(x));} b程序运行后的输出结果是( )。(2010⑼A)61B)70 063D)71C^6J字符数组(字符串)的输入和输出考点点拨:掌握字符数组(字符串)的输入输出方法•字符数组(字符串)的输入席F出一般有以下三种方法:♦%c字符格式:在printf或scanf函数中使用,其I/O对象是单个元素,一般结合循环使用。♦%s字若串格式:在printf或scanf函数中使用,其I/O对象是数组名所代表的地址(一维数组名字代表它的存储空间的首地址,二维数组名带第一维下标代表所在行的首地址),可以整体输入/输出字符串。在scanf函数中接收以空格或回车结束的字符串o♦字符串处通函数gets或puts:gets接收以回车结束的字符串;puts输出一个以'\0'结束的字符串,且回车换行。其参数均为字符数组的名字。程序运行后的输出结果是(A)AAAAB)CC(程序运行后的输出结果是(A)AAAAB)CC(34)#includ^^^^Omain(){charch[3][5]={"AAAAHprintf("%s\n",ch[1]);)o(2011.9)C)BBBCCD)BBB字符串处理函数考点点拨:掌握各常用的字符串处理函数的应用•常用的字符串处理函数有(需包含string.h头文件):(教材P162-164)♦strcpy(s1,s2)一字符串拷贝函数:将s2中的内容复制到字符数组s1中去♦strncpy(s1,s2,n)—拷贝子串函数:将s2中的前n个字符拷贝到s1中♦strcat(s1,s2p字符串连接函数:将s2连接在s1的末尾♦strcmp(s1,s21字符串比较函数:从左到右逐个字符比较两个字符串的大小♦strlen(str)-求字符函数串长度:求字符数组str中第一个30,字符之前的字符个数,、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、t真题举例:i(31)下列选项中,能够满足“若字符串S1等于字符串S2,则执行ST"要求的是(UA)(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章函数学要理史〉七、函数.库函数的正确调用。.函数的定义方法。.函数的类型和返回值。.形式参数与实在参数,参数值传递。.函数的正确调用,嵌套调用,递归调用。.局部变量和全局变量。.变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。函数的基本概念及标准库函数的调用考点点拨:理解函数在C语言中的功能,掌握如何调用库函数•一个C程序有且仅有一个main函数,和若干个其他函数构成。主函数可以调用其他函数,其他函数可以相互调用。这些函数可以是库函数,也可以是用户自定义函数。・函数之间可以相互调用,但各函数必须是相互独立的,一个函数并不属于其他函数。其他函数不能调用main函数。C系统提供了丰富的库函数,编程时可直接调用,使用库函数应注意:(教材P384-389)1、函数功能2、函数参数的数目和顺序,及各参数意义和类型3、函数返回值意义和类型4、需要使用的包含文件函数的定义考点点拨:掌握函数定义的一般形式及注意事项・函数定义的一般形式:返回值类型函数名(类型1形参1,类型2形参2 )(说明部分执行部分}♦函数名和形参名必须是合法的标识符♦函数可以没有返回值,可以定义为void类型。返回值若省略不写则默认为int型函数可以没有参数,即为无参函数函数可以没有函数体,即为空函数不能在函数体中定义另外一个函数,各函数之间是相互独立的考点3考点3函新的声明考点点拨:掌握函数声明的方法和声明时应该注意的问题•在C语言中,用户自定义函数必须“先定义,后使用工如果调用在前定义在后,就必须在调用之前对函数进行声明,将该函数的有关信息通知编译器。函数声明的形式如下:♦返回值类型函数名(类型1,类型2 );♦返回值类型函数名(类型♦返回值类型函数名(类型1形参1,类型2形参2,……);・函数定义在前,调用在后则不必对自定义函数进行声明考点4)形式参数和实际参数考点点拨:掌握形参和实参的概念及作用•定义函数时,函数名后的参数称为形参;调用函数时,函数名后的参数称为实参。当在一个函数中调用另一个函数时,前者称主调函数,后者称被调函数。主调函数通过实参向被调函数的形参传递数据。说明:♦实参可以是常量、变量、表达式或函数,形参只能是变量♦实参和形参的类型一致或赋值兼容,个数必须相同,按顺序一一对应♦当函数被调用时,形参才分配内存空间,调用结束时,形参所占内存空间被释放♦实参对形参的数据传递是单向值传递。且在内存中,形参与实参占用的是不同的内存单元,因此形参的改变并不影响实参。考点5j函数的返回值考点点拨:理解在函数调用时return语句的作用•被调函数可以用return语句将函数值传递给主调函数。return语句形式:return表达式; 或 return(表达式);•说明:♦当函数执行到return语句时,返回到它的主调函数的调用位置,并带回返回值。♦return后的表达式可以是常量、变量或表达式♦表达的类型若和函数定义中的返回值类型不相同,则系统自动转换为定义的类型;若无法转换,则赋值不兼容。♦若函数定义为void类型,则不能用return带回返回值。函数最后一个‘}'起返回作用。♦函数中可以有多条return语句,但只执行其中一条,或都不执行。010.3)MrSturn010.3)MrSturn语句的自定义函数在执行结束时不能返回到调用处Q考曳6)函数调用考点点拨:掌握函数调用的基本形式及其语法要求・函数调用的形式如下:函数名(实参表)•说明:♦调用函数时,函数名必须与被调用的函数名完全相同。♦函数调用可以出现在允许表达式出现的任何地方♦函数调用可以作为一条独立的语句,此时最后的分号不能少。CUD函数的嵌套调用和递归调用考点点拨:掌握函数嵌套调用与递归调用的方法及注意事项•在被调用的函数中又调用另外一个函数,称“嵌套调用”・函数直接或间接地调用自身,称“递归调用可以将递归调用看做是嵌套调用的特殊形式•采用递归方法求解一个问题时,该问题必须满足以下条件:♦可以把要求解的问题转化为新的问题,而且新问题的解法与原问题相同♦必须有一个明确的结束递归的条件・函数递归调用时,系统利用堆栈将当前函数中的变量和形参暂时保存起来,再为新一轮函数调用中的形参和变量分配内存空间。•嵌套或递归调用的返回原则是:先调用,后返回。

(2010.9)fe<stdio.h>炎淅(2010.9)fe<stdio.h>炎淅(7);printf(An");)篦序运行后的输出结果是(D)(2010.9)考点点拨:掌握局部变量和全局变量的作用范围及特点•在函数体内部或复合语句内部定义的变量称局部变量,其作用范围只在定义它的函数体或复合语句中。说明:♦形参也属于局部变量,作用域仅限于它所在的函数体。♦不同函数之间可以使用同名的局部变量。因其占用的内存空间不同,所以互不影响。•在函数体外部定义的变量称为全局变量,其作用范围是从定义位置到源文件结束。说明:♦全局变量在整个程序执行期间占用固定的存储空间♦当全局变量和局部变量同名时,在局部变量的作用范围内同名的全局变量不起作用(考点9)变量生存期和存储类别藕志斑掌握变量四种存储类型的声明和应用•从变量生存期的角度,可以将变量分为静态存储和动态存储。静态存储是指在程序运行期间给变量分配固定的内存空间。动态存储是指在程序运行期间根据需要动态地进行内存空间分配。•变量在程序运行过程中可以使用的存储位置有:动态存储区、静态存储区、CPU寄存器存储区。变量的存储类型指定变量的存储位置,共有四种存储类型:♦aut。(自动型):在函数体内部使用,为该类型的变量分配在动态存储区。其特点是进入其作用范围时分配存储空间,退出其作用范围时释放为其分配的存储空间。在函数体内部未指定变量存储类型时默认为aut。型。该类型变量若赋初值,则每次使用时重新赋初值;若不赋初值,则为随机值O♦Static(静态型):可以在函数体内部或外部使用,为该类型的变量分配在静态存储区。其特点是在整个程序运行期间占用固定的存储空间。若赋初值则只在第一次使用的时候赋初值一次;若不赋初值,则默认为0。》在函数内部定义称静态局部变量,其生存期全局,作用域局部。该类型变量具有继承性,即多次使用时后一次继承前一次使用的结果值。》在函数外部定义称静态全局变量,其特点同全局变量,区别在于仅限本文件使用。变量生存期和存储类别考点点拨:掌握变量四种存储类型的声明和应用♦register(寄存器型):其特点同auto型变量,区别是在CPU寄存器中分配存储空间,仅限数据类型为整型、字符型或指针类型且使用频繁的变量♦extern(外部型):引用性声明。此种类型只针对全局变量且不分配存储空间,作用是扩展已经在其他位置定义过的全局变量的作用范围到声明位置程序运行后的输出结果是()(2010.9)for(i=1;i<=5;i++)s+=fun();printf('"置程序运行后的输出结果是()(2010.9)for(i=1;i<=5;i++)s+=fun();printf('"%d\n",s);{staticintx=1;x+=1;returnx第8章编译预处理八、编译预处理.宏定义和调用(不带参数的宏,带参数的宏)。.“文件包含”处理。 cud不带参数的宏定义考点点拨:掌握不带参数宏的替换形式和特点•不带参数宏的定义形式:#define宏名宏体•说明:宏名为合法标识符,为和普通变量区分,常用大写字母表示。在定义新宏时,可以引用已经定义过的宏,替换时层层替换。在字符串中若有与宏名相同的内容,不进行替换。♦宏替换时,只是将宏体简单替换掉宏名,不得随意增、减任何内容。宏计算的原则是:“先替换,再计算”!考点2〕)带参数的宏定义考点点拨:掌握带参数宏定义的替换形式及特点・带参数宏的定义形式:#define宏名(参数表)宏体■说明.♦全名与参数表的'('之间不能有空格♦宏的参数表无类型,多个参数之间以逗号分隔式。千万不能将实参表达式计算后再替换。1,0);d,%d\n,s,t);♦引用带参宏时,实参可以是常量、变量或表达式,都以原样替换宏体中对应的形参,宏体中的其他内容原样书写,最后再计算替换后的表达式。千万不能将实参表达式计算后再替换。1,0);d,%d\n,s,t);宏行后的结果是(C)o(2010.3)!^^^后的输出结果是(A)o(2009.3:步0B)-12C)-20D)10 ;^IO,64B)10,10C)64,10D)64,64C^£3J文件包含考点点拨:理解文件包含的作用、形式及特点•文件包含是指在一个文件中包含另一个文件的全部内容。文件包含有两种形式:#includeV文件名〉:在系统所在的标准目录中查找要包含的文件#include“文件名”:在用户当前目录中查找要包含的文件,若没有再到标准目录中查找第9章指针九、指针.地址与指针变量的概念,地址运算符与间址运算符。.一维、二维数组和字符串的地址以及指向变量、数组、字符串、函数、结构体的指针变量的定义。通过指针引用以上各类型数据。.用指针作函数参数。.返回地址值的函数。.指针数组,指向指针的指针。变量地址和指针变量的基本概念及赋值和赋值考点点拨:理解变量的地址和指针的概念,掌握指针变量的定义和赋值•地址是内存空间某一字节的编号,变量的地址是指给变量在内存中分配的空间的起始地址编号。・指针变量是专门存放变量地址的一种特殊变量。•c语言允许可以用变量名直接访问所分配的内存空间,也可以通过指针变量间接访问所指向变量的内存空间。•指针变量的定义形式:举刑女★相针&ir*相针夕1-其中,⑴类型名是指针美量可以藉向前白标变量的类型。(2)定义形式中的*仅为说明符,指针变量是其后的标识符。(3)不管指针变量指向何种类型的变量,均给其分配一个存放地址的空间,一破为4B。•指针蓑量只能存位地址,不能存放其他数据。如inti;int*p=&i;表示指•可以给指针变量赋空瓦,即int*p=NULL;让指针变量指向地址编号为。的单元,该单元不存放任何有意义的数据。考点点拨:掌握如何通过指针变量间接访问所指地址空间•指针变量在运算时常用两个运算符♦&:取地址运算符,可取变量的地址,数组元素的地址,如&i,&a[i]♦■间接访问运算符,*右边的运算对象可以是指针变量或变量的地址。如有:inti,*p;p=&i;,则*pOi、pO&i,指针变量作函数参数考点点拨:掌握指针变量作函数参数传递和返回值的意义•指针可以作为函数的形参。这样,函数调用时实际是将实参的地址传递给形参,即形参指针变量指向实参,这种传递方式叫地址值传递。地址值传递方式的特点是可以通过对形参指针变量的间接访问引用、改变实参变量的值。这样调用函数可以实现不用return而得到多个函数处理结果。在程序中广泛使用。(26)*c=*c+1;d=d+1printf("%c,%c,”程序运行后的输出结果是((26)*c=*c+1;d=d+1printf("%c,%c,”程序运行后的输出结果是(A)o(2010.3)A)b,B,b,AB)b,B,B,AC)a,B,B,aD)a,B,a,B;main()“charb=,a,,a=,A,;fun(&b,a);printf("%c,%c\n,,,b,a)C考点指向数组的指针考点点拨:掌握指向一维数组、二维数组和字符数组的指针的应用•一维数组的名字即是数组存储空间的首地址(或首元素地址)常量,可以用指针指向一维数组:如有inta[10],*p;p=a;贝!j♦a[i]0*(a+i)=*(p+i)gp[i]力a+i=p+i=&pji]♦p++o&a[1]♦p=a+5;p++3&a[6](注意p是地址变量,a是地址常量)・二维数组的名字是二维数组首行的地址,是二级地址;二维数组名带一个下标是下标所在行首元素的地址,是一级地址。因此在二维数组中可以使用两类指针变量:♦列(元素)指针变量:如有inta[3][4],*p;p=a[0];贝iJp++u>&a[0][1],指向下一个元素♦行指针变量:如有inta[3][4],(*p)[4];p=a;贝!Jp++6&a[1],指向下一行•可以用字符数组存储一个字符串,也可以用字符指针指向一个字符串,此时,字符指针等同于字符数组名使用,但前者是地址变量,后者是地址常量。♦如charstr[80]=uabcde,,,*t;t=str;则puts(str)Oputs⑴♦可以char*s;s="abcde”;木可以charstr[80];str="abcde”;

CJA5J数组的指针作函数参数糯融:掌握数组的指针作函数参数特点和应用•数组作函数参数有以下情况:•数组元素作函数参数:同普通变量作函数参数,此时形参为普通变量,是单向普通值传递,最多由return带回一个返回值。•一维数组名作函数参数:传递的是一维数组的首地址,此时形参为一级指针变量或同类型的一维数组。可以在被调函数中通过形参变量或数组名间接访问、改变所有的实参数组元素值。・二维数组名作函数参数:传递的是二维数组的首行地址,此时形参为二级行指针变量或同类型二维数组。A)char*s;s«Wc';B)chars[7];C)char*s;s={"Olympic%'、J-'Eschars{7);'槟迂A)定义了基类型为int的三个指针变B)定义了基类型为int的具有三个元素的指C)定义/个名为*pt、具有三个元素的整型A)(*s)[3]B)*(s+3) C)*s[3]D)*s+3D)定义了一个名为pt的指针变量,它可以指向每行有三个.憎激懿餐!谈皴螂!(28)设有定义doublea[10『s=a;,一下能够代表数组元素a网的是(A)(*s)[3]B)*(s+3) C)*s[3]D)*s+3指针数组考点点拨:掌握指针数组的定义及其应用•指针数组即数组中的每个元素均为指针的数组。其定义形式如下:类型名*数组名[数组长度]•通常用指针数组处理二维数组或字符串数组考点点拨:掌握命令行参数的个数、类型及意义•主函数带参数称为命令行参数,因为没有函数能调用main函数,所以要从操作系统的命令行给其传参数。main函数带参数的形式:•voidmain(intargc,char*argv[])•其中:•argc接收命令行中参数的个数,包括命令名(即可执行文件名)本身•argv接收命令行中各参数字符串的首行地址,*argv[]o**argv•两个参数的名字可以变,但类型不能变楚8)指向函数的指针考点点拨:掌握指向函数的指针的定义及应用•函数的指针及函数的入口地址,用函数名表示。指向函数的指针定义形式:返回值类型(*指针变量名)(参数类型1,参数类型2 );•只要函数的类型、参数个数和类型与指针变量定义中一致,就可以将函数的入口地址赋给该指针变量,如下:指针变量名=函数名;•此时,可以通过指针变量间接调用所指向的函数:♦(*指针变量名)(实参列表)♦指针变量名(实参列表)funfintn.char正确的是(A)。(2009.9)Pf=fun;B)void*pf();pf=fun;^B^vbid*pf();*pf=fun;D)void(*pf)(int,char);pf=&fun;J返回指针值的函数考点点拨:掌握返回指针值的函数头定义形式及返回值表示・返回指针值函数的函数头定义形式是:类型*函数名(形参列表)•在这样的函数体中,用return带回的是一个和函数头上指定类型相同的指Cj£io2)指向指针的指针考点点拨:理解二级指针的定义、意义及使用•一级指针变量存放普通变量的地址,二级指针变量存放一级指针变量的地址,以此类推。二级指针变量即为指向指针的指针,其定义形式如下:数据类型**指针变量名;若有inti,*p,**q;p=&i;q=&p;则i0*pO**q&iOpO*q点也)malloc函数和free函数考点点拨:理解malloc函数和free函数的作用•库函数malloc是在程序运行过程中向内存申请存储空间,其调用形式是malloc(size)其中,size必须是一个正整数。申请成功,函数的返回值是申请到存储空间的首地址,一般先强制类型转换后用程序中的某个指针变量接收。如:int*p;p=(int*)malloc(sizeof(int)*10);•由malloc函数申请到的存储空间不会因为函数执行结束而释放,若确定不用,可以使用free函数来释放。如free(p);•使用这两个库函数需要包含头文件:stdlib.h或malloc.h#inctude<^#include<stdlib.#inctude<^#include<stdlib.main(){int*a,*b,*c;a=b=c=(int*)malloc(sizeof(int));*a=1;*b=2;*c=3;a=b;printf("%d,%d,%d\n”,*a,*b,*c);)程序运行后的输出结果是(A)0(2010.9)A)3,3,3 B)2,2,3 C)1,2,3 D)1,1,3第10章结构体和共用体十、结构体(即“结构”)与共同体(即“联合”).用typedef说明一个新类型。.结构体和共用体类型数据的定义和成员的引用。.通过结构体构成链表,单向链表的建立,结点数据的输出、删除与插入。结构体类型及变量的定义考点点拨:理解结构体类型的声明及变量的定义・声明结构体类型用关键字struct,形式如下:struct[结构体名]{成员列表};其中,“结构体名”是合法标识符,可以省略。“成员列表”定义该类型中各成员的类型和名字。结构体类型定义只描述结构中各成员的组织形式,各成员并不占用内存空间。可以嵌套定义结构体类型。新定义的结构体类型为:“struct结构体名”。•用已经定义的结构体类型定义变量,其形式为:struct结构体名变量名列表;也可以定义类型的同时定义变量或定义无名结构体变量,系统会在编译时为结构体变量分配内存空间,其字节数=类型中各成员所占字节数的总和。136)下面结构体的漆TOC\o"1-5"\h\zA)struct ord {int xB)struct ord {int x;int y;int z;}C)struct ord {int x;int y;int z;}n;D)struct {int x;inty;int z;} a;I、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、(3点2)结构体变量的赋值和引用考点点拨:掌握结构体变量的赋值和引用•可以在定义结构体变量时按成员顺序给其赋初值,如:struct结构体名变量名={初值1,初值2,……};•除了同类型结构体变量可以整体赋值外,其余只能通过成员运算符。逐个引用其成员,其形式为:结构体变量名.成员名结构体类型也可以定义数组或指针,如:structstudentstu,stud[3],*p;p=&stu;^p=stud;因此,也可以通过结构体指针引用其指向变量的成员:stu.ageo(*p).age<=>p->age用结构体处理链表考点点拨:理解链表的结构特点及链表的建立、输出、插入、删除•链表是一种动态存储结构,其基本构成单位称结点,其特点是通过结点中的指针来体现结点间的先后关系。结点中一般包含两部分数据:数据域和指针域。因其类型不同,所以用结构体类型组织,一般形式如下:structNODE{intdata;structNODE*next;};其中,数据域或指针域根据需要可以是多项成员。在单向链表中,指针成

温馨提示

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

评论

0/150

提交评论