版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、江苏省计算机等级考试 二级+语言 考前辅导,主要内容,一、2006年(秋)至2007年(秋)三份试卷分析 二、+语言概述 三、数据类型、运算符和表达式 四、简单的输入/输出 五、C+的流程控制 六、函数 七、编译预处理 八、数组 九、结构体、共用体和枚举类型 十、指针和引用 十一、主要算法分析,一、试卷分析(C+部分选择题),1、10题,每题1分 2、概念分布较广 3、有一定难度,一、试卷分析(填空题C+基本概念题),1、5题,每题1分 2、概念随机 3、较简单,一、试卷分析(阅读程序题13分),一、试卷分析(完善程序题12分),二、C+语言概述,1、计算机语言和翻译程序 机器语言、汇编语言和
2、高级语言。 2、 C+程序的结构 一个+程序可由多个函数构成,其中必有唯一的一个主函数。它是整个程序的入口,也是整个程序的出口。 3、标识符的命名规则 规则:字母或下划线开始的字母、下划线和数字串。 +语句中的保留字不能作为标识符。 所有的函数名可以作为标识符。 4、C+程序的上机过程,三、数据类型、运算符和表达式,1、常量、变量 常量:固定不变的量。 整型常量: 十进制(29)、八进制(029)和十六进制(0 x29) 实型常量: 小数表示(123.456)、指数表示(1.23456e+002) 字符常量:(字符串常量) 普通字符(A a 2 + ,)、转义字符(qqq xhh) 符号常量:
3、(一般用大写字符表示) # define PI 3.1415936,三、数据类型、运算符和表达式(续一),变量: 整型: 短整型: 2字节short int ( -32768-+32767 ) 无符号短整型: 2字节unsigned short int ( 065535 ) 基本整型: 4字节 int 无符号基本整型: 4字节 unsigned int 实型: 单精度: 4字节float 双精度: 8字节 double 字符型: 有符号字符: 1字节char ( -128127 ) 无符号字符: 1字节 unsigned char ( 0255 ),三、数据类型、运算符和表达式(续二),2、不
4、同类型数据之间的混合运算 表达式值的类型由该式子中最长的数据类型决定。 float 型无条件转换成double型。 char型无条件转换成int型。 * 注意强制类型转换的用法。(类型名) (int)x+y 等价于(int)x)+y 参与运算的数据类型改变了,x的类型不变。 3、算术运算符和运算表达式(+ - * / %) / : a / b a,b都是整型 结果是整型 % : a % b a ,b 都必须是整型,三、数据类型、运算符和表达式(续三),4、赋值运算符和赋值表达式(右结合性) 号 左边只能出现变量,具有强制类型转换作用 复合赋值运算a*=x+y 等价于a=a*(x+y) 5、逗号
5、运算符和逗号表达式 加;号构成表达式语句 作为其它语句的一部分或函数的参数时要加括号 6、表达式的类型识别 7、有关运算符 功能:优先级:结合性:表达式的值:,三、数据类型、运算符和表达式(续四),8、关系运算符和关系表达式 = (6级)= != (7级) 注意: 等于零和不等于零的表示方式a !a 两个实数判相等和判不相等的方法 ax case 常量表达式2 : 语句2;break; case 常量表达式n : 语句n;break; default : 语句n+1 ; 注意: 执行流程 “语句”可为多个单个语句,此时不必加大括号 default 语句可缺省 switch 语句嵌套使用时,br
6、eak语句只跳出它所处的哪层switch,整型、字符型或枚举类型,根据需要选择,四、语句(循环语句_1),(一)当型循环语句一般格式 while(表达式)语句 注意: “表达式”应有括号 “语句”为复合语句时应加大括号 在语句中应有使“表达式”趋于不成立的语句存在 在复合语句中含有break和continue语句时的情况: while (表达式) break; continue; ,四、语句(循环语句_2),(二)直到型循环语句一般格式 do 语句 while (表达式); 注意: 无论表达式是否成立,循环体至少执行一遍 “表达式”应有括号,后面的“;”号不能丢 “语句”为复合语句时应加大括号
7、 在语句中应有使“表达式”趋于不成立的语句存在 在复合语句中含有break和continue语句时的情况: do break; continue; while (表达式);,四、语句(循环语句_3),(二)for 型循环语句一般格式 for (表达式1;表达式2;表达式3) 语句 注意: “语句”为复合语句时应加大括号 在语句中应有使“表达式2”趋于不成立的语句存在 在复合语句中含有break和continue语句时的情况: 三种循环语句相互嵌套使用的情况,五、数组(一维数组),(一)一维数组 定义:类型名数组名常量表达式; 定义并初始化:类型名数组名常量表达式表达式列表; 或:类型名数组名表
8、达式列表; 引用:只能引用下标变量。 注意: 、不能定义动态数组如:int n ; int an; 、只能在定义数组的时候初始化,以后不可整体赋值 、除字符数组外,不可整体引用数组 、一般用单循环语句引用数组元素 、内存中连续存储,数组名为其存储的首地址,五、数组(二维数组),(二)二维数组 定义:类型名数组名常量表达式1常量表达式2; 定义并初始化: 类型名数组名常量表达式 ; 引用:只能引用下标变量。 注意:、不能定义动态数组 、只能在定义数组的时候初始化,以后不可整体赋值 、不可整体引用数组 、一般用双重循环语句引用数组元素 、按行在内存中连续存储,数组名为行的行地址,ai为第i行第个元
9、素的地址如:int a33 引用 a05 正确 、与双重循环语句一起应用,五、数组(字符数组),(三)字符数组(一维、二维) 具有普通一维数组和二维数组的性质。 特点:、可以定义时初始化,也可以后用strcpy()赋值。 、可以引用下标变量,也可整体引用(一维) 、一般用于存放字符串 、字符串的基本概念 )串结束符 )内存单元地址字符串 、字符串操作函数的使用 )串长度(编程实现) )串复制(赋值) )串拼接(编程实现) )串比较(不能用关系运算符) 、字符串的输入和输出 ( char c20 ; ) )cin c; 和 cin.getline( c, 20) ; 区别 、二维字符数组的引用有
10、下标引用法和数组名加第一维下标引用法,六、函数,主要内容 一、函数的定义 二、函数的参数 三、函数的返回值 四、函数的调用 五、数组作为函数的参数 六、局部变量和全局变量 七、变量的存储类别,六、函数(函数的定义),一、函数的定义 函数可理解为一个程序段,给予一定的输入就会产生一定的输出。函数的定义就是在使用函数前对函数功能的完整性描述。 一般形式: 函数类型函数名(参数列表) 函数体 注意:、函数的定义就是函数的说明 、函数由“头部”和“函数体”构成 、函数类型指函数返回值的类型(可以无返回值void),六、函数(函数的参数),二、函数的参数 参数列表中的参数为形式参数,它们和函数体中定义的
11、变量一起构成该函数的局部变量,形参是接受数据的通道,由于是第一次出现,因此要作类型说明。 注意: 、形参要一一说明 、实参和形参要做到类型、顺序和数量一致 、实参和形参可以同名,但它们都是所处函数内部的局部数据 、实参可以是常量、量变、函数和表达式,形参只能是变量 、在发生函数调用时,实参是将值(或地址)赋给形参,六、函数(函数的返回值),三、函数的返回值 通过调用函数,从被调函数中得到的值称函数的返回值。 注意: 、调用函数得到返回值有三种途径: )在被调用函数中用return语句可以(且只可)得到一个返回值 )使用全局变量,全局变量对其后所有函数都有效 )实参和形参采用地址复用的方法(重点
12、) 4 )函数的引用调用 、被调用函数有时没有返回值,此时定义为void型 、被调用函数返回值类型由函数的类型确定 、return表达式; 、被调用函数返回后,在主调函数中继续执行调用语句的下一个语句,六、函数(函数的调用),四、函数的调用 函数调用是将程序的执行流程转向被调用函数,被调用函数执行完毕后再回到主调用函数继续执行。 注意: 、根据被调用函数的类型函数调用有三种形式: )函数调用作为表达式的一部分(被调用函数有返回值) )函数调用作为其它函数的参数(被调用函数有返回值) )函数调用加“;”号构成函数调用语句(被调用函数无返回值) 、函数调用的形式 )嵌套调用 )递归调用:递归函数的
13、编程特点 递归函数的阅读特点,六、函 数(数组作函数的参数_1),五、数组作为函数的参数 由于可以从数组名得到数组在内存储单元存储的起始位置,它是一个地址常量,因此在计论数组作为函数参数时结合指针一并讨论。 ()一维数组(指向变量的指针)作为函数的参数,在实参和形参位置上共有四种情况:(假定int a 10 ; int *p ; ) 实参(调用点) 形参(定义点) x=max( a,10 ) ; 地址复用关系 int max ( int b , int n ) x=max( a,10 ) ; 赋值调用关系 int max ( int *p , int n ) x=max( p=a , 10 )
14、 ; 地址复用关系 int max ( int b , int n ) x=max( p=a , 10 ) ; 赋值调用关系 int max ( int *p1,int n ),六、函 数(数组作函数的参数_2),()二维数组(指向行的指针)作为函数的参数,在实参和形参位置 上共有四种情况:(假定int a 34 ; int (*p)4 ; ) 实参(调用点) 形参(定义点) x=max( a,3,4 ) ; 地址复用关系 int max ( int b4, int m,int n ) x=max( a,3,4 ) ; 赋值调用关系 int max( int (*p)4 , int m,int
15、 n ) x=max( p=a , 3,4 ) ; 地址复用关系 int max ( int b4 , int m,int n ) x=max( p=a , 3,4 ) ; 赋值调用关系 int max ( int (*p1)4,int m,int n ),六、函数(局部和全局变量),六、局部变量和全局变量(变量的空间观) 局部变量 、某函数内部定义的变量,只在该函数内部有效 、分程序(复合语句)内部定义的变量,只在分程序中有效 、形参属于局部变量 全局变量 、函数外部定义的变量,作用范围从定义点开始到程序最后 定义点之前的函数可用extern进行申明来扩展其作用范围 、在全局变量的作用范围内
16、如遇同名的宏定义,则在宏定义之后,同名应该用宏名置换(2004年秋选择题26题),六、函数(变量的存储类别),七、变量的存储类别(变量的时间观) 存储方法分两大类: 、静态存储区: 全局变量(程序开始执行赋值)、局部静态变量(编译时赋初值,只赋一次) 、动态存储区: 局部变量(含形参、函数内定义的变量和分程序中定义的变量) 具体分四种: 、自动变量auto 动态局部变量 、static 申明的变量 静态局部变量 、register 变量 动态局部变量 、extern 申明变量 扩展全局变量作用范围,七、编译预处理,处理工作在编译前完成。 一、宏定义 用宏体置换程序中的宏名。不要将宏体化简后代入
17、,有嵌套定义的宏名需逐层代入。 二、文件包含 和“”的搜索包含文件区别:在库函数头文件所在的目录中寻找(标准方式)、“”先在用户的当前目录中寻找,找不至再按标准方式寻找。 文件包含不但可以包含函数的头文件,也可包含*.文件。 三、条件编译,八、指针(基本概念),一、地址和指针 变量i 地址变量 i_point (存储其它变量地址的变量) 指针变量作为函数的参数,八、指针(数组和指针),二、数组的指针和指向数组的指针变量 由于数组连续存放的特性,当指针指向数组(即数组元素)时,通过指针指向的连续变化来指向数组中不同的元素以获取对数组元素的操作。 例:int a5,*p ; p= *p a3 Cp
18、的计算结果找到了整型数组成员a3 * 地址复用关系 int max ( int b , int n ) x=max( a,10 ) ; 赋值调用关系 int max ( int *p , int n ) x=max( p=a , 10 ) ; 地址复用关系 int max ( int b , int n ) x=max( p=a , 10 ) ; 赋值调用关系 int max ( int *p1,int n ) 指向多维数组的指针 实参(调用点) 形参(定义点) x=max( a,3,4 ) ; 地址复用关系 int max ( int b4, int m,int n ) x=max( a,3
19、,4 ) ; 赋值调用关系 int max( int (*p)4 , int m,int n ) x=max( p=a , 3,4 ) ; 地址复用关系 int max ( int b4 , int m,int n ) x=max( p=a , 3,4 ) ; 赋值调用关系 int max ( int (*p1)4,int m,int n ),八、指针(表达式类型的判断),如何判断一个是数组元素、数组元素的地址? 一、一维数组int aN; 、a是该数组在内存中的起始地址。 、取地址运算 、间接访问运算* 、下标运算 二、二维数组int aMN; 、a是该数组的行起始地址。 、*(a+i) 或
20、 ai 表示第行的第一个元素地址 、取地址运算 、间接访问运算* 、下标运算,取地址,间接访问,元素:ai、*(a+i)、* 则字符串有如下的表示方式: 1)c+整数i 如:c c+2 2) 运行结果:We,417,f 说明: “love”为指针,以%u格式输出“love”的值, 即输出该字符串的首地址。 *“figs”为该字符串的第一个字符。 例:main() if(“abc”=“abc”) printf(“Same!n”); else printf(“Not same!n”); 运行结果:Not same! 说明:比较两个字符串的起始地址,它们不可能相同。,八、指针(指针数组),(3)使用
21、指针数组处理二维数组 例:int a34,*p3,i ; (*p3是指针数组) for(i=0;i3;i+) pi=ai;,说明:p 数组的三个元素 分别是指向整型变量的指 针(元素指针), 指针数 组名p 的增值为一维数组 长度。,通过指针p引用数组元素的方式: pij (pi+j) *(*(p+i)+j) (*(p+i)j,注意:a为二维字符数组的情况,p为地址的地址,即指针的指针,八、指针(指针的指针),指针的指针(二级间址访问) 指向指针数据的指针变量又称为指针的指针,或指针链。其定义的一般格式: 类型说明符 *指针变量名 例:static char *name=“book”,”pri
22、nt”,”gread”; char *p ; 定义指针的指针p p=name ; p指向指针数组name 则: *p 即 name0 *(p+1) 即 name1 *(p+i) 即 namei,八、指针(指针的指针_续),例: # include void main( void) char *p ; char *d=“up”,”down”,”left”,”right”; int i ; p=d ; for ( i=0 ; i4 ; i+ ) cout *p+ endl; ,八、指针(返回指针值的函数),返回指针值的函数(指针函数) 一个函数的返回值为某种数据类型的地址值,即指针类型数据,称该函
23、数为指针型函数。 说明返回指针型函数的格式: 类型说明符 *函数名(参数表); 例:int *a(x , y);,八、指针(返回指针值的函数_续),# include void main(void) float score4= ; float *search(); /search()返回指向实型数据的指针 float *p; int i,m ; / p为指向实型数据的指针 cin m; p=search(score,m); / score为行指针 for(i=0;i4;i+) cout *(p+i) t ; float *search(float (*p)4,int n) return *(p
24、+n); / p+n为第n行的行指针。*(p+n)将指针从行控制转化为列控制,等价于pn及 例: int (*fp)(int,int); 定义函数指针fp指向具有两个整型骖 数且返回值为整型数据的函数 int max(int,int); 已定义一个函数max fp=max ; 将函数max的入口地址赋予指针变量p, p和max都指向函数的入口地址,八、指针(函数的指针_续),几点说明: (1) 函数指针指向程序代码区,一般数据变量指针指向数据区。 (2) (*fp)(int,int),注意运算符()优先级高于*,*fp两侧括号不能省。*fp()表示返回指针值的函数。 (3) 函数指针不能进行+
25、、-、+、-等运算。 (4) 函数可以通过函数名调用,也可通过函数指针调用。 如果函数指针fp指向函数max,则对函数max的调用方式是: max(实参表) (*max)(实参表) fp(实参表) (*fp)(实参数),八、指针(函数的指针_续),二、函数指针的使用 用函数指针调用函数。 函数指针作为函数参数,实现两个或多个函数之间的调用控制。 使用函数指针使C +语言具有类似汇编语言的某些功能。,八、指针(函数的指针_续),main() int max(int,int),(*p)(int,int); int a,b,c; p=max; cin a b; c=(*p)(a,b); cout y
26、 ? X : y); ,八、指针(函数的指针_续),main() /函数max(),min(),add()定义略 int max(int,int),min(int,int),add(int,int); int a,b ; cin a b; cout “max=” process(a,b,max) t; cout “min=” process(a,b,min) t; cout “sum=” process(a,b,add) endl; process(int x,int y,int (*fp)(int,int) return fp(x,y) ; ,三次调用传递了三个 不同的函数入口地址,利用函数
27、指针调用不同 的函数,增加了函数调 用的灵活性,字符串操作,字符串处理函数 编程实现:strlen() strcpy() strcat() strcmp() 查找串中特定字符 P42 题12 P29 题11 删除串中指定字符 P42 题12 P28 题9 串中特定字符组织成新串P50 题8 将已知整数处理成2进制、8进制或16进制字符串 P52 题11 将输入的2进制、8进制或16进制字符串转换成10进制整数 子串的判别,九、结构体与共用体,结构体 一、结构体变量的定义,struct 结构体名 类型标识符 成员名1 类型标识符 成员名2 . 类型标识符 成员名n ; 只定义了结构体类型,str
28、uct 结构体名 类型标识符 成员名1 类型标识符 成员名2 . 类型标识符 成员名n a , b , c3; 定义了结构体类型和变量,struct 类型标识符 成员名1 类型标识符 成员名2 . 类型标识符 成员名n a , b , c3; 只定义了结构体变量,typedef struct DATEa , b , c3; 定义,为结构体变量 类型标识符 成员名1 类型标识符 成员名2 . 类型标识符 成员名n(可嵌套定义) DATE; 定义DATE为结构体类型,九、结构体与共用体,二、结构体变量的引用 只可引用最低级成员 struct data int month; int day; int
29、 year; ; struct int num; char name20; char sex; int age; struct data birthday; char addr30; stud;,串首地址 0 正确引用 stud.birthday.day stud.birthday.year,注意: 、运算符“.”为左结合性,第一级 、成员类型决定引用类型 、引用结构体成员可像普通变量一样 赋值、输入、输出、运算,九、结构体与共用体,三、指向结构体类型数据的指针,# include string.h main() struct student long in
30、t num; char name20; char sex; float score; ; struct student stu_1; struct student *p; p=,定义结构体变量 stu_1,定义结构体类型指针,P指向stu_1首地址,九、结构体与共用体,有了指向结构体变量的指针,对结构体变量中成员引用的三种方法: 1、结构体变量名.成员名 2、(*p).成员名 3、 p - 成员名,“*”号运算低于“.”运算,P-n+ +p-n (+p)-n,九、结构体与共用体,存储空间的动态分配和释放 New 运算符 (四种格式) 1、 = new ; 2、 = new (); 3、 = n
31、ew ; 4、 = new ; Delete 运算符 (两种格式) 1、delete ; 2、delete N ; /N可省略,九、结构体与共用体,四、用指针处理链表 链表结点的数据结构: struct node int data; node *next;/*特殊成员链接需要*/ ;,九、结构体与共用体,、链表的操作 (教材P171-176) 链表创建 结点插入 结点删除 链表输出 注意: 得到链表只要得到链首指针。 调用函数对已知链表实施操作只要传递链首指针 被调用函数一般都是返回指针值的函数,九、结构体与共用体,共用体 一、共用体变量的定义,union data char ch; floa
32、t f; int i ; ; data a,b,c;,union data char ch; float f; int i ; a,b,c;,union char ch; float f; int i ; a,b,c;,union data char ch10; float f; int b5 ; a;,占20个字节内存空间,九、结构体与共用体,二、共用体变量的引用 只可引用最低级成员共用体变量名.成员名 不能引用共用体变量,只能引用其成员。 出现在结构体的定义中。,#include stdio.h struct int num; char name10; char sex; char job
33、; union int class; char position10; category; person2;,同一内存段放不同类型成员,某一时刻只有一个即最后存放的成员起作用。,九、结构体与共用体,枚举类型 一、枚举类型定义和枚举变量: enum weekday sun,mon,tue,wed,thu,fri,sat day; 变量 day 只可取 sun 到 sat 之间的单个值 二、枚举类型的引用说明: 1、枚举元素是用户自定义的常量,不可赋值。 2、C语言按定义顺序使枚举元素的值为 0,1,2. 定义时可改变枚举元素的值,后继元素在其基础上顺序加1 enum week sun=1,mon
34、=7,tue wed fri sat day ; 3、枚举元素可进行比较,按定义时的顺序值来比较。 if ( day = = mon ). 4、枚举变量可赋值,但要注意类型。 day=(enum week) 2; day=tue; /*二者等价*/,九、结构体与共用体,用typedef 定义类型 概念: 用 typedef 定义新类型符号来替代已有的类型名。 注意:没有创建新类型。只定义了类型的别名。 定义:typedef 原类型名 新类型名; 方法:1、按定义变量的方法写定义体。 int i; 2、将变量名换成类型别名。 int count; 3、在最前面加typedef。 typedef int count; 4、用类型别名去定义变量 count,九、结构体与共用体,语言中几种数据类型的重新定义: typedef int NEW; typedef float NEW; typedef char NEW; typedef int NEW10; typedef int *NEW; typedef int (*NEW)(); typedef struct 类型标识符 成员名1 类型标识符 成员名2 . 类型标识符 成员名n DATE;,十、位运算,位运算符 右移 级 按位
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 承古开今学以致用:小学主题班会文化传承
- 运动健康:小学生体育教育的小学主题班会课件
- 客户服务评价反馈函3篇
- 企业员工培训与绩效评估标准方案
- 个人家中漏水紧急处理预案
- 教育培训机构课程设置与教育质量评估手册
- 电商运营人员打造爆款商品策略指南
- 诚信好习惯小学主题班会课件
- 项目经理时间管理高效执行指导书
- 珍惜时间养成习惯小学主题班会课件
- 我国牛病流行的现状及对策
- 20G361 预制钢筋混凝土方桩
- (MHT)中学生心理健康诊断测验
- GB/T 24437-2023假肢、矫形器配置机构的等级划分与评定
- 频波斜率鉴频电路设计
- 四川省成都市大邑县2023年数学五年级第二学期期末考试试题含解析
- 麻醉药品、第一类精神药品安全储存措施及管理制度
- 金属陶瓷基复合材料
- GB/T 17880.6-1999铆螺母技术条件
- 科孚德变频器prowind-uce故障排查方法
- 《消防安全技术实务》课本完整版
评论
0/150
提交评论