
中央广播电视大学计算机科学与技术专业 面向对象程序设计课程考核说明(2006年版) 一、考核说明 《面向对象程序设计》误程是电大系统计算机科学与技术专业木科生(专科起点)的一 门必修课程。本误程是数据结构,操作系统,计算机网路、软件工程等的先修误程,在整个 专业教学体系中占据非常重要的基础地位。本课程主要介绍C+语言的基本语法规则,各种 数据类型的定义、表示和使用,各种流程控制语句的定文与作用,类和对象的定义与应用, 面向过程和面向对象的程序设计方法等内容, 面向对象的思想是无要在实我中不断模索和体会的,学生们在后续课的学习和以后的工 作中要主动去运用和实践,教学的主要目标是让学生能够建立起思考问思的方法,指导以后 的数件开发实置。 现将该误程考核的有美问题说明如下: 1.考核对象全国电大系统开放散育试点计算机科学与技术专业(专科起点本料)学生。 2。教学煤体 文字主教材《C+面向对象程序设计》王裨编著清华大学出版社出版 实验教材《面向对象程序设计实验》徐孝凯等编中央广播电视大学出版杜出版 录象教材16博王弹主讲中央广播电视大学音像出版社出版 复习资料《面向对象程序设计期末复习指导》中央电大教育杂志杜出版发行 作业练习《面向对象程序设计形成性考核作业帮》中央电大教育杂志社出版发行 网上辅导在电大在线计算机科学与技术《面向对象程序设计》误程网页上发表 3.命恩依凝 本考核说明以电大计算机科学与技术专业《面向对象程序设计教学大纲为依据编制。 本考核说明是考试命题的依据。 4,考核要求 本课程是以实用为最终目的,主要考核学生对C一语言的掌握程度和对解读一般问愿的 程序设计能力。不要死记硬青,注重理解和运用。考核分为以下几个层次 莲解:要求学生理解面向过程和面向对象程序设计的基本思想和方法,理解C+语言程 序的基本结构。理解各种C+语法成分定义,表示和作用。 应用:要求学生能够根据所学的C+语言知识和程序设计知机。分析和理解一般的程序 成函数模块或类横块,能够根据处理简单问愿的要求编写出较规范的井且可读性好的面向过 程成面向对象的函数核块或程序, 综合应用:要求学生能够综合运用多个知识点进行比较复条的程序(函数根块)分析和 设计,考察学生综合运用知识的能力和实际解决问题的能力。 5.命题原则 (》在教学大钢和考核说明所规定的知识范围内命题。在教学知识范围之内,需要灵活 运用才能够解决问题的试题不属于超解。 2)试题的考察要求覆盖面广、区分度高。 3)试题兼顺各个能力层次,理解约占40%,应用约占40%,综合应用约占20%. (4)试思的难易程度和题量还当,按难易程度分为四个层次:容易占2膺,较易占30%. 较难占%。难占2%。题量安排以平时能够独立完成作业者。整在规定的考试时间内做完 并有一定时阿检查为原则
1 中央广播电视大学计算机科学与技术专业 面向对象程序设计课程考核说明(2006 年版) 一、考核说明 《面向对象程序设计》课程是电大系统计算机科学与技术专业本科生(专科起点)的一 门必修课程。本课程是数据结构、操作系统、计算机网络、软件工程等的先修课程,在整个 专业教学体系中占据非常重要的基础地位。本课程主要介绍 C++语言的基本语法规则,各种 数据类型的定义、表示和使用,各种流程控制语句的定义与作用,类和对象的定义与应用, 面向过程和面向对象的程序设计方法等内容。 面向对象的思想是需要在实践中不断摸索和体会的,学生们在后续课的学习和以后的工 作中要主动去运用和实践。教学的主要目标是让学生能够建立起思考问题的方法,指导以后 的软件开发实践。 现将该课程考核的有关问题说明如下: 1. 考核对象 全国电大系统开放教育试点计算机科学与技术专业(专科起点本科)学生。 2.教学媒体 文字主教材《C++面向对象程序设计》 王萍编著 清华大学出版社出版 实验教材《面向对象程序设计实验》 徐孝凯等编 中央广播电视大学出版社出版 录象教材 16 讲 王萍主讲 中央广播电视大学音像出版社出版 复习资料 《面向对象程序设计期末复习指导》中央电大教育杂志社出版发行 作业练习 《面向对象程序设计形成性考核作业册》 中央电大教育杂志社出版发行 网上辅导 在电大在线计算机科学与技术《面向对象程序设计》课程网页上发表 3. 命题依据 本考核说明以电大计算机科学与技术专业《面向对象程序设计教学大纲》为依据编制。 本考核说明是考试命题的依据。 4. 考核要求 本课程是以实用为最终目的,主要考核学生对 C++语言的掌握程度和对解决一般问题的 程序设计能力。不要死记硬背,注重理解和运用。考核分为以下几个层次: 理解:要求学生理解面向过程和面向对象程序设计的基本思想和方法,理解 C++语言程 序的基本结构,理解各种 C++语法成分定义、表示和作用。 应用:要求学生能够根据所学的 C++语言知识和程序设计知识,分析和理解一般的程序 或函数模块或类模块,能够根据处理简单问题的要求编写出较规范的并且可读性好的面向过 程或面向对象的函数模块或程序。 综合应用:要求学生能够综合运用多个知识点进行比较复杂的程序(函数模块)分析和 设计,考察学生综合运用知识的能力和实际解决问题的能力。 5. 命题原则 (1) 在教学大纲和考核说明所规定的知识范围内命题。在教学知识范围之内,需要灵活 运用才能够解决问题的试题不属于超纲。 (2) 试题的考察要求覆盖面广、区分度高。 (3) 试题兼顾各个能力层次,理解约占 40%,应用约占 40%,综合应用约占 20%。 (4) 试题的难易程度和题量适当,按难易程度分为四个层次:容易占 20%,较易占 30%, 较难占 30%,难占 20%。题量安排以平时能够独立完成作业者,能在规定的考试时间内做完 并有一定时间检查为原则

6.试题思型 单项选择愿:根据题意,从四种可选择的答案中选择合适的一种答案。 填空题:根据题意。在五有横线成空白处填写合适内容。 程序填充短:根据C++程序成函数(类)颅块。及相应的功能描运,在面有碳线成空白 处填写合适内容。 避解问答题:根据C+程序或函数(类)棱块。国答一些问题。如写出程序运行结果域 函数调用结果,写出程序或橘数所能实现的功能,按题意要求指出错误位置并改正, 编程题:给出编程要求和函数原型,编写出相应的程序威函数核块。 7,考核形式: 采用期末考核与形成性考核相结合的方式。形成性考核分为两种,一种视作业完成情况 和实验完成情况而定。占总成锁的15%:另一种为期末上机考核,占总成境的15%,完成 一个蛋定题目的程序开发和调试,由各省级电大在省内统一命题。时间为60分钟:期末考 核占总成领的0%,为闭卷等试,由中央电大统一命题,答鞋时限从2006年下学期开始为 120分钟。总成境满分为100分,合成成镜达60分及以上者可获得该课程线定的4学分, 否则不获得该课程学分。 二、考核内容和要求 第一部分程序授计基阳 考核日的: 考核学生对C一程序结构、程序运行过程、各种数据类型的作用、数据常量表示、表达 式构成、运算符含义、简单语句和复合语句格式等的拿握程度。 考核的知识点: C+语言转点和程序的甚本结构。 上机输入,编辑、莲接、运行一个C+程序的过程。 整数、字符、实数、逐辑等标准数据类型的含义。 各种常量的字面表示和符号表示,变量的定义与使用。 常用运算符的表示、优先领与结合性, 表达式的分类和使用。 考核要求: 理解:C+语言的有关甚本概么、程序结构、数据类型的分类与作用、常量和变量的表 示、运算符含义、表达式构成与运算等内容。 应用:能够编写简单的程序,能完成简单数据和表达式的输入和输出。能利用变量存放 输入数据、略时数据和计算结果,能利用符号常量存放固定数据,旋根据数值计算和数据处 理的要求选释合适的常量或变量表示,能利用运算符选行算术、比较(即关系)和爱辑运算, 能把一般数学算式、不等式或条件表示成相应的C+表达式。 第二部分流程控制语句与程序模块的基本结构 考核日的: 考核学生对各钟分支语句、循环语句和跳转类语句的理解和掌挥程度,对程序根块的测 序、分支和循环这三种基本结构的理解程度,对运用流程控制语句编写程序解决实际问题的 能力: 考核的知识点: 下列各种挖制语句的定义格式、执行过程与作用: if语句、switch语句、far语句、hile语句、do语句、break语句、continue语句、 2
2 6. 试题题型 单项选择题:根据题意,从四种可选择的答案中选择合适的一种答案。 填空题:根据题意,在画有横线或空白处填写合适内容。 程序填充题:根据 C++程序或函数(类)模块,及相应的功能描述,在画有横线或空白 处填写合适内容。 理解问答题:根据 C++程序或函数(类)模块,回答一些问题。如写出程序运行结果或 函数调用结果,写出程序或函数所能实现的功能,按题意要求指出错误位置并改正。 编程题:给出编程要求和函数原型,编写出相应的程序或函数模块。 7. 考核形式: 采用期末考核与形成性考核相结合的方式。形成性考核分为两种,一种视作业完成情况 和实验完成情况而定,占总成绩的 15%;另一种为期末上机考核,占总成绩的 15%,完成 一个指定题目的程序开发和调试,由各省级电大在省内统一命题,时间为 60 分钟。期末考 核占总成绩的 70%,为闭卷考试,由中央电大统一命题,答卷时限从 2006 年下学期开始为 120 分钟。总成绩满分为 100 分,合成成绩达 60 分及以上者可获得该课程规定的 4 学分, 否则不获得该课程学分。 二、考核内容和要求 第一部分 程序设计基础 考核目的: 考核学生对 C++程序结构、程序运行过程、各种数据类型的作用、数据常量表示、表达 式构成、运算符含义、简单语句和复合语句格式等的掌握程度。 考核的知识点: C++语言特点和程序的基本结构。 上机输入、编辑、连接、运行一个 C++程序的过程。 整数、字符、实数、逻辑等标准数据类型的含义。 各种常量的字面表示和符号表示,变量的定义与使用。 常用运算符的表示、优先级与结合性。 表达式的分类和使用。 考核要求: 理解:C++语言的有关基本概念、程序结构、数据类型的分类与作用、常量和变量的表 示、运算符含义、表达式构成与运算等内容。 应用:能够编写简单的程序,能完成简单数据和表达式的输入和输出,能利用变量存放 输入数据、临时数据和计算结果,能利用符号常量存放固定数据,能根据数值计算和数据处 理的要求选择合适的常量或变量表示,能利用运算符进行算术、比较(即关系)和逻辑运算, 能把一般数学算式、不等式或条件表示成相应的 C++表达式。 第二部分 流程控制语句与程序模块的基本结构 考核目的: 考核学生对各种分支语句、循环语句和跳转类语句的理解和掌握程度,对程序模块的顺 序、分支和循环这三种基本结构的理解程度,对运用流程控制语句编写程序解决实际问题的 能力。 考核的知识点: 下列各种控制语句的定义格式、执行过程与作用: if 语句、switch 语句、for 语句、while 语句、do 语句、break 语句、continue 语句

return语句等。 各种分支和循环语句相互嵌套的作用和执行过程。 考核要求: 理解:各种语句的格式、执行过程与作用,语句之何相互嵌套的概念, 应用, (》能够分析含有i「和switch分支类语句的程序模块并给出功饶或执行结果,能够按 照分支处理的要求编写出相应的分支程序。 2能够分析含有fo、hi1e和b循环类语句的程序模块并给出功能或执行结果,能 够按飄循环处理的要求编写出相应的循环程序,如累加计算、数据统计,求最大值、求平均 值等程序, 3》能够实观ir和switch语句之间的转换,能够实现for、hi1e和o循环语句之间 的转换。 综合应用:运用各种流程控制语句和其他语句等已有知识进行比较复杂的程序分析与设 计,如双重或三重循环的程序分析与设计。 第三部分陆数 考核目的: 考核学生对变量作用域的理解程度,对函数定义与调用格式的拿深程度,对形式参数和 实在参数的使用与结合的理解程度。对核块化程序设计方法的拿握程度。 考核的知识点, 模块化程序设计的概之,多文件结构的程序。 函数的定义、声明与调用格式。静老函数的含义。 函数定文中值参数、指针参数、数组参数、引用参数、常量参数的声明格式及作用: 函数中梦默认值参数的说明与作用。 两数调用中的实参与函数定义中的形参之间的结合过程。 函数返日值的一般类型、指针类型和引用类型的作用, 变量的作用规和生存期。静老变量的特点。 内联函数的定义格式及作用。 运归函数的设计方法和调用过程, 函数重载的含久和作用。 函数核板的定复格式及作用, 考核要求: 理解: (》视块化程序设计与函数的关系,函数的定义格式与声明格式,函数调用表达式的格 式及执行过程,带默认值参数的含义与用法。 2)全同变量、局部变量、静态变量的含义。 (③)》内联函数和函最模板的定义与声明格式。函数模板的实例化,重载函数的作用。 应用 《们》能够分析已知函数,给出所能实现的功能或运行结果 2公能够根据处理何恶的看要合弄地设置函数参量。函数的返回值类型以及编写出函题 体。 3)》利用递归函数来简化程序设计。 )利用函数重载来优化程序设计 ⑤)利用函数模板来设计能够处理任何数据类型的程序。 第四部分数组、结构、指针和引用
3 return 语句等。 各种分支和循环语句相互嵌套的作用和执行过程。 考核要求: 理解:各种语句的格式、执行过程与作用,语句之间相互嵌套的概念。 应用: (1) 能够分析含有 if 和 switch 分支类语句的程序模块并给出功能或执行结果,能够按 照分支处理的要求编写出相应的分支程序。 (2) 能够分析含有 for、while 和 do 循环类语句的程序模块并给出功能或执行结果,能 够按照循环处理的要求编写出相应的循环程序,如累加计算、数据统计、求最大值、求平均 值等程序。 (3) 能够实现 if 和 switch 语句之间的转换,能够实现 for、while 和 do 循环语句之间 的转换。 综合应用:运用各种流程控制语句和其他语句等已有知识进行比较复杂的程序分析与设 计,如双重或三重循环的程序分析与设计。 第三部分 函数 考核目的: 考核学生对变量作用域的理解程度,对函数定义与调用格式的掌握程度,对形式参数和 实在参数的使用与结合的理解程度,对模块化程序设计方法的掌握程度。 考核的知识点: 模块化程序设计的概念,多文件结构的程序。 函数的定义、声明与调用格式,静态函数的含义。 函数定义中值参数、指针参数、数组参数、引用参数、常量参数的声明格式及作用; 函数中带默认值参数的说明与作用。 函数调用中的实参与函数定义中的形参之间的结合过程。 函数返回值的一般类型、指针类型和引用类型的作用。 变量的作用域和生存期,静态变量的特点。 内联函数的定义格式及作用。 递归函数的设计方法和调用过程。 函数重载的含义和作用。 函数模板的定义格式及作用。 考核要求: 理解: (1) 模块化程序设计与函数的关系,函数的定义格式与声明格式,函数调用表达式的格 式及执行过程,带默认值参数的含义与用法。 (2) 全局变量、局部变量、静态变量的含义。 (3) 内联函数和函数模板的定义与声明格式,函数模板的实例化,重载函数的作用。 应用: (1) 能够分析已知函数,给出所能实现的功能或运行结果。 (2) 能够根据处理问题的需要合理地设置函数参数、函数的返回值类型以及编写出函数 体。 (3) 利用递归函数来简化程序设计。 (4) 利用函数重载来优化程序设计。 (5) 利用函数模板来设计能够处理任何数据类型的程序。 第四部分 数组、结构、指针和引用

考核目的: 考核学生对数组、字粹串、结构、指针、引用等数据类型的理解和拿据程度。 考核的知识点: 一推数组的:念、定义和初始化。 二推及多推数组的概之、定义和初始化 一推和二维数组元素的下标访问方式, 字符串与字符数组的区别与联系。字符串的输入与输出 常用字符串函数(如strlen,strc防,strc国,streat等)的调用格式与作用. 结构类型的定义格式和作用。结构变量的定义格式和初始化: 结构成员的表示和使用。 指针的概之、定复及初始化 针对指针的各种运算操作。 数组名的指针含义,数组元素的下标与指针方式的表示及转换。 数组形参与指针形参之间的等价表示与转换。 引用的定义和初始化,引用参数与值参数的区别 一般变量与数组的存储空何的动态分配与释政。 考核要求: 理解: (》数组、字符串、结构、指针、引用等的辰念、表示和作用。 2)数组的存储空间分配,数组元素的地址计算,数组元素的下标访何方式和指针访同 方式. 3)字符申的存储格式,字符申的输入输出方式,字符串函数的调用 ()数据空间的动态分配与释放,链表的结构与访冈结点的过程。 应用: (》能够分析和设计在一维数组上的顺序查找、选择排序、插入排序等算法 2能够分析和设计在二维数组上的矩库加、减、转置,乘等运算的算法。 (3)能够分析和设计利用字符申函数透行字符串处理的算法。 ()能够分析和设计动老生成的链表,在链表头成尾新入成副除结点的算法,以及追历 岐表的算法 5)能够分析和设计对顺序或桥接表本的栈或风列进行插入或除元素(结点)的算法: ()能够使用明用类型作为函数的参数类型和赵国值类型。 综合应用:运用数组、字符串、结构、指针、引用等数据类型进行程序设计。 第五部分类与对象 考核目的: 考核学生对类这种复柔数据类型的理解和运川程度,对由向对象程序设计方法的拿挥程 度。 考被的知识点, 面向对象程序设计的概念。 类的定文,类与结构的区别和联系。 类成员的访问控制与访问方式。 内联与内联成员函数的声明与定义。 对象的生成和初始化, 类的作月域
4 考核目的: 考核学生对数组、字符串、结构、指针、引用等数据类型的理解和掌握程度。 考核的知识点: 一维数组的概念、定义和初始化。 二维及多维数组的概念、定义和初始化。 一维和二维数组元素的下标访问方式。 字符串与字符数组的区别与联系,字符串的输入与输出。 常用字符串函数(如 strlen,strcpy,strcmp,strcat 等)的调用格式与作用。 结构类型的定义格式和作用,结构变量的定义格式和初始化。 结构成员的表示和使用。 指针的概念、定义及初始化。 针对指针的各种运算操作。 数组名的指针含义,数组元素的下标与指针方式的表示及转换。 数组形参与指针形参之间的等价表示与转换。 引用的定义和初始化,引用参数与值参数的区别。 一般变量与数组的存储空间的动态分配与释放。 考核要求: 理解: (1) 数组、字符串、结构、指针、引用等的概念、表示和作用。 (2) 数组的存储空间分配,数组元素的地址计算,数组元素的下标访问方式和指针访问 方式。 (3) 字符串的存储格式,字符串的输入输出方式,字符串函数的调用。 (4) 数据空间的动态分配与释放,链表的结构与访问结点的过程。 应用: (1) 能够分析和设计在一维数组上的顺序查找、选择排序、插入排序等算法。 (2) 能够分析和设计在二维数组上的矩阵加、减、转置、乘等运算的算法。 (3) 能够分析和设计利用字符串函数进行字符串处理的算法。 (4) 能够分析和设计动态生成的链表,在链表头或尾插入或删除结点的算法,以及遍历 链表的算法。 (5) 能够分析和设计对顺序或链接表示的栈或队列进行插入或删除元素(结点)的算法。 (6) 能够使用引用类型作为函数的参数类型和返回值类型。 综合应用:运用数组、字符串、结构、指针、引用等数据类型进行程序设计。 第五部分 类与对象 考核目的: 考核学生对类这种复杂数据类型的理解和运用程度,对面向对象程序设计方法的掌握程 度。 考核的知识点: 面向对象程序设计的概念。 类的定义,类与结构的区别和联系。 类成员的访问控制与访问方式。 内联与非内联成员函数的声明与定义。 对象的生成和初始化。 类的作用域

类的构造函数与析构函数。 类的拷明构造函数和队值重载函数。 静态数据成员和静态成员函数。 对象成员和一般成员的初始化方式 友元函数与友元类 this折针, 用数组和链表实现队列类和找类。 考核要求: 理解: (》面向对象程序设计的有关概多。 2类的定义,类成员的请月权限,构迹函数与析构函数的定义格式及作用 (3)静志数据成员定复,初始化与作用,静态函数成员的定义格式与特性。 (4)友元函数和友元莞的声明与作用。 应川: (1》能够分析和设计含有简单类定义的程序。 2)能够使用数组或链表建立队列类和栈类。 综合应用: (》能够根据程序要求构造满足要求的类。在构迹过程中充分考内造函数和析构函题 的使用、成员访问控制的运用、内联函数的运用、静态成员的选用。 2》能够根据要求构造多个类完成所要求的程序设计任务,多个类之间可以发生一定的 关系,如一个类作为另一个类的成员或友元、一个类使用另一个类的服务等。 第大部分继承与多志性 考核目的: 考核学生对面向对象机制(封装、雏承和多态)的理解和拿握程度。 考核的知识点: 结构化程序设计和面向对象程序设计思想的不同。 推承(单鞋承与多燃承)的含义,派生类的定义和使用, 深生类中构造函数和析构函数的执行过程。 对派生类和基类中同名成员的访问方式。 静态服编与动态眠编的各自的含义和区别: 静态联编与函数重载,动态联编与虚函数,多态性。 虚基类,抽象类,纯虚函数。 考核要求 理解: (》类雕承的概念和作用,深生类的定义格式。 2)派生类对基类的继承方式。派生类对基类成员的访问权限。 (③)静杏联编和动态联编的含义,函数重载和虚函数的作用。 应用: (》能分析含有最生类的程序 2)》能够根据要求构造类的继承层次,并完成一定的程序设计。 综合应用:能够利用藤承、虚函数、动态联编(即多态性)等机制完成面向对象的程序 设计。 第七部分运算符重毅 考核目的:
5 类的构造函数与析构函数。 类的拷贝构造函数和赋值重载函数。 静态数据成员和静态成员函数。 对象成员和一般成员的初始化方式。 友元函数与友元类。 this 指针。 用数组和链表实现队列类和栈类。 考核要求: 理解: (1) 面向对象程序设计的有关概念。 (2) 类的定义,类成员的访问权限,构造函数与析构函数的定义格式及作用。 (3) 静态数据成员定义、初始化与作用,静态函数成员的定义格式与特性。 (4) 友元函数和友元类的声明与作用。 应用: (1) 能够分析和设计含有简单类定义的程序。 (2) 能够使用数组或链表建立队列类和栈类。 综合应用: (1) 能够根据程序要求构造满足要求的类。在构造过程中充分考虑构造函数和析构函数 的使用、成员访问控制的运用、内联函数的运用、静态成员的选用。 (2) 能够根据要求构造多个类完成所要求的程序设计任务,多个类之间可以发生一定的 关系,如一个类作为另一个类的成员或友元、一个类使用另一个类的服务等。 第六部分 继承与多态性 考核目的: 考核学生对面向对象机制(封装、继承和多态)的理解和掌握程度。 考核的知识点: 结构化程序设计和面向对象程序设计思想的不同。 继承(单继承与多继承)的含义,派生类的定义和使用。 派生类中构造函数和析构函数的执行过程。 对派生类和基类中同名成员的访问方式。 静态联编与动态联编的各自的含义和区别。 静态联编与函数重载,动态联编与虚函数,多态性。 虚基类,抽象类,纯虚函数。 考核要求: 理解: (1) 类继承的概念和作用,派生类的定义格式。 (2) 派生类对基类的继承方式,派生类对基类成员的访问权限。 (3) 静态联编和动态联编的含义,函数重载和虚函数的作用。 应用: (1) 能分析含有派生类的程序。 (2) 能够根据要求构造类的继承层次,并完成一定的程序设计。 综合应用:能够利用继承、虚函数、动态联编(即多态性)等机制完成面向对象的程序 设计。 第七部分 运算符重载 考核目的:

考核学生对运算符重载的理解和掌挥程度 考核的知识点: 运算符重载的概念与函数定文格式 一般函数的运算符重载和成员函数的运算符重载。 引用在运算符重载中的作用。 作为友元函数的运算符重载。 单目和双目算术运算符的重载。 增1和减1运算符的重载。 插入运算符和抽取运算符的重载。 圆括号运算符和中括号运算符作为成员函数的重载。 考核要求: 理解: )运算符重载的概之及作用。 2引用在运算符重载中的作用。 3)运算符重载作为一眼函数和成员函数在参数上的区别: 应用:能够分析和设计带有运算符重我的函数或类。 三、期末考核试题样例及解答 一、单项选择 1.C+源程序文件的缺省扩展名为()。 A.cpp Be直e C.obj D.lik 2x>01川y=5的相反表达式为(). A.x(-0 I y!-5 且.x(-0My1-5 C.0 y!-5 D.x)0&y=5 &在下面的字符数组定义中,有语法错误的是(): A.char a[20]="abedefg": B.char al]="xty=55.: C.char a[l5]; D.char a[l0]=5: 4.以下正确的函数原型语句是(), A.double fun(int x,int y) B.double fun(int x:int y) C.double fun(int,int): D.double fun(int x,y): 5在下面存销类中,(》的对象不是局部变量。 A.外部静态类且自动类C.函数形参 D.寄存器类 假定有“struet B00K{char titlel40]:float price::B00 K *book=new00K:", 则正确的语句是()。 A.strepy (book->title,"Wang Tao")B.strepy(book.title,"Wang Tao") C.strepy (*book.title,"Wang Tao")D.strepy ((book)->title,Wang Tao") 7.款件产品所具有的全部或部分地再用干所的应用的能力称为该软作的(》。 A,可维护性B可复用性C,兼容性D,正确性 8在多文件结构的程序中,通常把含有园in0函数的文件称为(). A.主文件 B实现文件 C.程序文件 D.头文件 9.在一个用硅表实现的队列类中,假定每个结点包含的值城用1e表示,包含的指针 6
6 考核学生对运算符重载的理解和掌握程度。 考核的知识点: 运算符重载的概念与函数定义格式。 一般函数的运算符重载和成员函数的运算符重载。 引用在运算符重载中的作用。 作为友元函数的运算符重载。 单目和双目算术运算符的重载。 增 1 和减 1 运算符的重载。 插入运算符和抽取运算符的重载。 圆括号运算符和中括号运算符作为成员函数的重载。 考核要求: 理解: (1) 运算符重载的概念及作用。 (2) 引用在运算符重载中的作用。 (3) 运算符重载作为一般函数和成员函数在参数上的区别。 应用:能够分析和设计带有运算符重载的函数或类。 三、期末考核试题样例及解答 一、单项选择 1. C++源程序文件的缺省扩展名为( )。 A. cpp B. exe C. obj D. lik 2. x>0 || y==5 的相反表达式为( )。 A. x0 || y!=5 D. x>0 && y==5 3. 在下面的字符数组定义中,有语法错误的是( )。 A. char a[20]=“abcdefg”; B. char a[]=“x+y=55.”; C. char a[15]; D. char a[10]=’5’; 4. 以下正确的函数原型语句是( )。 A. double fun(int x,int y) B. double fun(int x;int y) C. double fun(int,int); D. double fun(int x,y); 5. 在下面存储类中,( )的对象不是局部变量。 A. 外部静态类 B. 自动类 C. 函数形参 D. 寄存器类 6. 假定有“struct BOOK{char title[40]; float price;}; BOOK *book=new BOOK;”, 则正确的语句是( )。 A. strcpy(book->title,”Wang Tao”); B. strcpy(book.title,”Wang Tao”); C. strcpy(*book.title,”Wang Tao”); D. strcpy((*book)->title,”Wang Tao”); 7. 软件产品所具有的全部或部分地再用于新的应用的能力称为该软件的( )。 A. 可维护性 B. 可复用性 C. 兼容性 D. 正确性 8. 在多文件结构的程序中,通常把含有 main()函数的文件称为( )。 A. 主文件 B. 实现文件 C. 程序文件 D. 头文件 9. 在一个用链表实现的队列类中,假定每个结点包含的值域用 elem 表示,包含的指针

域用next表示,硅队的队首指针用elenHead表示,队尾指针用elenTai】表示,若桂队为 空,则进行橘入时必须把新结点的地址味给()。 A.elerHead B.elenTail C,elerHead和elenTail D.elertead或elenTail 10.假定B为一个类,则执行“B品,b(2,c[3】],p-a:语句时共调用该类无参构 造函数的次数为(》。 A.5 B.8C3D.4 11,引入友元的主要目的是为了()。 A,增强数据安全性 B,提高程序的可靠性 C.提高程序的效率和灵活性D.保证类的封装性 12.如果是类目在类A的基础上构造,那么,就称(), A.受A为基类成父类,类B为如类或子类 B,类A为基类,父类或超类,类B为深生类或子类 C,类A为派生类,类B为基类 D.类A为藏生类或子类,类B为基类、父类或超类 二、填空 L.C+语言是在 语言的基陆上发展起来的。 2假定-5,-6,则执行表达式y=x+计算后,x和y的值分别为 和 3假定x是一个逻辑量,即x AA false的值为 4。在f语句中,每个els0关键字与它前面同层次并且最接近的 关键字相配 套。 5一个二维字符数组a[10][20]能够存铺个字符串,每个字符串的长度至多 为 6局部变量具有局部生存期,存放在内存的 区中。 7.假定p所指对象的值为25,+1所指对象的值为2。则执行*(p+)或和+运算后, p所指对象的值为 &己知语句“coutbc(y)表达式调用一个成员函数,在成员函数中使用的 就代表 了类外的p指针。 11,当用户为一个类定义有 时,则系饶不会为该类再自动生成一个欧认构 造函数。 I2.段定用户为类B定文了一个构迹函数“B(imta,int bb):a(aa),bb)0°,则 定义该类的对象时,有种定义格式。 13.假定用户只为类8定义了一个构造函数B(int aa,1ntbb-)a=aa:b地:》”, 则定文该类的对象时。其实参表中至少箭有 个实参, 14,在重载一个单目运算符时,参数表中没有参数。说明该运算符函数只能是类的 15,若要保正一个公共的基类在深生类中只产生一个基类子对象,则必须都以 的方式雅承它
7 域用 next 表示,链队的队首指针用 elemHead 表示,队尾指针用 elemTail 表示,若链队为 空,则进行插入时必须把新结点的地址赋给( )。 A. elemHead B. elemTail C. elemHead 和 elemTail D. elemHead 或 elemTail 10. 假定 AB 为一个类,则执行 “AB a, b(2), c[3], *p=&a;”语句时共调用该类无参构 造函数的次数为( )。 A. 5 B. 6 C. 3 D. 4 11. 引入友元的主要目的是为了( )。 A. 增强数据安全性 B. 提高程序的可靠性 C. 提高程序的效率和灵活性 D. 保证类的封装性 12. 如果是类 B 在类 A 的基础上构造,那么,就称( )。 A. 类 A 为基类或父类,类 B 为超类或子类 B. 类 A 为基类、父类或超类,类 B 为派生类或子类 C. 类 A 为派生类,类 B 为基类 D. 类 A 为派生类或子类,类 B 为基类、父类或超类 二、填空 1. C++语言是在_________语言的基础上发展起来的。 2. 假定 x=5,y=6,则执行表达式 y*=x++计算后,x 和 y 的值分别为__________和 __________。 3. 假定 x 是一个逻辑量,则 x && false 的值为__________。 4. 在 if 语句中,每个 else 关键字与它前面同层次并且最接近的________关键字相配 套。 5. 一个二维字符数组 a[10][20]能够存储________个字符串,每个字符串的长度至多 为________。 6. 局部变量具有局部生存期,存放在内存的____________区中。 7.假定 p 所指对象的值为 25,p+1 所指对象的值为 42,则执行*(p++)或*p++运算后, p 所指对象的值为________。 8. 已知语句“coutabc(y)表达式调用一个成员函数,在成员函数中使用的________就代表 了类外的 p 指针。 11.当用户为一个类定义有____________时,则系统不会为该类再自动生成一个默认构 造函数。 12.假定用户为类 AB 定义了一个构造函数"AB(int aa, int bb):a(aa),b(bb){}",则 定义该类的对象时,有________种定义格式。 13.假定用户只为类 AB 定义了一个构造函数"AB(int aa, int bb=0) {a=aa; b=bb;}", 则定义该类的对象时,其实参表中至少带有_________个实参。 14. 在重载一个单目运算符时,参数表中没有参数,说明该运算符函数只能是类的 _____________。 15. 若要保证一个公共的基类在派生类中只产生一个基类子对象,则必须都以 ____________的方式继承它

三、程序填充。对程序、函数成类中划有横线的位置,根据题意按标号把合适的内容填 号到程序下面相应标号的后面 1。把从健盘上输入的一个大于等于3的整数分解为质因子的乘积。如输入24时得到的 输出结果为“2223”,输入0时得到的输出结果为“255”,输入37时得到的输出结果 为“37. #include void main int x: 60utx;while((1)_) int [2: do hi1e(2))( cout(idata=(2)_: p>next"L: (3) i计: 1) 8
8 三、程序填充。对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填 写到程序下面相应标号的后面 1. 把从键盘上输入的一个大于等于 3 的整数分解为质因子的乘积。如输入 24 时得到的 输出结果为“2 2 2 3”,输入 50 时得到的输出结果为“2 5 5”,输入 37 时得到的输出结果 为“37”。 #include void main() { int x; cout>x; while(___(1)___); int i=2; do{ while(___(2)___) { coutdata=___(2)___; p->next=L; ___(3)___; i++; } } (1)

20 3) 3已知一个利用数组实现栈的类定文如下: const int ARRAY_SIZE=10: class Stack( public: void Init(){top=-1:) /初始化栈为空 void Push(int newElem); /白钱中压入一个元素 int Pop(: /从栈项弹出一个元素 bool Enpty0【/判栈空 return top=-1: int Depth0{return top+l:}/返回栈的深度 oid Print0:/按展后进先出原则依次输出栈中每个元素, /直到栈空为止 private: int elem[AR院AY_SIE]::/用于保存栈元素的数组 int top: /指明钱项元素位置的折针 : void Stack:Push(int nevElem) if((1))( cout(钱满!(endl: exit(1):/中止运行 (20 elen[top]-_(3)_: (1) 2 3 四、写出程序或程序现的运行结果 1.#include void mainO int x=5: switch2*x-3)【 case4:cout(x<《:F: case7:c0ut(2*x+1(·: case10:cout(3+x-l<《'·:break: default:cout<<'default"<<endl: 9
9 (2) (3) 3. 已知一个利用数组实现栈的类定义如下: const int ARRAY_SIZE=10; class Stack { public: void Init() {top=-1;} //初始化栈为空 void Push(int newElem); //向栈中压入一个元素 int Pop(); //从栈顶弹出一个元素 bool Empty() { //判栈空 return top==-1; } int Depth() {return top+1;} //返回栈的深度 void Print(); //按照后进先出原则依次输出栈中每个元素, //直到栈空为止 private: int elem[ARRAY_SIZE]; //用于保存栈元素的数组 int top; //指明栈顶元素位置的指针 }; void Stack::Push(int newElem) { if(___(1)___) { cout void main() { int x=5; switch(2*x-3) { case 4: cout<<x<<’ ’; case 7: cout<<2*x+1<<’ ’; case 10: cout<<3*x-1<<’ ’; break; default: cout<<"default"<<endl; }

cout void mainO int i.j.len[3]; char a[3][8]=["year","month","day"} for(i=0:1 #include《string.h> class Point int x.y: public: Point (int xl=0,int y1-0):x(x1).y(yl) cout<<"Point:"<Cxcc''KKyc<'\n': 1 PointO( ceut(<Point des!\n°: : class Text char text[l0o]:/文字内容 public: Text(char*str)A strepy(text,str): cout(<"Text con!\n"; Text0{cout(<"Text des!\n”:】 : class CirclelithText public Point,public Text public: CirelevithText (int ex,int cy,char *msg): Point (cx,cy).Text (msg)( 10
10 cout void main() { int i,j,len[3]; char a[3][8]={"year","month","day"}; for(i=0;i #include class Point { int x,y; public: Point(int x1=0, int y1=0) :x(x1), y(y1) { cout<<"Point:"<<x<<' '<<y<<'\n'; } ~Point() { cout<<"Point des!\n"; } }; class Text { char text[100]; //文字内容 public: Text(char * str) { strcpy(text,str); cout<<"Text con!\n"; } ~Text() {cout<<"Text des!\n";} }; class CircleWithText : public Point,public Text { public: CircleWithText(int cx,int cy, char *msg): Point(cx,cy),Text(msg) {