计算机二级C++操作题考试题库模拟卷二

考试难度:
0人已考
  • 卷面总分:100
  • 试卷类型:模拟试题
  • 测试费用: 免费
  • 关注人数:66
  • 作答时间:120分钟
  • 解析:
关闭
试卷简介:
本试卷是C++操作题考试题库试题,总分100分。
试题类型:
  • 基本操作题
  • 简单应用题
  • 综合应用题
试卷预览
  • 基本操作题
  • 简单应用题
  • 综合应用题
1
请打开考生文件夹下的解决方案文件proj1,此工程中含有一个源程序文件proj1.cpp。其中位于每个注释“//ERROR****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:Constructor called.The value is 10Max number is 20Destructor called.注意:只能修改注释“//ERROR****found****”的下一行语句,不要改动程序中的其他内容。// proj1.cpp#include <iostream>using namespace std;class MyClass {class Item{public: //ERROR****found****private:int value;};int main (){MyClass obj (10);// ERROR ******* found*******cout << “The value is” << value () << endl;cout << “Max number is” << obj.Max(10,20) << endl;return 0;}
2
打开考生文件夹下的解决方案文件proj1,此项目包含程序文件main.cpp,其中有类MaxDivisor(“最大约数”)的定义和主函数main的定义。类MaxDivisor能够计算一个整数的最大约数,其中约数是指:对于一个整数N,除去1和它自身外,凡能整除N的数即为N的约数。程序中位于每个//ERROR ****** found ******下的语句行有错误,请加以改正。更正后程序的输出应该是:555555的最大约数是:185185注意:只能修改每个// ERROR ****** found ******下的那一行,不要改动程序中的其他内容。 #include <iostream>#include <iomanip>using namespace std;class MaxDivisor//最大约数{public:// ERROR ***** found *****MaxDivisor (int n=1) { count =n; }void Print () const;private:const int count;};// ERROR ***** found *****void Print () const{int i;for (i = count - 1; i > 1; i--)// ERROR ***** found *****if(count/i== 0 ){cout < < count < < “的最大约数是:” << i << endl;return;}cout << count << “没有约数” << endl;}int main (){MaxDivisor obj(555555);obj.Print();return 0;}
1
打开考生文件夹下的解决方案文件proj2,此项目包含程序文件main.cpp,其中有类Graphics(“图形”)、IsocelesTriangles(“等腰三角形”)、Parallelogram(“平行四边形”)的定义和主函数main的定义。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述定义。此程序的正确输出结果应为:注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不能删除或移动“//******* found *******”。#include <iostream>#include <iomanip>using namespace std;class Graphics //图形类{public:Graphics (int e) :edges (e) { }//******* found *******________protected:int edges;};class IsocelesTriangles:public Graphics //等腰三角形类{public: IsocelesTriangles (int x): Graphics(x) { }void Draw ();};void IsocelesTriangles:: Draw(){int i, j;if (edges﹤=0)cout << “errors” << endl;if (edges﹥0){for(i = 0; i﹤edges; i ++){for (j =0; j﹤edges - i; j++)cout << setw (2) << ‘’;//******* found *******for (j = 0; ________; j+ +) //输出每行的*号cout << setw (2) << ‘*’;cout << endl;}}cout << endl;}//******* found *******________ //平行四边形类{public:Parallelogram (int x):Graphics(x) { }void Draw ();};void Parallelogram:: Draw (){ int i, j ;if (edges <= 0 )cout << “errors”<< endl; if (edges﹥0 ){for (i = 0; i﹤edges; i ++){//***** found *****for (i = 0 ; ________; j+ +) //输出前导空格cout << setw (2) << ‘’ ;for (j =0; j cout << setw (2) << ‘*’;cout << endl;}}cout << endl;}int main () Graphics * objs[2];objs[0] = new IsocelesTriangles(6);objs[1] =new Parallelogram(6);for (int i=0; i < 2; i++)obj s[i] -> Draw();delete objs[0];delete objs[1];return 0;}
2
请打开考生文件夹下的解决方案文件proj2,该工程中含有一个源程序文件proj2.cpp,请将堆栈类的定义补充完整。使程序的输出结果为: The element of stack are:4 3 2 1注意:请勿修改主函数main和其他函数中的任何内容,只在横线处编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//**** found **** ”。proj2.cpp#include <iostream>using namespace std;const int Size =5;class Stack;class Item{public://ERROR ******** found ********Item (const int& val) :______ { }//构造函数 对item进行初始化private:int item;Item* next;friend class Stack;};class Stack{public:Stack():top(NULL) { }~Stack();int Pop();void Push (const int&);private:Item * top;};Stack::~Stack (){Item *p=top, *q;while(p!=NULL){q = p -> next;//******** found********_________;//释放p所指向的节点p =q;}}int Stack::Pop(){Item* temp;int ret;// ******** found ********________; //使temp指向栈顶节点ret = top -> item;top = top -> next;delete temp;return ret;}void Stack:: Push ( const int& val){Item* temp =new Item (val);//******** found ********________;//使新节点的next指针指向栈顶数据top = temp;}int main () {Stack s;for (int i =1; i < Size; i ++ )s.Push (i);cout << “The element of stack are: ”;for (i =1; i < Size; i ++ )cout << s. Pop () << ‘\t’;return 0;}
1
请打开考生文件夹下的解决方案文件proj3,此工程中包含一个源程序文件proj3.cpp,其中定义了用于表示平面坐标系中的点的类MyPoint和表示矩形的类MyRectangle;程序应当显示:(0,2)(2,2)(2,0)(0,0)4但程序中有缺失部分,请按照以下提示,把缺失部分补充完整:(1)在“//**1** ****found****”的下方是构造函数的定义,它用参数提供的左上角和右下角的坐标对up_left和down_right进行初始化。(2)在“//**2** ****found****”的下方是成员函数getDownLeft的定义中的一条语句。函数getDownLeft返回用MyPoint对象表示的矩形的左下角。(3)在“//**3** ****found****”的下方是成员函数area的定义,它返回矩形的面积。注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“*****found****”。// proj3.cpp#include <iostream>using namespace std;class MyPoint { //表示平面坐标系中的点的类double x;double y;public:MyPoint (double x, double y) { this ->x =x;this ->y = y;}double getX () const { return x;}double getY () const { return y;}void show () const { cout << ‘(‘ << x << ‘,’ << y << ‘)’;}};class MyRectangle { //表示矩形的类MyPoint up_left; //矩形的左上角顶点MyPoint down_right;// 矩形的右下角顶点public:MyRectangle(MyPoint upleft, MyPoint downright);MyPoint getUpLeft () const { return up_left;} //返回左上角坐标MyPoint getDownRight () const { return down_right; } //返回右下角坐标MyPoint getUpRight () const; //返回右上角坐标MyPoint getDownLeft () const; //返回左下角坐标double area () const; //返回矩形的面积};//**1** ******* found *******MyRectangle::MyRectangle(________):up_left(p1), down_right(p2 ) { }MyPoint MyRectangle:: getUpRight()const{return MyPoint (down_right. getX (),up_left.getY());}MyPoint MyRectangle:: getDownLeft () const{//**2** ******* found *******return MyPoint(________);}//**3** ******* found *******________area () const{ return (getUpLeft(). getX ()- getDownRight(). getX()) * (getDownRight().getY() - getUpLeft ().getY ());}int main (){MyRectangle r (MyPoint (0,2), MyPoint (2,0));r.getUpLeft().show();r.getUpRight().show();r.getDownRight().show();r.getDownLeft().show();cout << r.area () << endl;return 0;}
2
打开考生文件夹下的解决方案文件proj3,其中声明了,该类是一个用于表示连续正整数序列的类。MagicNumber的成员函数Intimacy的功能是查找该序列中的亲密数对。亲密数对的定义是:如果整数a的所有正因子(包括1,但不包括a 自身)之和等于b,并且整数b的所有正因子(包括 1,但不包括b自身)之和等于a,则称整数a和b为亲密数对。请根据亲密数的定义编写成员函数Intimacy。在main函数中给出了一组测试数据,此时程序的输出应该是:1和1000之间的亲密数对为:220和284注意:只需在函数Filter的//******* 333 *****和//******* 666 *******之间填入若干语句,不要改动程序中的其他内容。//MagicNumber.h#include <iostream>#include < string >#include < cmath >#pragma warning (disable:4996)using namespace std;class MagicNumber{public:MagicNumber (int x1, int x2 ): min(x1), max(x2), count(0) { }void ResetCount() { count =0; }int GetCount() const { return count; }iint GetSet (int index) { return set[index]; }void Intimacy (); //寻找亲密数对void Print (){cout << min << “和” << max << “之间的亲密数为:” << endl;for (int i =0; i cout << set[i] << “和” < }private:int digits; //Magic数的位数int min, max; //待计算的数值范围int count; //Magic数的数量int set[40]; //Magic数集合};void writeToFile (const char *);//main.cpp#include “MagicNumber.h”void MagicNumber:: Intimacy (){int number;for (number = min; number < max; number ++){//****** 333 ******//****** 666 ******}}int main (){MagicNumber obj(1,1000);obj.Intimacy();obj.Print();writeToFile(“”);return 0 ;}