资源描述
2021年春?面向对象程序设计?期末复习指南
课程责任教师 苏海燕
第一局部 考核说明
本课程是开放教育本科计算机科学与技术专业的选修课程,由市电大命题。本课程考试命题依据的教材采用王萍主编,清华大学出版社出版的?C++程序设计教程?〔2002年2月第1版〕,共4学分,课内学时数为108,试卷编号1008,考试方式为闭卷。考试时间90分钟。
〔一〕试题类型及所占比例
单项选择题 〔占20分左右〕
填空题 〔占20分左右〕
程序填充题 〔占24分左右〕
理解问答题 〔占24分左右〕
编程题 〔占12分左右〕
〔二〕考试考前须知
考试过程中,掌握时间的分配,做到先易后难,知识点准确把握,详略得当。
1.单项选择题:根据题意,从四种可选择的答案中选择适宜的一种答案。
2.填空题:根据题意,在画有横线或空白处填写适宜内容。
3.程序填充题:根据C++程序或函数〔类〕模块,及相应的功能描述,在画有横线或空白处填写适宜内容。
4.理解问答题:根据C++程序或函数〔类〕模块,答复一些问题。如写出程序运行结果或函数调用结果,写出程序或函数所能实现的功能,按题意要求指出错误位置并改正。
5.编程题:给出编程要求和函数原型,编写出相应的程序或函数模块。
第二局部 复习参考资料
〔一〕纸质资料
1、教材:C++面向对象程序设计?,清华大学出版社出版、中央电大出版社发行部发行,熟读教材,掌握各章重点。
实验教材:?面向对象程序设计实验?中央电大出版社出版和发行,机考参考。
2、形成性测试考核册:独立完成,掌握其中的知识点
3、中央电大下发的?面向对象程序设计?期末复习指南:结合教材,及市电大的复习要求,掌握考核的知识点和重难点,完成每个章节的练习题,尤其是各章的程序设计、程序填空和写出程序运行结果等大题。
〔二〕网络资源
1、重庆电大平台的,重难点分析,平时作业讲评和自检自测,以及巴南电大平台的作业讲评、历年考试真题、期末复习指南等。
2、各平台的直播课堂和IP课件和重庆电大平台的教学演示文稿。
〔三〕录象教材:?面向对象程序设计?16讲,每讲50分钟,中央电大音像出版社出版和发行;
第三局部 各章知识点梳理
第1章 C++编程根底
重点掌握
1.简单的C++程序结构。P9-12
第2章 根本C++程序结构
重点掌握
1.C++程序的根本单位是字符,由字符可以构成标识符,表示常量或变量;p18
2.常量和变量通过运算符,按照一定的优先级连接起来,构成表达式,表达式有返回值。P24-25
3.定义具有简单数据类型的常量p26和变量的方法p28,并对它们进行初始化;
4.简单数据类型的含义和简单运算;p24
5.简单表达式的写法和赋值语句的用法;p29
6.用cout进行简单的输出操作的语法和使用。P28
第3章 数据类型
重点掌握
1.C++语言的根本数据类型:char(字符型)、int(整型)、float(浮点型)、double(双精度型)、w_char(双字节字符型)、bool(布尔型)p36
2.计算机内存中存储数据是以字节为单位的,不同的数据类型占用的内存空间不同;p39-40
3.不同的数据类型决定了计算机对内存中信息的解释方式,因此,尽管长整数和浮点数都是占用了四个字节的存储空间,它们存储数据的方式截然不同;p38
第4章 程序流程控制
重点掌握
1.if语句格式及应用;p52
2.循环结构语句〔while, do while, for〕;p58-68
3.转向控制语句〔break, continue, goto〕;p73-74
第5章 函数
重点掌握
1.函数定义与函数声明〔函数名p79、函数类型p80、形式参数p79、函数体p80、函数返回p98、函数声明p109〕;
2.函数调用p82〔调用表达式、实际参数、缺省参数、传值调用、嵌套调用、递归调用〕。
第6章 简单程序设计
重点掌握
1.C++库函数中常用的库函数以及常用头文件的功能;p137
2.局部变量和全局变量的概念;p142
3.外部存储类型和静态存储类型在多文件程序中的联络作用;p130
第7章 数组与结构
重点掌握
1.数组的定义p146和存取;p147
2.一维和二维数组的定义p151、初始化;p156
3.字符数组的定义、初始化,元素赋值与输出;p147,p156
4.向函数传递数组;p158
5.字符数组及其用法;p156
第8章 指针与引用
重点掌握
1.指针变量的定义和运算,指针参数的使用; p169
2.用指针给函数传递参数;
3.指针、数组和字符串之间的紧密联系;p179
4.能够声明和使用字符串数组;p183
5.命令行参数,理解函数指针的用法;p184
8.用引用传递参数的方法;p203
9.链表的概念及指针对链表的操作:建立、修改、插入和删除等。P195-201
第9章 面向对象程序方法
重点掌握
1.面向对象的概念;p207
2.类的概念;p213
第10章 类与对象
重点掌握
1.声明和定义类和成员函数的方法;p226-227
2.掌握类访问成员的方法;p232
3.类定义与头文件;p240
第11章 构造函数与析构函数
重点掌握
1.定义构造函数和析构函数的方法,把握默认构造函数的意义p267
1.构造类成员的方法。P275
第12章 静态成员、友元
重点掌握
1.怎样声明一个静态数据成员p297;
2.静态数据成员和静态成员函数的使用方法;p298
第13章 运算符重载
重点掌握
1.重定义与类有关的运算符;p319-328
2.运算符重载的规那么;p316
第14章 继承
重点掌握
1.继承的概念,能利用继承现有的类建立新类;p352
2.多重继承的概念;p372
第四局部 综合练习题
一、单项选择题
1.C++源程序文件的缺省扩展名为(A)。
A. cpp B. exe
C. obj D. lik
2.能作为C++程序的根本单位是( C )。
A. 字符 B. 语句
C. 函数 D. 源程序文件
3.由C++源程序文件编译而成的目标文件的缺省扩展名为( C )。
A. cpp B. exe
C. obj D. lik
4.程序中主函数的名字为〔 A 〕。
A. main B. MAIN
C. Main D. 任意标识符
5.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用( D )符号作为分隔符。
A. 空格或逗号 B. 逗号或回车
C. 逗号或分号 D. 空格或回车
6.x>0 && x<=10的相反表达式为〔 A 〕。
A. x<=0 || x>10 B. x<=0 && x>10
C. x<=0 || x<=10 D. x>0 && x>10
7.设〞int a=12;〞,那么执行完语句〞a+=a*a;〞后,a的值是( C )。
A. 12 B. 144
C. 156 D. 288
8.由C++目标文件连接而成的可执行文件的缺省扩展名为( B )。
A. cpp B. exe
C. obj D. lik
9.假定以下x和y均为int型变量,那么不正确的赋值为〔 B 〕。
A. x+=y++ B. x++=y++
C. x=++y D. ++x=++y
10.在下面循环语句中循环体执行的次数为〔 C 〕。
int i=0,s=0; while(s<20) {i++; s+=i;}
A. 4 B. 5
C. 6 D. 7
11.以下的符号常量定义中,错误的定义是〔 C 〕。
A. const M=10; B. const int M=20;
C. const char ch; D. const bool mark=true;
12.x>0 || y==5的相反表达式为〔 B 〕。
A. x<=0 || y!=5 B. x<=0 && y!=5
C. x>0 || y!=5 D. x>0 && y==5
13.do语句能够改写为〔D 〕语句。
A. 复合 B. if
C. switch D. while
14.假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};〞,那么元素a[2][1]的值为〔 C 〕。
A. 0 B. 4
C. 8 D. 6
15.在下面的一维数组定义中,哪一个有语法错误。〔 C 〕
A. int a[]={1,2,3}; B. int a[10]={0};
C. int a[]; D. int a[5];
16.可用作C++语言用户标识符的一组标识符是( B )。
A. void define +WORD
B. a3_b3 _123 YN
C. for -abc Case
D. 2a DO sizeof
17.以下关于函数模板表达正确的选项是〔 C 〕。
A. 函数模板也是一个具体类型的函数
B. 函数模板的类型参数与函数的参数是同一个概念
C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数
D. 用函数模板定义的函数没有类型
18.以下函数的返回结果是〔 A 〕。
int function(char *x) {
char *p=x; while(*p++); return(p-x-1);
}
A. 求字符串的长度 B.将字符串x连接到字符串p后面
C. 将字符串x复制到字符串p中 D.将字符串x反向存放
19.以下〔 C 〕的调用方式是引用调用。
A. 形参和实参都是变量 B.形参是指针,实参是地址值
C. 形参是引用,实参是变量 D.形参是变量,实参是地址值
20.函数调用不可以〔 D 〕。
A. 出现在一个表达式中 B. 出现在执行语句中
C. 作为一个函数的实参 D. 作为一个函数的形参
21.采用重载函数的目的是〔 D 〕。
A. 实现共享 B. 减少空间
C. 提高速度 D. 使用方便,提高可读性
22.以下正确的描述是〔 B 〕。
A. 函数的定义可以嵌套,函数的调用不可以嵌套
B. 函数的定义不可以嵌套,函数的调用可以嵌套
C. 函数的定义和函数的调用均可以嵌套
D. 函数的定义和函数的调用均不可以嵌套
23.存储以下数据,占用存储字节最多的是〔 D 〕。
A. 0 B. ‘0’
C. “0〞 D. 0.0
24.C++语言的编译系统对宏命令的处理是( D )。
A. 在程序运行时进行
B. 在程序连接时进行
C. 和C++程序的其它语句同时进行编译
D. 在对源程序中其它成分正式编译之前进行
25.关于局部变量,下面说法正确的选项是( C )。
A. 定义该变量的程序文件中的函数都可以访问
B. 定义该变量的函数中的定义处以下的任何语句都可以访问
C. 定义该变量的复合语句中的定义处以下的任何语句都可以访问
D. 定义该变量的函数中的定义处以上的任何语句都可以访问
26.当#include后面的文件名用双引号括起来时,寻找被包含文件的方式是( B )。
A. 直接按系统设定的标准方式搜索目录
B. 先在源程序所在目录搜索,再按系统设定的标准方式搜索目录
C. 仅仅搜索源程序所在目录
D. 搜索当前逻辑盘上的所有目录
27.假设定义了函数 double *function(), 那么函数function的返回值为〔 B 〕。
A. 实数型 B.实数的地址
C.指向函数的指针 D.函数的地址
28.以下给字符数组赋初值时,正确的选项是( A )。
A. char s1[]=〞abcdef〞;
B. char s2[4]=〞abcd〞;
C. char s3[2][3]={“abc〞,〞xyz〞};
D. char s4[4][]={‘a’,’x’,’s’,’t’};
29.关于void 指针,以下说法正确的选项是〔 C 〕。
A. void 指针就是未指向任何数据的指针
B. void 指针就是已定义而未初始化的指针
C. 指向任何类型数据的指针可直接赋值给一个void 指针
D. void 指针值可直接赋给一个非void 指针
30.设有定义“static int data[5][6];〞,设该数组在静态存储区中的起始地址为十进制的100,假设每个int型数占4个字节,那么数组元素data[2][3]的地址为( D )。
A. 115 B.124
C.130 D.160
31.设x是一个bool型的逻辑量,y的值为10,那么表达式 x && y的值为〔 C 〕。
A. 1 B. 0
C. 与x值相同 D. 与x值相反
32.假定p指向的字符串为〞string〞,假设要输出这个字符串的地址值,那么使用〔 C 〕。
A. cout<<*s; B. cout<<s;
C. cout<<&s; D. cout<<(void *)s;
33.假定有“struct BOOK{char title[40]; float price;}; BOOK *book;〞,那么不正确的语句为〔 A 〕。
A. BOOK *x=new book; B. BOOK x={"C++ Programming",27.0};
C. BOOK *x=new BOOK; D. BOOK *x=book;
34.定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为〔 A 〕。
A. int *p=new int[30]; B. int *p=new int(30);
C. int *p=new [30]; D. *p=new int[30];
35.函数调用func((exp1,exp2),(exp3,exp4,exp5))中所含实参的个数为( B )个。
A. 1 B. 2
C. 4 D. 5
36.假定指针变量p定义为“int *p=new int(100);〞,要释放p所指向的动态内存,应使用语句〔 A 〕。
A. delete p; B. delete *p;
C. delete &p; D. delete []p;
37.面向对象方法的多态性是指〔 C 〕。
A. 一个类可以派生出多个特殊类
B. 一个对象在不同的运行环境中可以有不同的变体
C. 针对一消息,不同的对象可以以适合自身的方式加以响应
D. 一个对象可以是由多个其他对象组合而成的
38.假定指针变量p定义为“int *p=new int[30];〞,要释放p所指向的动态内存,应使用语句〔 D 〕。
A. delete p; B. delete *p;
C. delete &p; D. delete []p;
39.字符串〞a+b=12\n〞的长度为〔 B 〕。
A. 6 B. 7
C. 8 D. 9
40.面向对象软件开发中使用的OOA表示〔 A 〕。
A. 面向对象分析 B. 面向对象设计
C. 面向对象语言 D. 面向对象方法
41.在关键字public后面定义的成员为类的〔 B 〕成员。
A. 私有 B. 公用
C. 保护 D. 任何
42.面向对象软件开发中使用的OOD表示〔 B 〕。
A. 面向对象分析 B. 面向对象设计
C. 面向对象语言 D. 面向对象方法
43.将两个字符串连接起来组成一个字符串时,选用〔 C 〕函数。
A. strlen() B. strcap()
C. strcat() D. strcmp()
44.假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a的值,x为该类的一个对象,那么访问x对象中数据成员a的格式为〔 D 〕。
A. x.a B. x.a()
C. x->GetValue() D. x.GetValue()
45.在多文件结构的程序中,通常把类中所有非内联函数的定义单独存放于〔 B 〕中。
A. 主文件 B. 实现文件
C. 库文件 D. 头文件
46.假定AA为一个类,int a()为该类的一个成员函数,假设该成员函数在类定义体外定义,那么函数头为〔 A 〕。
A. int AA::a() B. int AA:a()
C. AA::a() D. AA::int a()
47.循环语句“for(int i=0; i<n; i++) cout<<i*i<<’ ’;〞中循环体执行的次数为( C )。
A. 1 B. n-1
C. n D. n+1
48.假定AA是一个类,abc是该类的一个成员函数,那么参数表中隐含的第一个参数的类型为〔 D 〕。
A. int B. char
C. AA D. AA*
49.结构中定义的成员默认为〔 A 〕访问属性。
A. public B. private
C. protected D. friend
50.假定AA是一个类,abc是该类的一个成员函数,那么参数表中隐含的第一个参数为〔 C 〕。
A. abc B. *this
C. this D. this&
51.文件包含命令中被包含的文件的扩展名〔 C 〕。
A. 必须是.h B. 不能是.h
C. 可以是.h或.cpp D. 必须是.cpp
52.在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,假设链队非空,那么进行插入时必须把新结点的地址赋给(D )。
A. elemHead B. elemTail
C. elemHead->next和elemHead D. elemTail->next和elemTail
53.对于一个类的析构函数,其函数名与类名(C )。
A. 完全相同 B. 完全不同
C. 只相差一个字符 D. 无关系
54.假定一条定义语句为“int a[10], x, *pa=a;〞,假设要把数组a中下标为3的元素值赋给x,那么不正确的语句为〔D 〕。
A. x=pa[3]; B. x=*(a+3)
C. x=a[3]; D. x=*pa+3;
55.循环体至少被执行一次的语句为〔C 〕。
A. for循环 B. while循环
C. do循环 D. 任一种循环
56.假定AB为一个类,那么执行 “AB x;〞语句时将自动调用该类的( B )。
A. 带参构造函数 B. 无参构造函数
C. 拷贝构造函数 D. 赋值重载函数
57.当类中的一个整型指针成员指向一块具有n*sizeof(int)大小的存储空间时,它最多能够存储( A )个整数。
A. n B. n+1
C. n-1 D. 1
58.假定AB为一个类,那么执行 “AB x(a,5);〞语句时将自动调用该类的( A )。
A. 带参构造函数 B. 无参构造函数
C. 拷贝构造函数 D. 赋值重载函数
59.在下面的字符数组定义中,哪一个有语法错误。〔 D 〕。
A. char a[20]=〞abcdefg〞; B. char a[]=〞x+y=55.〞;
C. char a[15]; D. char a[10]=’5’;
60.假定一个类AB只含有一个整型数据成员a,当用户不定义任何构造函数时,系统为该类定义的无参构造函数为( D )。
A. AB() {a=0;} B. AB(int aa=0): a(aa) {}
C. AB(int aa): a(aa) {} D. AB() {}
61.设px是指向一个类对象的指针变量,那么执行 “delete px;〞语句时,将自动调用该类的( C )。
A. 无参构造函数 B. 带参构造函数
C. 析构函数 D. 拷贝构造函数
62.假定一个类AB只含有一个整型数据成员a,用户为该类定义的带参构造函数可以为( C )。
A. AB() {} B. AB(): a(0){}
C. AB(int aa=0) {a=aa;} D. AB(int aa) {}
63.假定有“struct BOOK{char title[40]; float price;}book;〞,那么正确的语句为〔 B 〕。
A. BOOK &x= &book; B. BOOK &x=book;
C. BOOK &x=new BOOK; D. BOOK &x=BOOK;
64.假定AB为一个类,那么执行 “AB a, b(3), *p;〞语句时共调用该类构造函数的次数为( A )。
A. 2 B. 3
C. 4 D. 5
65.对类对象成员的初始化是通过构造函数中给出的( B )实现的。
A. 函数体 B. 初始化表
C. 参数表 D. 初始化表或函数体
66.假定AB为一个类,那么执行 “AB a(2), b[3], *p[4];〞语句时共调用该类构造函数的次数为( B )。
A. 3 B. 4
C. 5 D. 9
67.假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};〞,那么元素a[1][2]的值为〔 C 〕。
A. 2 B. 4
C. 6 D. 8
68.一个类的静态数据成员所表示属性 ( C )。
A. 是类的或对象的属性 B. 只是对象的属性
C. 只是类的属性 D. 类和友元的属性
69.当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够直接访问类B的〔 D 〕。
A. 只能是公有成员
B. 只能是保护成员
C. 只能是除私有成员之外的任何成员
D. 具有任何权限的成员
70.类的静态成员的访问控制〔 D 〕。
A. 只允许被定义为private
B. 只允许被定义为private或protected
C. 只允许被定义为public
D. 可允许被定义为private、protected或public
71.软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或缺乏时进行相应的软件更新的难易程度叫做软件的〔 A 〕。
A. 可维护性 B. 可复用性
C. 兼容性 D. 正确性
72.在成员函数中进行双目运算符重载时,其参数表中应带有〔 B 〕个参数。
A. 0 B. 1
C. 2 D. 3
73.如果表达式++a中的“++〞是作为成员函数重载的运算符,假设采用运算符函数调用格式,那么可表示为〔 D 〕。
A. a.operator++(1) B. operator++(a)
C. operator++(a,1) D. a.operator++()
74.双目运算符重载为普通函数时,其参数表中应带有〔 C 〕个参数。
A. 0 B. 1
C. 2 D. 3
75.以下表达中不正确的选项是〔 C 〕。
A. 在一个函数中,可以有多条return语句
B. 函数的定义不能嵌套,但函数的调用可以嵌套
C. 函数必须有返回值
D. 不同的函数中可以使用相同名字的变量
76.对于公有继承,基类中的私有成员在派生类中将 ( C )。
A. 能够直接使用成员名访问 B. 能够通过成员运算符访问
C. 仍然是基类的私有成员 D. 变为派生类的私有成员
77.从一个基类派生出的各个类的对象之间( C )。
A. 共享所有数据成员,每个对象还包含基类的所有属性
B. 共享局部数据成员,每个对象还包含基类的所有属性
C. 不共享任何数据成员,但每个对象还包含基类的所有属性
D. 共享局部数据成员和函数成员
78.当保护继承时,基类的〔 B 〕在派生类中成为保护成员,在类作用域外不能够通过派生类的对象来直接访问该成员。
A. 任何成员 B.公有成员和保护成员
C. 保护成员和私有成员 D.私有成员
79.在关键字private后面定义的成员为类的〔A 〕成员。
A. 私有 B. 公用
C. 保护 D. 任何
80.函数原型语句正确的选项是〔 B 〕。
A. int Function(void a); B.void Function (int);
C. int Function(a); D.void int(double a);
81.在多文件结构的程序中,通常把含有main()函数的文件称为〔 A 〕。
A. 主文件 B. 实现文件
C. 程序文件 D. 头文件
82.设有如下函数定义
int f(char *s) {
char *p=s;
while(*p!=’\0’) p++;
return(p-s);
}
在主函数中用cout<<f(“good〞)调用上述函数, 那么输出结果为〔 B 〕。
A. 3 B. 4
C. 5 D. 6
83.当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为( C )。
A. n B. n+1
C. n-1 D. n-2
84.假设用数组名作为函数调用的实参,传递给形参的是〔A 〕。
A. 数组的首地址 B. 数组中第一个元素的值
C. 数组全部元素的值 D. 数组元素的个数
85.类的构造函数是在定义该类的一个( C )时被自动调用执行的。
A. 成员函数 B. 数据成员
C. 对象 D. 友元函数
86.预处理命令在程序中都是以( B )符号开头的。
A. * B. #
C. & D. @
87.假定一个类的构造函数为 “A(int aa, int bb) {a=aa; b=aa*bb;}〞,那么执行 “A x(4,5);〞语句后,x.a和x.b的值分别为( C )。
A. 4和5 B. 5和4
C. 4和20 D. 20和5
88.假定有定义“int b[10]; int *p
展开阅读全文