C语言试题、学习、考试大全33

上传人:zw****58 文档编号:52473603 上传时间:2018-08-22 格式:PPT 页数:171 大小:919KB
返回 下载 相关 举报
C语言试题、学习、考试大全33_第1页
第1页 / 共171页
C语言试题、学习、考试大全33_第2页
第2页 / 共171页
C语言试题、学习、考试大全33_第3页
第3页 / 共171页
C语言试题、学习、考试大全33_第4页
第4页 / 共171页
C语言试题、学习、考试大全33_第5页
第5页 / 共171页
点击查看更多>>
资源描述

《C语言试题、学习、考试大全33》由会员分享,可在线阅读,更多相关《C语言试题、学习、考试大全33(171页珍藏版)》请在金锄头文库上搜索。

1、面向对象程序设计教材:C+程序设计实践教程 光盘:学习指导、习题祥解、模拟试卷 出版:华中科技大学出版社 编著:马光志 讲授:华中科技大学计算机学院 马光志 1第1章 引论21.1 程序设计语言机器语言: 计算机自身可以识别的语言 汇编语言: 接近于机器语言的符号语言高级语言: 接近自然语言的程序设计语言,如ADA、C、PASCAL、FORTRAN、BASIC面向对象的语言:描述对象“特征”及“行为”的程序设计语言,如C+、SMALLTALK等面向对象基于组件的语言:面向对象且类型能成为组件的程序设计语言,如Java、C#等31.2 程序编译技术编译过程: 预处理、词法分析、语法分析、代码生成

2、、模块连接。预处理:通过#define宏替换和#include插入文件内容生成纯的不包含 #define和#include等的C或C+程序。词法分析:产生一个程序的单词序列。一个单词或词法单位可以是保 留字如if和for、标识符如sin、运算符如+、常量如5和 “abcd“等。语法分析:检查程序语法结构,例如if后面是否出现else。代码生成:生成低级语言代码如机器语言或汇编语言。C和C+语言 的标识符编译为低级语言标识符时会换名,C和C+的换名策略不一 样。模块连接:形成一个可执行的程序。静态连接是编译时由编译程序完 成的连接,动态连接是运行时由操作系统完成的连接。关于BC与VC: BC完全

3、支持国际标准, VC支持70%左右。编译器推荐 C+ builder 6.0。否则本书的例子有很多不能运行。4 预处理的例子: 假如stdio.h的文件内容如下:extern int scanf (const char *, ) ; extern int printf (const char *, ) ; 程序test.c的文件内容如下:#include #define pi 3.14void main ( ) printf (“area=%lf“, pi*5*5); 预处理的结果, 由test.c文件得到如下内容:extern int scanf (const char *, ) ; ext

4、ern int printf (const char *, ) ; void main ( ) printf (“area=%lf“, 3.14*5*5) ; 51.3 面向对象的语言及程序设计 纯OO型语言:程序全部由类构成。SMALLTALK、JAVA、 C#、OBJECT-ORIENTED PASCAL。 混合型OO语言:程序由类、过程或函数以及变量定义构成。C+、VB.NET。 面向对象程序设计经历系统分析、系统设计、对象设计和对象实现四个阶段。 系统分析最初建立对象模型、动态模型及功能模型,供其他阶段细化。其中对象模型最为重要,描述对象、类型之间的关系。 面向对象的分析与设计各阶段共

5、用上述三个模型,阶段之间的界限不是十分明显,能更好地支持软件工程的快速原型法。61.4 面向对象的基本概念 函数绑定:函数调用和函数入口关联的过程。 早期绑定:发生在程序开始执行以前,由编译程序静态连 接,或者由操作系统动态连接完成,将函数入口地址填写 到函数调用处。 晚期绑定:发生在程序执行过程中间,由程序自己完成。 对象:现实世界具体的或抽象的“事物”,经历产生、活动、 死亡等阶段。体育比赛的“运动员”和“赛局”分别为具体和抽 象的对象。 类:描述对象特征和行为的类型。有结构的类属于复杂类型 。简单类型和复杂类型变量 (对象) 初始化 (产生) 形式趋向统 一。 对象既可以是变量,也可以是

6、常量。就象简单类型既有变量 也有常量一样。统一起来,对象分为简单类型对象和复杂类 型对象。7 封装:将对象的“特征”和“行为”包装在一起,形成对象的类型定义,分别描述对象的“组织结构”和“功能”。封装定义了对象的边界,提供了外部访问的接口,屏蔽了对象的“行为”细节。 交互:直接交互指一对象调用另一对象的“操作”、“功能”或“函数”; 间接交互通过发送或监听消息完成。 C+程序的对象既可以直接交互,也可以通过操作系统提供的消息机制间接交互。 面向对象基于组件的语言可通过自己的事件、消息机制间接交互。8 重载 :一个函数名称用来定义完成不同功能的多个函数,参 数个数和类型随完成功能的不同而不同。将

7、运算符看作函数, 操作数就是-参数。-5和8-3分别是有一个和两个参数的减法 函数, 可记为operator- (int)、operator- (int, int) 。 多态:通过一个函数名调用函数表现出的不同行为。早期绑 定的多态是静态多态,晚期绑定的多态是动态多态。重载函 数表现的行为是静态多态,虚函数表现的行为是动态多态。 由此可见, 重载函数使用早期绑定,虚函数使用晚期绑定。“ 多态”一般指动态多态。 C+已经自嵌入地重载了简单类型运算函数,故不允许对简 单类型进行运算符重载。换言之,运算符重载函数的参数不 能都为简单类型,必须至少有一个参数代表对象。例如5、 83调用的是自嵌入的减法

8、运算重载函数 (函数名见上) 。重 载函数要么参数个数不同,要么参数类型不同。9 继承:一个对象获得另一个或多个对象的“特征”和“行为”, 从而实现了软件重用。例如,小孩长相象父母是获得父母“特征”,走路象父亲是获得父亲“行为”。 继承有取代继承、包含继承、受限继承和异化继承等方式。 抽象:一种抽象形式是从对象(事物)到类型(概念),另一种形式是从低级类型(概念) 到高级类型(概念)。从事物“张三”、“李四”抽象出“学生”的概念,从“学生”、“教师”的概念可抽象出“师生”的概念。 抽象类:抽象级别最高的类,无法描述具体特征和行为。例如,从“点”、“线”、“圆”抽象出“图形”的概念。无法说出“图

9、形”有何特征,也无法说明其绘图行为。101.5 C+语言的特点 C的超集,完全兼容C, 代码质量高、速度快。 多继承的强类型的混合型的OO语言。 支持面向对象的运算符重载:至少一个操作数的类型代表对象的类型。 提供函数模板和类模板等高级抽象机制。 支持面向对象的异常处理。 支持名字空间namespace。111.6 +的程序结构 支持C的注解/*/和C+新注解/到本行结束。 强类型要求变量和函数先声明再使用:printf等标准函数 必须先#include 再使用。 扩展名为.h的文件只应包含变量、函数的说明,其定义应 出现在扩展名为.cpp的程序文件里。 变量说明:extern int x;

10、/说明只含类型和名称 变量定义:int x, y=3; extern int z=4; /定义包括初值 函数说明:无函数体的原型声明,可无参数名。例如 :double sin (double) ; C+须说明extern “C“ long sum (int)以调用C的sum:编 译成低级语言后,C+和C的sum的低级语言名称相同。 类iostream对象cin通过函数输入、cout通过运算符函数完成输入 。就象+运算符一样, 可以自左至右连续运算。试比较变量 cin、x、y、z的运算:x+y+z; /x+y的和 (一个值) 再和z进行+运算。cinyz; /ciny的结果(为cin)再和z进行

11、运算。/等于ciny; cinz cin关于运算的结果为cin,cout关于和 extern int h=0; /C变量定义方式:常量表达式初始化 extern int i; /变量声明, C和C+都可先声明后定义 int i; /C定义方式, 初始化i=0 int j=i+printf (“ABC”); /C+方式:任意表达式。输出ABC static int p=j+sizeof printf (“ABC”); /C+方式:不输出ABC void main (void) static int n=j+5; /C+定义方式:任意表达式初始化int k, i=20; /C定义方式, k值随机f

12、or (int j=k+2; j#include overload GetTime; /本行可以省略long GetTime (void) return 1; long GetTime (int void main (void) int h, m, s; cout #include /如果函数同名, 可用单目:访问全局函数 struct STRING /定义存放字符串的类, 可用struct, classtypedef char *CHARPTR; /类型成员CHARPTR s; /数据成员,等价于char *s; int strlen ( ); /求串长,普通函数成员, 隐含this参数ST

13、RING (CHARPTR);/构造函数无返回类型,有thisSTRING( ) free(s); /析构函数无返回类型(有this),自动内联 ; / STRING:strlen必须用:限制strlen, 否则自递归 int STRING:strlen ( ) return :strlen (s); STRING:STRING (char *t) strcpy (s= (char *) malloc (:strlen (t)+1), t); struct STRING x (“simple“) ; /可省略struct, 自动调构造函数 void main ( ) STRING y (“co

14、mplex“), *z= /y自动调用构造函数int m=y.strlen ( )+z-strlen ( ); /返回前自动调y的析构函数,返回后自动调x的析构函数 38 构造函数和析构函数:是类封装的两个特殊函数成员,都有 类型固定(现为STRING *const this)的隐含参数this,没有返 回类型。 构造函数:函数名和类名相同。除this外,还可在参数表 定义其它参数。 析构函数:函数名和类名同且带,不能在参数表显式定 义任何参数。 如果类没有自定义构造函数和析构函数,则C+为类提供缺 省的参数表无参的构造函数和析构函数。 构造函数用来产生对象,为对象申请资源,初始化数据成员 。

15、可在参数表显式定义参数,通过参数变化实现重载。 析构函数用来毁灭对象,释放对象申请的资源。析构函数的 参数this类型固定,且参数表不能显式定义参数,故无法通 过参数变化重载析构函数。39 构造函数在定义变量 (对象)或通过new产生对象时被自动调用一次,是唯一不能被手动调用函数成员。 析构函数在变量 (对象)的生命期结束时被自动调用一次,通 过new产生的对象需要用delete手动释放(调用析构)。析构函数可被手动反复调用。有些资源是不能反复析构的,例如不 能反复关闭文件,因此,必要时要防止对象反复释放资源。 全局变量 (对象) :main执行之前由开工函数调用构造函数, main执行之后由收工函数调用析构函数。 局部自动对象 (非static变量) :在当前函数内定义时自动调用 构造函数, 在当前函数正常返回时自动调用析构函数。 局部静态对象 (static变量) :定义时自动调用构造函数, main执行之后由收工函数调用析构函数。 常量对象:在当前表达式语句定义时自动调用构造函数,语 句结束时自动调用

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号