




已阅读5页,还剩74页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
全国计算机二级C语言程序设计 考点复习 全国计算机二级考试 考试方式 1.笔试:90分钟,满分100分,其中含公共基础知 识部分的30分(选择10题20分,填空5题10分)。 2.上机:90分钟,满分100分 3.上机操作包括: (1)填空。(30分,3处填空) (2)改错。(30分,23处改错) (3)编程。(40分,一个自定义函数体) 第1章 C语言程序设计基本概念 一、C语言程序的结构 1.程序的构成,main函数和其他函数。 2.头文件,数据说明,函数的开始和结束标志以及程序中的注释。 3.源程序的书写格式。 4.C语言的风格。 大纲要求重点: 考点1C语言程序 考点点拨:重点记忆程序的构成和书写 程序是可以连续执行的指令的集合。目前当用的程序程序语言主要 是“高级语言”,如Visual Basic、C+、Java和C。其中C语言具有高 级语言和低级语言的双重优点。 C语言程序由函数构成。一个C语言源程序有且仅有一个main函数和 零个或多个其他函数。无论main函数的位置如何,它是程序执行的入口和 出口中。 C语言程序书写自由,一行内可以写一条或多条语句,一条语句也可 以写在多行。C语言的注释有两种形式,分别为行尾注释“/”和块式注 释“/* */”。注释只是给人看,对编译和运行不起作用。 真题举例: (11) 以下叙述正确的是( ) (2010.3) A) C语言程序是由过程和函数组成的 B) C语言函数可以嵌套调用,例如:fun(fun(x) C) C语言函数不可以单独编译 D) C语言中除了main函数,其他函数不可以作为单独文件形式存在 B 考点点拨:C程序的编译连接和后缀 C源程序文件(后缀为.c)必须翻译为二进制目标文件(后缀为.obj),此 过程称为“编译”,负责此工作的程序称为“编译器”或“编译程序”;然后由 连接程序把该二进制文件与C语言的各种库函数连接起来,生成可执行文 件(后缀为.exe),此过程称为“连接”;最后执行该可执行文件,实现程序 功能。 考点2C语言程序编译连接过程 真题举例: (13)以下叙述中错误的是( ) (2010.9) A)C程序在运行过程中所有计算都以二进制方式进行 B)C程序在运行过程中所有计算都以十进制方式进行 C)所有C程序都需要编译链接无误后才能运行 D)C程序中整型变量只能存放整数,实型变量只能存放浮点数 B 考点点拨:算法的五个特性 算法是为解决某个特定问题而采取的确定且有限的步骤。算法的五个 特性是:有穷性、确定性、有效性、零个或多个输入、一个或多个输出。 算法的表示方法有自然语言、流程图、伪代码和程序设计语言。 考点3算法的特性 真题举例: 13、以下关于算法叙述错误的是( )。(2012.3) A算法可以用伪代码、流程图等多种形式来描述 B一个正确的算法必须有输入 C一个正确的算法必须有输出 D用流程图可以描述的算法可以用任何一种计算机高级语言编写成程 序代码 B 考点点拨:记住程序设计的任务 程序设计指设计、编程、调试程序的方法和过程。程序设计通常分为 问题建模、算法设计、编写代码和编译调试四个阶段。 考点4程序设计的任务 真题举例: 11、针对简单程序设计,以下叙述的实施步骤正确的是( )。(2012.3) A确定算法和数据结构、编码、调试、整理文档 B编码、确定算法和数据结构、调试、整理文档 C整理文档、确定算法和数据结构、编码、调试 D确定算法和数据结构、调试、编码、整理文档 A 考点点拨:记忆结构化程序的三种结构组成 结构化程序设计通常采用自顶向下、逐步细化、模块化设计、结构化 编码的方法。结构化程序由三种基本结构组成:顺序结构、选择结构、循 环结构。 考点5结构化程序和模块结构 真题举例: (11)以下关于结构化程序设计的叙述中正确的是 ( )。(2010.9) A)一个结构化程序必须同时由顺序、分支、循环三种结构组成 B)结构化程序使用goto语句会很便捷 C)在C语言中,程序的模块化是利用函数实现的 D)由三种基本结构构成的程序只能解决小规模的问题 C 第2章 数据类型、运算符和表达式 二、数据类型及其运算 1.C的数据类型(基本类型,构造类型,指针类型,无值类型)及其定义方法。 2.C运算符的种类、运算优先级和结合性。 3.不同类型数据间的转换与运算。 4.C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式 ,逗号表达式)和求值规则。 大纲要求重点: 考点点拨:标识符的命名规则 标识符的命名规则有:(1)由字母、数字、下划线三类字符组成;(2)必须 以字母或下划线打头;(3)区分大小写;(4)不能和关键字相同;(5)尽量见名知 义 考点1标识符及命名规则 真题举例: (13) 以下C语言用户标示符中,不合法的是( )(2010.3) A)_1 B)AaBc C)a_b D)ab D 考点点拨:记十进制、八进制、十六进制整型常量的表示 C语言中整型常量的表示方法有:十进制(以非零数字打头)、八进制(以 数字0打头后跟八进制数符)、十六进制(以0X或0x打头后跟十六进制数符)。 C语言中整型数据有三大类:短整型(short,2B) 、基本整型(int,4B) 、长 整型(long,4B),此为有符号类型,可表示正、负数;在三个关键字前加上 unsigned 则为无符号类型,所占字节数不变,但只能表示正数。 整型数据在内存中以二进制补码存放,若超出其表示范围,会产生溢出 。 考点2整型常量、变量的表示及取值范围 考点点拨:记实型常量的表示 实型常量的表示方法有两种:小数形式和指数形式。 实型数据主要使用两种类型:单精度(float , 4B)、双精度(double, 8B ),注意不同类型的有效数字位数区别。 实型数据在内存中以指数形式存放,实型常量默认为double型,可以 在常量后加f或F将其按float型处理。 考点3实型常量、变量的表示及取值范围 考点点拨:记字符常量及转义字符常量的定义 普通字符常量是用一对单引号括起来的一个字符表示的常量。字符常 量的值是该字符的ASCII码值,如A的值是65,0字符的值是48等,在 内存中占1B空间。 转义字符常量指在单引号内由反斜线打头,后跟特定字符表示的常量 。需要记的转义字符有三类: (1)控制字符:n、 r、b、 t (2)特殊字符: 、 、” (3)转义进制: bbb(13位八进制数符)、 xhh(12位十六进制数符) 字符串常量是用一对双引号括起来的零个或多个字符序列,其中包含 的字符可以是普通字符或转义字符,系统自动在字符串末尾增加一个不可 显示字符0(空字符)作为字符串结束标记,字符串所占的内存空间为所含 字符数+1。 考点4字符型常量、变量及转义字符常量 真题举例: (15)以下选项中能表示合法常量的是( )(2010.9) A )整数:1,200 B)实数:1.5E2.0 C )字符斜杠: D)字符串:“007” (13)以下选项中不能用作C程序合法常量的是( )(2011.3) A)1,234 B)123 C)123 D)“x7G“ (14)以下选项中可用作C程序合法实数的是A( )(2011.3) A).1e0 B)3.0e0.2 C)E9 D)9.12E D A A 考点点拨:记字符数据的运算方法 C语言规定,将所有的字符型数据都作为整型来处理。因此,字符常量 和转义字符常量可以参与任何整数运算。如A+32得a,5-0得5。常考 英文字母大、小写之间的转换,数字字符与整数值之间的相互转换。字符数 据还可以进行关系运算和逻辑运算。 考点5字符数据的运算 真题举例: (21)以下不能输出字符A的语句是(注:字符A的ASCIl码值为65,字符a的 ASCIl码值为97)( )(2011.9) A)printf(“cn“,a-32); B)printf(“dn“,A); C)printf(“cn”,65); D)print-f(“cn“,B-1); B 考点点拨:记字符变量的定义及赋值 C语言中用关键字char定义字符型变量,在内存中分配1B空间,用来存 放字符常量的ASCII码值。该值可以作为整型数据来参与运算。 考点6字符型变量 真题举例: (22)有以下定义语句,编译时会出现编译错误的是( )。(2009.9) A) char a=a; B) char a=n; C) char a=aa; D) char a=x2d; C 考点点拨:运算符的分类、常用运算符的优先级和结合性 运算符按功能分有13类(P56),按所需操作数目分可分为:单目运算符( 右结合,优先级2)、双目运算符(除赋值为右结合外,其余为左结合)、三目 运算符(条件运算符,右结合)。各运算符的优先级和结合性见教材P378。 考点7运算符的种类、优先级和结合性 考点点拨:系统自动转换成同一类型的方向和结果的类型 不同数据类型混合运算时系统自动转换的规则见下图,其中水平箭头为 必然转换,垂直箭头为从低向高方向转换。运算结果类型为转换后的类型。 考点8不同类型数据间的混合运算 double float unsigned long long intchar, short 高 低 真题举例: (14)若有定义语句:int a=10;double b=3.14;,则表达式A+a+b值的类 型是( )。(2011.9) A)char B)int C)double D)float C 考点点拨:重点记算术运算符各自的运算特点 基本算术运算符+、-、*、/、%均为双目运算符。其中%(求余数)运算符 要求两侧的操作数必须为整型;/(除)运算符两侧若均为整数,则结果为除以 后的整数部分,否则为实型。 考点9算术运算符与表达式 真题举例: (14)有以下定义:int a; long b; double x,y;则以下选项中正确的 表达式是( )。(2010.9) A) a%(int)(x-y) B)a=x!=y; C)(a*y)%b D)y=x+y=x A 考点点拨:重点记赋值表达式及复合赋值表达式的特点 赋值表达式左侧必须是简单变量,不能是常量或表达式(包括赋值表达式 ),右边可以是常量、变量或表达式(包括赋值表达式)。赋值运算符及复合赋 值运算符右结合,优先级倒数第二级。当赋值表达式右边表达式值的类型与 左边变量的类型不一致时,系统会自动将该值转换成左边变量的类型后再赋 值。转换规则则教材P62。 考点10赋值运算符与表达式 真题举例: (16)表达式a+=a-=a=9的值是( )(2010.9) A)9 B)_9 C)18 D)0 (15 ) 若有定义语句:int a=3,b=2,c=1;,以下选项中错误的赋值表达式是( )(2011.3) A)a=(b=4)=3; B)a=b=c+1; C)a=(b=4)+c; D)a=1+(b=c=4); (15) 若有定义语句:int x=12,y=8,z;,在其后执行语句z=0.9+x/y;, 则z的值为( )。(2011.9) A)1.9 B)1 C)2 D)2.4 D A B 考点点拨:理解前置运算和后置运算的不同意义 自增(+) 、自减(-)均为单目运算符,右结合,操作数可以是整型变量或 实型变量,但不能是常量或表达式。前置运算(如+i、-)是先增减后运算, 后置运算(如i+、i-)是先运算后增减。 考点11自增、自减运算及表达式 真题举例: (18)有以下程序main() int x=011; printf(“%dn“,+x); 程序运行后的输出结果是( )(2011.3) A)12 B)11 C)10 D)9 C 考点点拨:记逗号运算符的优先级、结合性及求值规则 逗号表达式是用逗号运算符(,)将两个或两个以上的表达式顺序连接起 来的表达式,左结合,逗号运算符优先级最低。从左到右顺序求解各表达式 ,也称为顺序求值表达式,结果为最右边表达式的值。注意区分逗号分隔符 和逗号运算符。 考点12逗号运算及表达式 真题举例: (6)执行以下程序后的输出结果是 。(2007.4) main() int a=10; a=(3*5,a+4); printf(“a=%dn”,a); a=14 考点点拨:理解强制类型转换、自动类型转换 (1)强制类型转换。格式为:(类型) (表达式),将表达式值的类型强制转 换成指定的类型,对表达式中原有变量的类型无影响。 (2)自动类型转换。 a.赋值运算中的自动转换。 b.混合运算中的自动转换。 考点13类型转换 真题举例: (14)表达式:(int)(double)9/2)-(9)%2的值是 ( )。(2009.9) A)0 B)3 C)4 D)5 B 考点点拨:掌握关系运算符及表达式的求值 关系运算符有: = k2) printf(”%dn”,a|b 程序运行后的结果是( )。 (2010.3) A)0 B)1 C)2 D)3 C 第3章 顺序结构 三、基本语句 1.表达式语句,空语句,复合语句。 2.输入输出函数的调用,正确输入数据并正确设计输出格式。 大纲要求重点: 考点点拨:理解C语句的概念及分类 见教材P57.图3.14可知:C语句是函数体里的基本构成单位。语句的作 用是向计算机系统发出操作指令,要求执行相应的操作。一个C语句经过编 译后产生若干条机器指令。C语句可以分成5大类: (1)控制语句; (2)函数调 用语句;(3)表达式语句;(4)空语句;(5)复合语句; 考点1 C语句的分类 考点点拨:掌握字符数据的输入输出函数的用法 putchar函数用于向显示器输出一个字符。一般格式是:putchar(c);其 中c可以是字符型或整型常量、变量或表达式,结果是向显示器输出其值对 应的ASCII码字符。 getchar函数用于从键盘输入缓冲区读取一个字符。一般格式是: getchar()。一般用法:ch=getchar(); 将从键盘输入的一个字符值赋给变量 ch。从键盘输入的空格、回车等控制字符也作为有效字符读取。 考点2putchar函数和getchar函数 真题举例: (10)下列程序运行时,若输入1abcedf2df 输出结果为 。 #include main() char a=0,ch; while(ch=getchar()!=n) if (a%2!=0 if(!a) b+; else if(a=0) if(a) b+=2; else b+=3; printf(”%dn”,b); 程序运行后的输出结果是 ( )。(2010.9) A)0 B)1 C)2 D)3 (18)有以下程序 #include main() int x; scanf(“%d”, if (x main() int x=1,y=0; if(!x) y+; else if(x=0) if (x) y+=2; else y+=3; printf(“%dn“,y); 程序运行后的输出结果是( )。 (2011.3) A)3 B)2 C)1 D) 0 D 考点点拨:switch语句的格式及其执行、跳转的过程 switch语句又称开关语句,一般用于实现多分支选择。switch语句的一 般形式及执行见教材P103。注意: uswitch后的表达式值的类型一般为整型或字符型 ucase子句后的常量必须为简单的整型或字符型常量 u当执行完一个分支的执行语句后没有遇到break,将继续执行下一分支的 执行语句 uswitch语句可以嵌套,break在switch中的作用是跳出所在的switch语句 考点3switch语句的形式及用法 真题举例: 18、以下选项中与if(a=1) a=b;else a+;语句功能不同的switch语句是:( )(2010.3) A、switch(a) B、switch(a=1) case 1:a=b;break; case 0 : a=b;break; default : a+; case 1 : a+; C、switch(a) D、switch(a=1) default : a+;break; case 1:a=b;break; case 1:a=b; case 0: a+; B 第5章 循环结构 五、循环结构程序设计 1.for循环结构。 2.while和do-while循环结构。 3.continue语句和break语句。 4.循环的嵌套。 大纲要求重点: 考点点拨:理解while循环的执行过程及应用 while语句构成的循环称为“当型”循环,其一般形式是: while(表达式) 语句 表达式可以是C语言中任意类型的合法表达式,取其值的逻辑值。语句也 可以是五大类语句任意之一,但只能控制其后的一条语句。循环体有可能一 次也不执行。 考点1while语句的形式及执行过程 真题举例: (20)有以下程序 #include main() int a=1,b=2; while(a main() while( getchar()!=n) ; 以下叙述中正确的是( )。(2011.3) A) 此while语句将无限循环 B) getchar()不可以出现在while语句的条件表达式中 C) 当执行此while语句时,只有按回车键程序才能继续执行 D) 当执行此while语句时,按任意键程序就能继续执行 B C 考点点拨:理解dowhile循环的执行过程及应用 dowhile语句构成的循环称为“直到型”循环,其一般形式是: do 语句 while(表达式); 其特点是先执行循环体再判断循环条件,循环体至少执行一次。注意 while之后的分号不能少。 考点2dowhile语句的形式及执行过程 真题举例: (9)以下程序运行后的输出结果是【9】 。 #include main() int a=1,b=7; do b=b/2; a+=b; while (b1); printf(“%dn“,a); 5 考点点拨:理解for循环的执行过程及应用 for语句的一般形式是: for(表达式1;表达式2;表达式3) 语句 for中的三个表达式可以是任意合法的C语言表达式,表达式1在进入循环 的进修执行一次,一般是给循环变量赋初值;表达式2取其逻辑值作为循环条 件;表达式3在执行循环体后才执行,一般是使循环条件趋于假的运算。三个 表达式均可以省略,但分号不能省。 考点3for语句的形式及执行过程 真题举例: (21)有以下程序 #includes main() int a=1,b=2; for(;a main() int a5=1,2,3,4,5, b5=0,2,1,3,0,i,s=0; for(i=0;i main() int a33=1,2,3,4,5,6,7,8,9; int b3=0,i; for(i=0;i #include main() char x”STRING”; x0=0; x10; x20; printf( ”%d %dn”, sizeof(x), strlen(x); 程序运行后的输出结果是( )。(2010.9) A)6 1 B)7 0 C)6 3 D)7 1 B 考点点拨:掌握字符数组(字符串)的输入输出方法 l字符数组(字符串)的输入/输出一般有以下三种方法: u%c字符格式:在printf或scanf函数中使用,其I/O对象是单个元素,一般结合 循环使用。 u%s字符串格式:在printf或scanf函数中使用,其I/O对象是数组名所代表的地 址(一维数组名字代表它的存储空间的首地址,二维数组名带第一维下标代表所 在行的首地址),可以整体输入/输出字符串。在scanf函数中接收以空格或回车结 束的字符串。 u字符串处理函数gets或puts:gets接收以回车结束的字符串;puts输出一个 以0结束的字符串,且回车换行。其参数均为字符数组的名字。 考点6字符数组(字符串)的输入和输出 真题举例: (34)有以下程序(二维字符数组) #include main() char ch 35=“AAAA“,“BBB“,“CC“); printf (“sn“,ch1); 程序运行后的输出结果是( )。(2011.9) A)AAAA B)CC C)BBBCC D)BBB D 考点点拨:掌握各常用的字符串处理函数的应用 l常用的字符串处理函数有(需包含string.h头文件):(教材P162-164) ustrcpy(s1,s2)字符串拷贝函数:将s2中的内容复制到字符数组s1中去 ustrncpy(s1,s2,n)拷贝子串函数:将s2中的前n个字符拷贝到s1中 ustrcat(s1,s2)字符串连接函数:将s2连接在s1的末尾 ustrcmp(s1,s2)字符串比较函数:从左到右逐个字符比较两个字符串的大小 ustrlen(str)求字符函数串长度:求字符数组str中第一个0字符之前的字符 个数 考点7字符串处理函数 真题举例: (31)下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST“要求的是( )(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; A 第7章 函数 七、函数 1.库函数的正确调用。 2.函数的定义方法。 3.函数的类型和返回值。 4.形式参数与实在参数,参数值传递。 5.函数的正确调用,嵌套调用,递归调用。 6.局部变量和全局变量。 7.变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生 存期。 大纲要求重点: 考点点拨:理解函数在C语言中的功能,掌握如何调用库函数 l一个C程序有且仅有一个main函数,和若干个其他函数构成。主函数可以 调用其他函数,其他函数可以相互调用。这些函数可以是库函数,也可以是 用户自定义函数。 l函数之间可以相互调用,但各函数必须是相互独立的,一个函数并不属于 其他函数。其他函数不能调用main函数。C系统提供了丰富的库函数,编程 时可直接调用,使用库函数应注意:(教材P384-389) 1、函数功能 2、函数参数的数目和顺序,及各参数意义和类型 3、函数返回值意义和类型 4、需要使用的包含文件 考点1函数的基本概念及标准库函数的调用 考点点拨:掌握函数定义的一般形式及注意事项 l函数定义的一般形式: 返回值类型 函数名(类型1 形参1,类型2 形参2,) 说明部分 执行部分 u 函数名和形参名必须是合法的标识符 u函数可以没有返回值,可以定义为void类型。返回值若省略不写则默认 为int型 u函数可以没有参数,即为无参函数 u函数可以没有函数体,即为空函数 u不能在函数体中定义另外一个函数,各函数之间是相互独立的 考点2函数的定义 考点点拨:掌握函数声明的方法和声明时应该注意的问题 l在C语言中,用户自定义函数必须“先定义,后使用”。如果调用在前定义在 后,就必须在调用之前对函数进行声明,将该函数的有关信息通知编译器。 函数声明的形式如下 : u返回值类型 函数名(类型1,类型2,); u返回值类型 函数名(类型1 形参1,类型2 形参2,); l函数定义在前,调用在后则不必对自定义函数进行声明 考点3函数的声明 真题举例: (12)请将以下程序中的函数声明语句补充完整。 #include int【12】 ; main() int x, y,(*p)(); scanf(“%d%d”, printf(“%dn”,(*p)(x, y); int max(int a, int b) return (ab?a:b); max(int a,int b) 考点点拨:掌握形参和实参的概念及作用 l定义函数时,函数名后的参数称为形参;调用函数时,函数名后的参数称 为实参。当在一个函数中调用另一个函数时,前者称主调函数,后者称被调 函数。主调函数通过实参向被调函数的形参传递数据。说明: u实参可以是常量、变量、表达式或函数,形参只能是变量 u实参和形参的类型一致或赋值兼容,个数必须相同,按顺序一一对应 u当函数被调用时,形参才分配内存空间,调用结束时,形参所占内存空 间被释放 u实参对形参的数据传递是单向值传递。且在内存中,形参与实参占用的 是不同的内存单元,因此形参的改变并不影响实参。 考点4形式参数和实际参数 真题举例: (24)有以下程序 #include void fun(int p) int d=2; p=d+; printf(“%d“,p); main() int a=1; fun(a); printf(“%dn“,a); 程序运行后的输出结果是( )。(2009.9) A)32 B)12 C)21 D)22 C 考点点拨:理解在函数调用时return语句的作用 l被调函数可以用return语句将函数值传递给主调函数。return语句形式: return 表达式; 或 return(表达式); l说明: u当函数执行到return语句时,返回到它的主调函数的调用位置,并带回 返回值。 ureturn后的表达式可以是常量、变量或表达式 u表达的类型若和函数定义中的返回值类型不相同,则系统自动转换为定 义的类型;若无法转换,则赋值不兼容。 u若函数定义为void类型,则不能用return带回返回值。函数最后一个 起返回作用。 u函数中可以有多条return语句,但只执行其中一条,或都不执行。 考点5函数的返回值 真题举例: (24)以下关于return语句的叙述中正确的是( )。(2010.3) A)一个自定义函数中必须有一条return语句 B) 一个自定义函数中可以根据不同情况设置多条return语句 C)定义成void类型的函数中可以有带返回值的return语句 D)没有return语句的自定义函数在执行结束时不能返回到调用处 B 考点点拨:掌握函数调用的基本形式及其语法要求 l函数调用的形式如下 : 函数名(实参表) l说明: u调用函数时,函数名必须与被调用的函数名完全相同。 u函数调用可以出现在允许表达式出现的任何地方 u函数调用可以作为一条独立的语句,此时最后的分号不能少。 考点6函数调用 考点点拨:掌握函数嵌套调用与递归调用的方法及注意事项 l在被调用的函数中又调用另外一个函数,称“嵌套调用” l函数直接或间接地调用自身,称“递归调用”。可以将递归调用看做是嵌套 调用的特殊形式 l采用递归方法求解一个问题时,该问题必须满足以下条件: u可以把要求解的问题转化为新的问题,而且新问题的解法与原问题相同 u必须有一个明确的结束递归的条件 l函数递归调用时,系统利用堆栈将当前函数中的变量和形参暂时保存起来 ,再为新一轮函数调用中的形参和变量分配内存空间。 l嵌套或递归调用的返回原则是:先调用,后返回。 考点7函数的嵌套调用各递归调用 真题举例: (24)有以下程序 #include int f(int x); main() int n=1,m; m=f( f ( f(n) ) );printf(”%dn”,m); int f(int x) return x*2; 程序运行后的输出结果是( )。(2010.9) A)1 B)2 C)4 D)8 (35)有以下程序 #include void fun(int x) if(x/21)fun(x/2); printf(”d ”,x); main() fun(7);printf(”n”); 程序运行后的输出结果是( )(2010.9) A)1 3 7 B)7 3 1 C)7 3 D)3 7 D D 考点点拨:掌握局部变量和全局变量的作用范围及特点 l在函数体内部或复合语句内部定义的变量称局部变量,其作用范围只在定 义它的函数体或复合语句中。说明: u形参也属于局部变量,作用域仅限于它所在的函数体。 u不同函数之间可以使用同名的局部变量。因其占用的内存空间不同,所 以互不影响。 l在函数体外部定义的变量称为全局变量,其作用范围是从定义位置到源文 件结束。说明: u全局变量在整个程序执行期间占用固定的存储空间 u当全局变量和局部变量同名时,在局部变量的作用范围内同名的全局变 量不起作用 考点8变量的作用域 考点点拨:掌握变量四种存储类型的声明和应用 l从变量生存期的角度,可以将变量分为静态存储和动态存储。静态存储是 指在程序运行期间给变量分配固定的内存空间。动态存储是指在程序运行期 间根据需要动态地进行内存空间分配。 l变量在程序运行过程中可以使用的存储位置有:动态存储区、静态存储区 、CPU寄存器存储区。变量的存储类型指定变量的存储位置,共有四种存储 类型: uauto(自动型):在函数体内部使用,为该类型的变量分配在动态存储区 。其特点是进入其作用范围时分配存储空间,退出其作用范围时释放为其 分配的存储空间。在函数体内部未指定变量存储类型时默认为auto型。该 类型变量若赋初值,则每次使用时重新赋初值;若不赋初值,则为随机值 。 ustatic(静态型):可以在函数体内部或外部使用,为该类型的变量分配在 静态存储区。其特点是在整个程序运行期间占用固定的存储空间。若赋初 值则只在第一次使用的时候赋初值一次;若不赋初值,则默认为0。 在函数内部定义称静态局部变量,其生存期全局,作用域局部。该类 型变量具有继承性,即多次使用时后一次继承前一次使用的结果值。 在函数外部定义称静态全局变量,其特点同全局变量,区别在于仅限 本文件使用。 考点9变量生存期和存储类别 考点点拨:掌握变量四种存储类型的声明和应用 uregister(寄存器型):其特点同auto型变量,区别是在CPU寄存器中分配 存储空间,仅限数据类型为整型、字符型或指针类型且使用频繁的变量 uextern(外部型):引用性声明。此种类型只针对全局变量且不分配存储 空间,作用是扩展已经在其他位置定义过的全局变量的作用范围到声明位 置 考点9变量生存期和存储类别 真题举例: (36)有以下程序 #include int fun() static int x=1; x+=1; return x; main() int i, s=1; for(i=1;i #define SUB(a) (a)-(a) main() int a=2,b=3,c=5,d; d=SUB(a+b)*c; printf(”%dn”,d); 程序运行后的结果是 ( )。 (2010.3) A)0 B)-12 C)-20 D)10 C (35)有以下程序 #include #define f(x) x*x*x main() int a=3,s,t; s=f(a+1);t=f(a+1); printf(“%d,%dn“,s,t); 程序运行后的输出结果是( )。(2009.3) A)10,64 B)10,10 C)64,10 D)64,64 A 考点点拨:理解文件包含的作用、形式及特点 l文件包含是指在一个文件中包含另一个文件的全部内容。文件包含有两种 形式: l # include :在系统所在的标准目录中查找要包含的文件 l # include “文件名” :在用户当前目录中查找要包含的文件,若没有 再到标准目录中查找 考点3文件包含 第9章 指针 九、指针 1.地址与指针变量的概念,地址运算符与间址运算符。 2.一维、二维数组和字符串的地址以及指向变量、数组、字符串、 函数、结构体的指针变量的定义。通过指针引用以上各类型数据。 3.用指针作函数参数。 4.返回地址值的函数。 5.指针数组,指向指针的指针。 大纲要求重点: 考点点拨:理解变量的地址和指针的概念,掌握指针变量的定 义和赋值 l地址是内存空间某一字节的编号,变量的地址是指给变量在内存中分配的 空间的起始地址编号。 l指针变量是专门存放变量地址的一种特殊变量。 lC语言允许可以用变量名直接访问所分配的内存空间,也可以通过指针变量 间接访问所指向变量的内存空间。 l指针变量的定义形式: 类型名 *指针名1,*指针名2, ; 其中,(1)类型名是指针变量可以指向的目标变量的类型。 (2)定义形式中的*仅为说明符,指针变量是其后的标识符。 (3)不管指针变量指向何种类型的变量,均给其分配一个存放地址 的空间,一般为4B。 l指针变量只能存放地址,不能存放其他数据。如int i; int *p= 表示指 针变量p指向普通变量i。 l可以给指针变量赋空值,即 int *p=NULL; 让指针变量指向地址编号为0的 单元,该单元不存放任何有意义的数据。 考点1变量地址和指针变量的基本概念及赋值和赋值 考点点拨:掌握如何通过指针变量间接访问所指地址空间 l指针变量在运算时常用两个运算符 u p= ,则 *pi 、 p scanf(“%d”, B)int *p; scanf(“%d”,p); C)int k, *p= scanf(“%d“,p); D)int k, *p; *p= scanf(“%d”,p); (32)以下不能将s所指字符串正确复制到t所指存储空间的是( )(2010.9) A)while(*t=*s) t+;s+; B)for(i=0;ti=si;i+); C)do*t+=*s+; while(*s); D)for(i=0,j=0;ti+=sj+;); C c 考点点拨:掌握指针变量作函数参数传递和返回值的意义 l指针可以作为函数的形参。这样,函数调用时实际是将实参的地址传递给 形参,即形参指针变量指向实参,这种传递方式叫地址值传递。地址值传递 方式的特点是可以通过对形参指针变量的间接访问引用、改变实参变量的值 。这样调用函数可以实现不用return而得到多个函数处理结果。在程序中广 泛使用。 考点3指针变量作函数参数 真题举例: (26)有以下程序 #include void fun (char *c,int d) *c=*c+1;d=d+1; printf(”%c,%c,”,*c,d); main() char b=a,a=A; fun( printf(”%c,%cn”,b,a); 程序运行后的输出结果是 ( )。(2010.3) A)b,B,b,A B)b,B,B,A C)a,B,B,a D)a,B,a,B A 考点点拨:掌握指向一维数组、二维数组和字符数组的指针的应用 l一维数组的名字即是数组存储空间的首地址(或首元素地址)常量,可以用指 针指向一维数组:如有 int a10,*p; p=a; 则 uai*(a+i)*(p+i)pi u p+ p=a0; 则p+ p=a; 则p+ t = str; 则puts(str)puts(t) u可以char *s; s=“abcde”; 不可以char str80; str=“abcde”; 考点4指向数组的指针 考点点拨:掌握数组的指针作函数参数特点和应用 l数组作函数参数有以下情况: l数组元素作函数参数:同普通变量作函数参数,此时形参为普通变量, 是单向普通值传递,最多由return带回一个返回值。 l一维数组名作函数参数:传递的是一维数组的首地址,此时形参为一级 指针变量或同类型的一维数组。可以在被调函数中通过形参变量或数组 名间接访问、改变所有的实参数组元素值。 l二维数组名作函数参数:传递的是二维数组的首行地址,此时形参为二 级行指针变量或同类型二维数组。 考点5数组的指针作函数参数 真题举例: (23)下列语句中,正确的是( )(2010.3) A) char *s ; s=”Olympic”; B) char s7 ; s=”Olympic”; C) char *s ; s=”Olympic”; D) char s7 ; s=”Olympic”; (27)若有定义int(*pt)3;,则下列说法正确的是( )(2010.3) A)定义了基类型为int的三个指针变量 B)定义了基类型为int的具有三个元素的指针数组pt。 C)定义了一个名为*pt、具有三个元素的整型数组 D)定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组 (28)设有定义double a10,*s=a;,一下能够代表数组元素a3的是( )(2010.3) A)(*s)3 B)*(s+3) C)*s3 D)*s+3 A D B 考点点拨:掌握指针数组的定义及其应用 l指针数组即数组中的每个元素均为指针的数组。其定义形式如下: 类型名 *数组名数组长度 l通常用指针数组处理二维数组或字符串数组 考点6指针数组 真题举例: (26)有定义语句:int *p4;以下选项中与此语句等价的是( )(2010.9) A)int p4; B)int *p; C)int *(p4); D)int (*p)4; C 考点点拨:掌握命令行参数的个数、类型及意义 l主函数带参数称为命令行参数,因为没有函数能调用main函数,所以要从 操作系统的命令行给其传参数。main函数带参数的形式: lvoid main(int argc,char *argv ) l其中: largc接收命令行中参数的个数,包括命令名(即可执行文件名)本身 largv接收命令行中各参数字符串的首行地址,*argv *argv l两个参数的名字可以变,但类型不能变 考点7命令行参数 考点点拨:掌握指向函数的指针的定义及应用 l函数的指针及函数的入口地址,用函数名表示。指向函数的指针定义形式 : 返回值类型 (*指针变量名)(参数类型1,参数类型2,); l只要函数的类型、参数个数和类型与指针变量定义中一致,就可以将函数 的入口地址赋给该指针变量,如下: 指针变量名=函数名; l此时,可以通过指针变量间接调用所指向的函数: u(*指针变量名)(实参列表) u指针变量名(实参列表) 考点8指向函数的指针 真题举例: (33)设有以下函数: void fun(int n,char *s) 则下面对函数指针的定义和赋值均正确的是 ( )。(2009.9) A)void (*pf)(); pf=fun; B)void *pf(); pf=fun; C)void *pf(); *pf=fun; D)void (*pf)(int,char);pf= A 考点点拨:掌握返回指针值的函数头定义形式及返回值表示 l返回指针值函数的函数头定义形式是: 类型 *函数名(形参列表) l在这样的函数体中,用return带回的是一个和函数头上指定类型相同的指 针 考点9返回指针值的函数 考点点拨:理解二级指针的定义、意义及使用 l一级指针变量存放普通变量的地址,二级指针变量存放一级指针变量的地 址,以此类推。二级指针变量即为指向指针的指针,其定义形式如下: 数据类型 *指针变量名; 若有 int i,*p,*q; p= q= 则i*p*q p=(int *)malloc(sizeof(int )*10); l由malloc函数申请到的存储空间不会因为函数执行结束而释放,若确定不 用,可以使用free函数来释放。如 free(p); l使用这两个库函数需要包含头文件:stdlib.h或malloc.h 考点11malloc函数和free函数 真题举例: (37)有以下程序 #inctude #include main() int *a,*b,*c; a=b=c=(int *)malloc(sizeof(int); *a=1;*b=2;*c=3; a=b; printf(“%d,%d,%dn”,*a,*b,*c); 程序运行后的输出结果是( )。(2010.9) A)3,3,3 B)2,2,3 C)1,2,3 D)1,1,3 A 第10章 结构体和共用体 十、结构体(即“结构”)与共同体(即“联合”) 1.用typedef说明一个新类型。 2.结构体和共用体类型数据的定义和成员的引用。 3.通过结构体构成链表,单向链表的建立,结点数据的输出、删除 与插入。 大纲要求重点: 考点点拨:理解结构体类型的声明及变量的定义 l声明结构体类型用关键字struct,形式如下: struct 结构体名 成员列表 ; 其中,“结构体名”是合法标识符,可以省略。“成员列表”定义该类型中各成 员的类型和名字。结构体类型定义只描述结构中各成员的组织形式,各成员 并不占用内存空间。可以嵌套定义结构体类型。新定义的结构体类型为: “struct 结构体名” 。 l用已经定义的结构体类型定义变量,其形式为: struct 结构体名 变量名列表; 也可以定义类型的同时定义变量或定义无名结构体变量,系统会在编译时为 结构体变量分配内存空间,其字节数=类型中各成员所占字节数的总和。 考点1结构体类型及变量的定义 真题举例: (36)下面结构体的定义语句中,错误的是( )。(2009.9) A)struct ord int x;int y;int z;struct ord a; B)struct ord in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电气工程设备维护操作手册
- 初中生物考点梳理与难题解析专项训练
- 企业法务合同审核注意事项
- 工厂节能减排年度工作计划
- 2018-2019学年中考英语写作范文与题目解析
- 中药材质量检验技术与标准手册
- 人防工程施工自查规范
- 名著阅读课程设计与教学反思案例
- 家校合作方案促进学生发展
- 高中物理力学部分重点难点解析
- 火龙罐技术课件
- 幼儿园集团化办园实施方案
- 多学科会诊MDT胃恶性肿瘤
- (33)-钠钾泵细胞生物学
- 抗反转录病毒药物的毒副作用
- 项目档案归档目录一览表(档案室用)
- GB/T 242-2007金属管扩口试验方法
- 路基压实度汇总表
- 【食品生产加工技术】香肠的加工技术
- 小学数学三年级下轴对称、平移和旋转强化练习
- 助产士咨询门诊课件
评论
0/150
提交评论