上学吧题库

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

试卷预览
请打开考生文件夹下的解决方案文件proj1,此工程中包含程序文件main.cpp,其中有类Score(“成绩”)和主函数main的定义。程序中位于每个“// ERROR **** found ****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:学号:12345678 课程:英语 总评成绩:85注意:只修改每个“//ERROR **** found ****”下的一行,不要改动程序中的其他内容。#include < iostream >using namespace std;class Score{public:Score(const char *the_course, const char * the_id, int the_normal, int the_midterm, int the_end_of_term): course(the_course), normal(the_normal), midterm(the_midterm), end_of_term(the_end_of_term) {// ERROR ******* found *******strcpy (the_id, student_id);}const char * getCourse () const { return course; } //返回课程名称// ERROR ******* found *******const char * getID () const { return & student_id; } //返回学号int getNormal() const { return normal; } //返回平时成绩int getMidterm() const { return midterm; }//返回期中考试成绩int getEndOfTerm() const { return end_of_term; } //返回期末考试成绩int getFinal() const; //返回总评成绩private:const char * course; //课程名称char student_id[12]; //学号int normal; //平时成绩int midterm; //期中考试成绩int end_of_term; //期末考试成绩};//总评成绩中平时成绩占20% ,期中考试占30% ,期末考试占50% ,最后结果四舍五入为一个整数// ERROR ******* found*******int getFinal() const{return normal * 0.2+ midterm * 0.3+ end_of_term * 0.5 +0.5;}int main () {char English[ ]= “英语”;Score score (English, “12345678”, 68, 83, 92);cout << “学号:” << score.getID() << “”;cout << “课程:”<< score.getCourse ()<< “” ;cout << “总评成绩:” << score.getFinal()<< endl;return 0;}
请打开考生文件夹下的解决方案文件preg1,此工程中含有一个源程序文件proj1.cpp。其中位于每个注释“// ERROR **** found **** ” 之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:The value is: 10注意:只修改注释“// ERROR **** found ****”的下一行语句,不要改动程序中的其他内容。//proj1.cpp#include < iostream >using namespace std;class Member {// ERROR ******* found *******private:Member (int val) : value (val) { }int value;};class MyClass {Member _m;public:// ERROR ******* found *******MyClass (int val){ }int GetValue ()const{ return _m.value; }};int main (){MyClass * bj=new MyClass(10);// ERROR ******* found *******下列语句输出obj指向类中的value 值cout << “The valueis:”<< obj.GetValue () << endl;delete obj ;return 0;}
请打开考生文件夹下的解决方案文件proj2,该工程中含有一个源程序文件proj2. cpp,其中定义了CharShape 类、Triangle 类和 Rectangle 类。CharShape是一个抽象基类,它表示由字符组成的图形(简称字符图形),纯虚函数Show用于显示不同字符图形的相同操作接口。Triangle和Rectangle是CharShape的派生类,它们分别用于表示字符三角形和字符矩形,并且都定义了成员函数Show,用于实现各自的显示操作。程序的正确输出结果应为:****************########################请阅读程序,分析输出结果,然后根据以下要求在横线处填写适当的代码并删除横线。(1)将Triangle类的成员函数Show补充完整,使字符三角形的显示符合输出结果。(2)将Rectangle类的成员函数Show补充完整,使字符矩形的显示符合输出结果。(3)为类外函数fun添加合适的形参。注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//**** found****”。//proj2.cpp#include < iostream >using namespace std;class CharShape {public:CharShape(char ch) : _ch(ch){ };virtual void Show ()=0;protected:char_ch; //组成图形的字符};class Triangle : public CharShape {public:Triangle (char chfint r):CharShape (ch), _rows(r) { }void Show ();private:int rows; //行数};class Rectangle: public CharShape {public:Rectangle ( char ch, int r, int c ) : CharShape(ch) , _rows (r), _cols(c) { }void Show();private:int _rows, _cols; //行数和列数};void Triangle::Show()//输出字符组成的三角形{for (int i = 1; i <= _rows; i ++) {//******** found ********for(int j = 1; j < =________; j++)cout << _ch;cout << endl}}void Rectangle::Show()//输出字符组成的矩形{//******** found ********for(int i = 1; i﹤=__; i++) {//******** found ********for( int j = 1; j < =________; j ++ )cout << _ch;cout << endl;}}//******** found ******** 为fun函数添加形参void fun (________) { cs . Show(); }int main (){Triangle tri (‘*’, 4);Rectangle rect(‘#’, 3, 8 );fun(tri);fun(rect);return 0;}
请打开考生文件夹下的解决方案文件prqj2,此工程中包含一个程序文件main.cpp,其中有“班级”类 Class和“学生”类Student的定义,还有主函数main的 定义。在主函数中定义了两个“学生”对象,他们属于同一班级。程序展示,当该班级换教室后,这两个人的教室也同时得到改变。请在横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的正 确输出结果应为:改换教室前:学号:0789 姓名:张三 班级:062113 教室:521学号:0513 姓名:李四 班级:062113 教室:521改换教室后:学号:0789 姓名:张三 班级:062113 教室:311学号:0513 姓名:李四 班级:062113 教室:311注意:只能在横线处填写适当的代码,不要改动程序中的其他内容。#include < iostream >using namespace std;classClass{ //“班级”类public:Class(const char * id, const char * room) {strcpy(class_id,id);//********** found**********________}const char * getClassID() const{ return class_id; } //返回班号//********** found **********const char * getClassroom () const { ________} //返回所在教室房号void changeRoomTo (const char * new_room) { //改换到另一个指定房号的教室strcpy(classroom, new_room);}private:char class_id[20]; //班号char classroom[20]; //所在教室房号};class Student { //“学生”类char my_id[10]; //学号char my_name[20] ; //姓名Class &my_class; //所在教室public://********** found **********Student(const char * the_id, const char * the_name, Class &the_class): ________ {strcpy (my_id, the_id);strcpy(my_name, the_name);}const char * getID()const { return my_id; }const char * getName()const { return my_name; }Class getClass() const { return my_class; }};void showStudent(Student * stu) {cout << “学号:” << stu="" -=""> getID() << “”;cout << “姓名:” << stu="" -=""> getName() << “”;cout << “班级:” << stu="" -=""> getClass().getClassID() << “”;cout << “教室:” << stu="" -=""> getClass().getClassroom() << endl;}int main () {Class cla (“062113”, “521”);Student Zhang(“0789”, “张三”, cla), Li(“0513”, “李四”, cla);cout << “改换教室前:” << endl;showStudent(&Zhang);showStudent(&Li);//062113班的教室由521改换到311//********** found **********________cout << “改换教室后:” << endl;showStudent(&Zhang);showStudent(&Li);return 0;}
请打开考生文件夹下的解决方案文件proj3,此工程中包含一个源程序文件proj3.cpp,其功能是从文本文件in.dat中读取全部整数,将整数序列存放到intArray类的对象中,然后建立另一对象myArray,将对象内容赋值给myArray。类intArray重载了“=”运算符。程序中给出了一个测试数据文件input,不超过 300 个的整数。程序的输出是:1011131620要求:补充编制的内容写在“//**********333**********”与“//******** 666 ********”之间。实现重载赋值运算符函数,并将赋值结果在屏幕输出。格式不限。不得修改程序的其他部分。注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本 程序中调用。//intArray.hclass intArray{private:int * array;int length;public:intArray(char* filename);intArray();intArray & perator = (const intArray & src);~intArray();void show ();};void writeToFile (const char * path);//main.cpp#include < iostream >#include < fstream >#include < cstring >#include “intArray.h”using namespace std;intArray::intArray(){length = 10;array = new int[ length];}intArrav::intArrav(char * filename){ifstream myFile (filename);array = new int[300];length = 0;while(myFile >> array[length++])length -- ;myFile.close();}intArray& intArray:: perator = (const intArray & src){if(array != NULL ) delete [ ] array;length= src.length;array = new int [length];//************* 333 ***********//************* 666 ***********return * this;}intArray:: ~intArray(){delete[] array;}void intArray:: show(){int step = 0;for(int i=0; i﹤length; i=i + step){cout << array[ i] < step ++ ;}}void main (){intArray * arrayP = new intArray(“input.dat”);intArray myArray;myArray = * arrayP;(* arrayP).show ();delete arrayP;writeToFile (“ ”);}
请打开考生文件夹下的解决方案文件proj3,其中包含了类Polynomial(“多项式”)的定义。形如5x4+3.4x2-7x+2的代数式称为多项式,其中的5为4次项系数,3.4为2次项系数,-7为1次项系数,2为0次项(常数项)系数。此例缺3次项,意味着3次项系数为0,即省略了0x3。在Polynomial中,多项式的各个系数存储在一个名为coef的数组中。例如,对于上面的多项式,保存在coef[0]、coef[1]…coef[4]中的系数依次为:2. 0、-7. 0、3.4、0.0、5.0,也即对于i次项,其系数就保存在coef[i]中。成员函数getValue计算多项式的值,多项式中x的值是由参数指定的。请补充完成文件Polynomial.cpp中成员函数getValue的定义。此程序的正确输出结果应为:Value of p1 when x=2.0:59. 8Value of p2 when x=3.0:226. 8注意:只在函数getValue的“//******** 333 ** ******”和“//******** 666 ********”之间填入若干语句,不要改动程序中的其他内容。//Polynomiac.h#include < iostream >using namespace std;class Polynomial{ //“多项式”类public:Polynomial(double coef [ ], int num): coef(new double[num]), num_of_terms(num) {for(int i = 0; i﹤num_of_terms; i ++ )this -> coef [i] = coef[i];}~Polynomial(){ delete[ ] coef; }//返回指定次数项的系数double getCoefficient(int power) const { return coef[power]; }//返回在x等于指定值时多项式的值double getValue (double x ) const;private://系数数组,coef[0]为0次项(常数项)系数,coef[1]为1次项系数,coef[2]为2次项(平方项)系数,余类推。double * coef; int num_of_terms;};void writeToFile (const char * path);//Polymomial.cpp#include “Polynomial.h”double Polynomial:: getValue(double x) const {//多项式的值value为各次项的累加和double value = coef[0];//********333********//******** 666********return value;}//main.cpp#include “Polynomial.h”int main() {double p1[ ]={5.0, 3.4, -4.0, 8.0}, p2[ ]={0.0, -5.4, 0.0,3. 0, 2.0};Polynomial poly1 (p1, sizeof (p1)/sizeof(double)),poly2(p2, sizeof(p2)/sizeof(double));cout << “Value of p1 when x=2.0:” << poly1.getValue(2.0) << endl;cout << “Value of p2 when x=3.0 :” < writeToFile(“”);return 0;}