C++上机考试题库答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1套题解析
题目一:基本操作题
【参考答案】
(1)delete [] array;
(2)cout<< array[i]<< ' ';
(3)MyClass obj(10);
【考点分析】
本题考查MyClass类,其中涉及构造函数、析构函数、输出语句、动态数组、语句初始化。一般考到类时就会涉及构造函数,要注意构造函数的定义方法。析构函数就是考查delete语句的用法, 其一般形式为: delete []+要释放的指针。
【解题思路】
(1)语法错误,使用delete语句删除一个指针时,直接把指针变量的名称放在delete [] 后面即可。
(2) 考查考生对输入、输出语句的运用。使用cout进行数据输出操作,一般格式为:cout<
(3) 考查语句的初始化,我们来看MyClass类的构造函数:
MyClass(int len)
{
array = new int[len];
arraySize = len;
for(int i = 0; i < arraySize; i++)
array[i] = i+1;
}
注意形参len没有定义默认值,因此要想使array动态数组里依次存放1,2,3,4,5,6,7,8,9,10,就是要给len赋值为10。
【解题宝典】
delete语句是最常考的知识点,用于释放指针变量,其一般形式为:delete[]+要释放的指针。
题目二:简单应用题
【参考答案】
(1) a[num] = e;
(2) Array(s)
(3) a[j] = a[j - 1];
(4) a[i] = e;
【考点分析】
本题考查数组类Array以及Array的派生类SortedArray,其知识点涉及构造函数、析构函数、虚函数、动态数组。考到函数时,首先要看函数名,通过函数名称能大概知道该函数的功能,比如Array 类中的virtual void add(int e) 函数,看到这个函数我们能得到如下信息:
1) 有关键字virtual,说明该函数是虚函数,在Array类的派生类里肯定会有对add函数的定义。
2) 有关键字void,说明此函数没有返回值。
3) add的意思是添加,它的形参是int e,那么我们大概可以猜到该函数的功能是把整型数值e添加
到数组a中。
【解题思路】
(1) 考查的是虚函数virtual void add(int e)的定义,即添加一个整型数已到a[num] 中。
(2) 主要考查的是Array类的派生类SortedArray类的构造函数的定义,定义之前要对基础类初始化。
(3) 因为SortedArray类是排序类,所以数组a中的元素是要从小到大排序的。在if (e < a[i])条件下,
要把i后的元素逐个往后移一位,因此此处为a[j] = a[j - 1]。
(4) 主要考查虚函数virtual void add(int e)在派生类SortedArray类中的定义,把插入的数据放在数
组a的第i+1个位置,即a[i] = e;。
【举一反三】第31套的简单应用题。
题目三:综合应用题
【参考答案】
(1) MyVector::MyVector
(2) i.x - j.x, i.y - j.y
(3) v1 + v2
【考点分析】
本题考查二维向量类MyVector,其中涉及到的知识点有构造函数,重载运算符+、-、<<。在类外定
义构造函数时,语法要和定义其他类函数一样,前面要加上类名和作用域符号。重载运算符函数要
注意其返回值类型和参数类型。
【解题思路】
(1) 主要考查的是构造函数, 在类外定义构造函数时要使用类名和作用域, 即MyVector::MyVector。
(2) 主要考查重载运算符"-"的返回语句,返回值应为向量i和j的差,即MyVector(i.x - j.x, i.y - j.y);。
(3) 主要考查重载运算符"+"的使用,由题目可知v3是v1和v2的和,前面我们已经重新定义了运算
符"+",所以在这里直接使用语句v3 = v1 + v2即可。
第2套题解析
题目一:基本操作题
【参考答案】
(1)MyClass(int i)
(2)int Max(int x, int y, int z)
(3)cout<< "The value is "<< obj.GetValue()<< endl;
【考点分析】
本题考查:MyClass类,构造函数,析构函数,成员函数,函数重载。函数重载必须要形参类型不同,或
者形参个数不同。
【解题思路】
(1)考查构造函数,构造函数前不加void或其它任何类型名,直接使用MyClass(int i)即可。
(2)主要考查函数重载,在
int Max(int x, int y) { return x>y ? x : y; }中两个形参变量都是int型,而语句int Max(int x, int y, int z
= 0)的前两个形参也都是int 型,第三个形参定义默认值,那么这两个Max函数在调用时它们的参
数个数和参数类型都一样,因为函数重载要求形参类型或形参个数不同,所以要把int z=0 改为int
z,才能构成函数重载。
(3)主要考查成员函数的调用,因为value是私有成员,所以不能被类外函数直接调用,而且value()的
用法也是错误的,可以使用成员函数obj.GetValue()得到value的值。
【举一反三】第28套的程序改错题。
题目二:简单应用题
【参考答案】
(1)item(val)
(2)delete [] p
(3)temp = top
(4)temp->next = top
【考点分析】
本题考查:堆栈类Stack类,Item类,构造函数,析构函数,成员函数,函数调用。堆栈类的节点一般使用