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

考试难度:
4人已考
  • 卷面总分:100
  • 试卷类型:模拟试题
  • 测试费用: 免费
  • 关注人数:384
  • 作答时间:120分钟
  • 解析:
关闭
试卷简介:
本试卷是C++操作题考试题库试题,总分100分。
试题类型:
  • 基本操作题
  • 简单应用题
  • 综合应用题
试卷预览
  • 基本操作题
  • 简单应用题
  • 综合应用题
1
请打开考生文件夹下的解决方案文件proj1,此工程包含一个源程序文件proj1.cpp。其中位于每个注释“// ERROR **** found ****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:You are right.注意:只修改注释“//ERROR **** found ****”的下一行语句,不要改动程序中的其他内容。//proj1.cpp#include < iostream >using namespace std;class MyClass{public:MyClass(int x) :number(x) { }//ERROR ******* found *******~MyClass(int x) { }//ERROR ******* found *******void Judge (MyClass &obj);private:int number;};void Judge (MyClass &obj ){if (obj .number ==10 )cout << “You are right.” << endl;elsecout << “Sorry” << endl;}int main (){//ERROR ******* found *******MyClass object;Judge(object);return 0 ;}
2
请打开考生文件夹下的解决方案文件proj1,此工程中包含程序文件main.cpp,其中有ElectricFan(“电风扇”)类和主函数main的定义。程序中位于每个“// ERROR **** found ****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:品牌:清风牌,电源:关,风速:0品牌:清风牌,电源:开,风速:3品牌:清风牌,电源:关,风速:0注意:只修改每个“//ERROR **** found ****”下的那一行,不要改动程序中的其他内容。#include < iostream >using namespace std;class ElectricFan{ //“电扇”类char * brand;int intensity; //风速:0 -关 机,1 -弱,2 -中,3 -强public:ElectricFan (const char * the_brand): intensity(0){brand = new char[strlen (the_brand)+1];strcpy(brand, the_brand);}~ElectricFan () { delete [ ]brand; }// ERROR ******* found *******const char * theBrand() const { return * brand;} //返回电扇品牌int thelntensity() const { return intensity; }//返回风速bool isOn() const { return intensity > 0; }//返回电源开关状态// ERROR ******* found *******void turnOff() { intensity =1;} //关电扇void setlntensity(int inten){//开电扇并设置风速//ERROR ******* found *******if(intensity >=1 && intensity < =3)intensity = inten;}void show () {cout << “品牌:” << theBrand() << “牌” << “电源:” << (ison ()? “开”: “关”) << “风速:” << thelntensity() << endl;}};int main () {ElectricFan fan(“清风”);fan.show ();fan.setlntensity(3);fan.show();fan.turnOff();fan.show();return 0;}
1
请打开考生文件夹下的解决方案文件proj2,此工程中包含一个头文件shape.h,其中包含了类Shape、Point和Triangle的声明;包含程序文件shape.cpp,其中包含了类Triangle的成员函数和其他函数的定义;还包含程序文件proj2.cpp,其中包含测试类 Shape、Point和Triangle的程序语句。请在程序中的横线处填写适当的代码并删除横线,以实现上述功能。此程序的正确输出结果应为:此图形是一个抽象图形,周长=0,面积=0此图形是一个三角形,周长=6. 82843,面积=2注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。//shape.hclass Shape{public:virtual double perimeter() const { return 0 ; } //返回形状的周长virtual double area() const { return 0; } //返回形状的面积virtual const char * name() const {return “抽象图形”;} //返回形状的名称};class Point { //表示平面坐标系中的点的类double x;double y;public://********** found **********Point (double x0, double y0 ): ________ { } //用x0、y0初始化数据成员x、ydouble getX() const { return x; }double getY() const { return y; }};class Triangle: public Shape{// ********** found **********________;//定义3个私有数据成员public:Triangle(Point p1, Point p2 , Point p3): point1(p1) , point2(p2), point3(p3){ }double perimeter () const;double area () const;const char * name () const { return “三角形”;}};//shape.cpp#include “shape.h”#include < cmath >double length (Point p1, Point p2){returnsqrt((p1.getX()-p2.getX())*(p1.getX()-p2.getX())+(p1.getY()-p2.getY())*(p1.getY()-p2.getY()));}double Triangle::perimeter ()const{//一个return语句,它利用 length函数计算并返回三角形的周长// ********** found **********________;}double Triangle::area()const{double s = perimeter()/2.0;return sqrt (s*(s-length(pointlfpoint2)) *(s-length(point2, point3))*(s-length(point3, point1)));}//proj2.cpp#include “shape.h”#include < iostream >using namespace std;// ********** found **********________// show函数的函数头(函数体以前的部分){cout << “此图形是一个” << shape. name () << “,周长=” << shape. perimeter () << “,面积=” << shape.area() << endl;}int main (){Shape s;Triangle tri(Point(0,2 ),Point(2,0),Point(0,0));show(s);show(tri);return 0;}
2
请打开考生文件夹下的解决方案文件proj2,该工程中包含一个程序文件main.cpp,其中有类AutoMobile(“汽车”)及其派生类Car(“小轿车”)、Truck(“卡车”)的定义,还有主函数main的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为:车牌号:冀ABC1234 品牌:ForLand 类别:卡车 当前档位:0 最大载重量:12车牌号:冀ABC1234 品牌:ForLand 类别:卡车 当前档位:2 最大载重量:12车牌号:沪XYZ5678 品牌:QQ 类别:小轿车 当前档位:0座位数:5车牌号:沪XYZ5678 品牌:QQ 类别:小轿车 当前档位:-1座位数:5注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。#include < iostream >#include < iomanip >#include < cmath >using namespace std;classAutoMobile{ //“汽车”类char * brand; //汽车品牌char * number; //车牌号int speed; //档位:1、2、3、4、5 ,空档:0,倒档:-1public:AutoMobile(const char * the_brand, const char * the_number): speed(0) {brand = new char[ strlen (the_brand) +1];//********** found **********________;//********** found **********________;strcpy (nurnber, the_number);}~AutoMobile() { delete [ ] brand; delete[ ] number; }const char * theBrand () const { return brand; } //返回品牌名称const char * theNumber() const{ return number; } //返回车牌号int currentSpeed()const{return speed; } //返回当前档位void changeGearTo(int the_speed) {//换到指定档位if (speed﹥= -1 && speed﹤= 5)speed = the_speed;}virtual const char *category() const=0; //类别:卡车、小轿车等virtual void show () const {cout<< “车牌号:” << theNumber ()//********** found **********<< “品牌:” << ________<< “类别:” << category ()<< “当前档位:” << currentSpeed ();}};class Car: public AutoMobile{int seats; //座位数public:Car(const char * the_brand, const char * the_number,int the_seats ): AutoMobile (the_brand, the_number), seats(the_ seats){ }int numberOfSeat() const { return seats; }//返回座位数const char * category() const { return “小轿车”; } //返回汽车类别void show () const {AutoMobile:: show ();cout << “座位数:” << numberOfSeatO < }};class Truck: public AutoMobile { //“卡车”类int max_load; //最大载重量public:Truck (const char * the_brand, const char * the_number, int the_max_load ) : AutoMobile (the_brand, the_number ), max_load (the_max_load){ }int maxLoad( ) const { return max_load; } //返回最大载重量// ********** found **********const char * category () ________ //返回汽车类别void show () const {AutoMobile:: show ();cout << “最大载重量:” << maxLoad() << endl;}};int main() {Truck truck (“ForLand”, “冀ABC1234”, 12);truck.show();truck.changeGearTo(2);truck.show ();Car car (“QQ”, “沪XYZ5678”, 5);car.show();car.changeGearTo(-1);car.show();cout << endl;return 0;}
1
请打开考生文件夹下的解决方案文件proj3,其中声明的是一个人员信息类,补充编制程序,使其功能完整。在main函数中给出了一组测试数据,此种情况下程序的输出应该是:Zhang 20 Tsinghua。注意:只能在函数address_change的“// ******** 333 ********” 和“//******** 666 ********”之间填入若干语句,不要改动程序中的其他内容。程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。//proj3.h#include < iostream >#include < string >using namespace std;class Person {char name [20];int age;char * address;public:Person() { age = 0;address =0;}void name_change (char * _name);//名字修改函数void age_change (int _age);//年龄修改函数void address_change (char * _add);//地址修改函数void info_display ();//人员信息显示~Person();//析构函数};void writeToFile(const char * path);proj3.cpp#include < iostream >#include < string >#include “proj3.h”using namespace std;void Person::name_change (char * _name){strcpy(name, _name);}void Person:: age_change (int _age){age = _age;}void Person:: address _change (char * _add){if (address! = NULL) delete [ ] address;// ******** 333 ********// ******** 666 ********}void Person::info_display(){cout << name << ‘\t’ << age << ‘\t’;if(address ! = NULL)cout << address << endl;cout << endl;}Person:: ~ Person (){if(address ! = NULL)delete[ ] address;}void main (){Person p1;p1.name_change(“Zhang”);p1.age_change(20);p1.address _change(“Tsinghua University”);p1.address_change (“Tsinghua”);p1.info_display();writeToFile(“”);}
2
请打开考生文件夹下的解决方案文件proj3,其中使用友元函数访问类的私有数据成员,求出两个数据成员的大于1的最小公因子。请编写友员函数FriFun,使其输出结果为:Common denominator is 2要求:补充编制的内容写在“// ********333 **** ****”与“// ********666 ********”之间,不得修改程序的其他部分。注意:程序最后将结果输出到文件out. dat中。输出函数writeToFile已经编译为obj文件,并且在本 程序中调用。//proj3.hclass FriFunClass{int a, b;public:FriFunClass (int i, int j) { a=i; b=j; }friend int FriFun (FriFunClass x); //友元函数};void writeToFile (const char * );//proj3.cpp#include < iostream >using namespace std;#include “prj3.h”int FriFun (FriFunClass x){//******** 333 ********//由于函数FriFun()是类FrilrFunClass的友元函数,所以它可以直接访问a和b//******** 666 ********}int main (){FriFunClass n (10, 20);if(FriFun(n))cout << “Common denominator is” << FriFun (n) << “\n”;else cout << “No common denominator .\n”;writeToFile(“”);return 0;}