C++上机考试题库答案

  • 格式:doc
  • 大小:21.85 MB
  • 文档页数:95

下载文档原格式

  / 95
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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<>vari。其中,var是代表一个变量,">>"称为提取运算符,该语句的含义是,将用户输入的数据保存到var中。

(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类,构造函数,析构函数,成员函数,函数调用。堆栈类的节点一般使用