国二上机题库

更新时间:2023-11-01 22:14:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一套

释\之后的一行语句有错误。请改正这些错误,使程序的输出结果为:1 2 3 4 5 6 7 8 9 10

【参考答案】 (1)delete [] array;

(2)cout<< array[i]<< ' '; (3)MyClass obj(10);

SortedArray是Array的派生类,表示有序数组。SortedArray重新定义了Array中的add函数,以确保有序数组中的元素始终

按照升序排列。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的正确输出结果应为: 10,9,8,7,6,5,4,3,2,1, 1,2,3,4,5,6,7,8,9,10, 【参考答案】 (1) a[num] = e; (2) Array(s) (3) a[j] = a[j - 1]; (4) a[i] = e;

于表示二维向量的类MyVector;程序应当显示(6,8)。但程序中有缺失部分,请按照以下提示,把缺失部分补充完整: 【参考答案】

(1) MyVector::MyVector (2) i.x - j.x, i.y - j.y (3) v1 + v2

第二套

注释\ERROR ****found****\之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:

Constructor called. The value is 10 Max number is 20 Destructor called. 【参考答案】 (1)MyClass(int i)

(2)int Max(int x, int y, int z)

(3)cout<< \

的定义补充完整。使程序的输出结果为:

The element of stack are:4 3 2 1 【参考答案】 (1)item(val) (2)delete [] p

(3)temp = top

(4)temp->next = top

了用于表示平面坐标系中的点的类MyPoint和表示矩形的类MyRectangle;程序应当显示: (0,2)(2,2)(2,0)(0,0)4 (1)MyPoint p1, MyPoint p2

(2)up_left.getX(), down_right.getY() (3)double MyRectangle

第三套

释\ ****found****\之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:

The value is 10

(1)MyClass(int val) : value(val) {}

(2)void MyClass::SetValue(int val) { value = val; } (3)cout<< \

请在程序中的横线处填写适当的代码,然后删除横线,以实现上述功能。此程序的正确输出结果应为: a,b,c c,b,a

(1)new char[s] (2)delete [] p (3)p[top] = c (4)return p[top]

C++程序proj3.cpp,其功能是读取文本文件in.dat中的全部内容,将文本存放到doc类的对象myDoc中。然后将myDoc中的字

符序列反转,并输出到文件out.dat中。文件in.dat的长度不大于1000字节。 【参考答案】 int i, j;

for(i = 0, j = length-1; i

char temp = str[i]; str[i] = str[j]; str[j] = temp; }

第四套

个注释\ ****found****\之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: (4,4)

【参考答案】

(1)Point(double x, double y) :_x(x),_y(y) {}或Point(double x, double y) {_x = x;_y = y;} (2)void Move(double xOff, double yOff)

(3)cout<< '('<< pt.GetX()<< ','<< pt.GetY()<< ')'<< endl;

请在程序中的横线处填写适当的代码,然后删除横线,以完成Base1、Base2和Derived类的功能。此程序的正确输出结果应为: I'm a derived class. 【参考答案】

(1)virtual void Show() = 0 (2)strcpy(_p, s)

(3)public Base1, private Base2 (4)Base2(s)

文本文件in.dat中读取全部整数,将整数序列存放到intArray类的对象myArray中,然后对整数序列按非递减排序,最后由函数

writeToFile选择序列中的部分数据输出到文件out.dat中。文件in.dat中的整数个数不大于300个。

【参考答案】

for (int i = 0; i < length; ++i) for (int j = i; j < length; ++j) if (array[i] > array[j]) {

int temp;

temp = array[i]; array[i] = array[j]; array[j] = temp; }

for (int a = 0; a < length; ++a) cout<< array[a]<< \第五套

个注释\ERROR *********found**********\之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: NUM=0 Value=1 【参考答案】

(1)MyClass(int i=0) : NUM(0) {

(2)void Increment(MyClass& f) { f._i++; } (3)Increment(obj);

Score是一个用于管理考试成绩的类。其中,数据成员_s指向存储成绩的数组,_n表示成绩的个数;成员函数Sort使用冒

排序法将全部成绩按升序进行排列。 【参考答案】 (1)i++ (2)_n-1

(3)_s[j] =_s[j-1] (4)_s[j-1] = t

组测试数据,此种情况下程序的输出应该是: ValArray v1={1,2,3,4,5} ValArray v2={2,2,2,2,2} 【参考答案】 size = other.size;

v = new int [other.size]; for (int i = 0; i < size; ++i) v[i] = other.v[i];

第六套

个注释\ ****found****\之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: The value is:10 【参考答案】 (1)public:

(2)MyClass(int val) :_m(val) {}或MyClass(int val){_m=val} (3)cout<< \

CharShape是一个抽象基类,它表示由字符组成的图形(简称字符图形),纯虚函数Show用于显示不同字符图形的相同操

作接口。Triangle和Rectangle是CharShape的派生类,它们分别用于表示字符三角形和字符矩形,并且都定义了成员函数

Show,用于实现各自的显示操作。程序的正确输出结果应为: * *** ***** ******* ######## ######## ########

【参考答案】 (1)i

(2)_rows (3)_cols

(4)CharShape& cs

myArray。类intArray重载了\=\运算符。程序中给出了一个测试数据文件input,不超过300个的整数。程序的输出是: 10 11 13 16 20

【参考答案】

for (int i = 0; i < length; i++) array[i] = src.array[i]; 第七套

****found****\之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: This object is no.1 【参考答案】 (1)void Inc() (2)int count; (3)obj->Inc();

运行程序时,如果输入的一行字符序列是 ABC012XYZ378MN274WS 则输出为:

Digit string 1 is 012 Digit string 2 is 378 Digit string 3 is 274

【参考答案】 (1)return NULL (2)*buf = *src (3)i++

的类Person和表示职员的类Staff;程序应当显示: 张小丽123456789012345 【参考答案】

(1)delete []idcardno, name

(2)name = new char[strlen(new name)+1] (3)Person(id card no,p name,is male)

第八套

数组元素个数的常量Size定义为4,并用int类型对类模板进行了实例化。文件中位于每个注释\之后

的一行语句存在错误。请改正这些错误,使程序的输出结果为: 1 2 3 4

【参考答案】

(1)const int Size = 4;

(2)void MyClass::Print() (3)MyClass obj(intArray);

处填写适当的代码,然后删除横线,以实现上述类定义和函数定义。此程序的正确输出结果应为:

教材名:C++语言程序设计 页 数:299 作 者:张三

相关课程:面向对象的程序设计 【参考答案】

(1)writer = new char[strlen(the_writer)+1]; (2)delete []title,writer;

(3)Book(the_title,pages,the_writer) (4)a_book.theCourse()<< endl

和表示一天中的时间的类TimeOfDay;程序应当显示: 01:02:03.004 06:04:06.021 【参考答案】

(1)Number<60> seconds;

(2)advanceMinutes(seconds.advance(k)) (3){ s++; n -= base; }

第九套

释\ERROR ****found****\之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:You are right. 【参考答案】 (1)~MyClass() {}

(2)friend void Judge(MyClass &obj); (3)MyClass object(10);

上述功能。此程序的正确输出结果应为: 此图形是一个抽象图形,周长=0,面积=0 此图形是一个三角形,周长=6.82843,面积=2 【参考答案】 (1)x(x0), y(y0)

(2)Point point1, point2, point3

(3)return length(point1,point2) + length(point1, point3) + length(point2, point3) (4)void show(Shape& shape)

请使用\答题\菜单命令或直接用VC6打开考生文件夹下的工程proj3,其中声明的是一个人员信息类,补充编制程序,使

其功能完整。在main函数中给出了一组测试数据,此种情况下程序的输出应该是:Zhang 20 Tsinghua。 【参考答案】

address = new char[strlen( add) + 1]; strcpy(address, add);、 第十套

书名:C++语句程序设计 总页数:299 已把\++语言程序设计\翻到第50页 已把\++语言程序设计\翻到第51页 已把\++语言程序设计\翻到第52页 已把\++语言程序设计\翻到第51页 已把书合上。 【参考答案】

(1)Book(const char *theTitle, int pages) : num_ pages(pages)

(2)void openAtPage(int page_no) { //把书翻到指定页 (3)cur_page = 0; 办公室房间号:308 办公室长度:5.6 办公室宽度:4.8 办公室面积:26.88

办公室所属部门:会计科 【参考答案】

(1)return length * width;

(2)Room(the room_no, the_length, the_width) (3)depart, the_depart

(4)an office(308,5.6,4.8,\会计科\屏幕上输出的正确结果应该是: Hello!

Happy new year! 【参考答案】

length = otherString.length; setString(otherString.sPtr); return *this; 第十一套

个注释\ ****found****\之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:

Constructor called. The value is 10

Copy constructor called. The value is 10 Destructor called. Destructor called. 【参考答案】

(1)MyClass(int i = 10)

(2)MyClass(const MyClass & p) (3)~MyClass()

请使用VC6或使用\答题\菜单打开考生文件夹proj2下的工程proj2,其中有矩阵基类MatrixBase、矩阵类Matrix和单位阵

UnitMatrix的定义,还有main函数的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结 果应为: 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7

【参考答案】 (1)getElement(i, j)

(2)MatrixBase(rows, cols)

(3)new double[rows*cols] (4)r == c

类。DataList的重载运算符函数operator+,其功能是求当前数据表与另一个相同长度的数据表之和;即它返回一个数据表,

其每个元素等于相应两个数据表对应元素之和。请编写这个operator+函数。程序的正确输出应该是: 两个数据表: 1,2,3,4,5,6 3,4,5,6,7,8 【参考答案】

for( int i=0; i < len; ++i) dd[i] = d[i] + list.d[i];

第十二套

请使用VC6或使用\答题\菜单打开考生文件夹proj1下的工程proj1,其中有枚举DOGCOLOR、狗类Dog和主函数main的定

义。程序中位于每个//ERROR ****found****下的语句行有错误,请加以更正。更正后程序的输出应该是:

There is a white dog named Hoho. There is a black dog named Haha. There is a motley dog named Hihi. 【参考答案】

(1)this->color = color;

(2)const char getName() const { return *name; }

(3)Dog dog1(\

请使用VC6或使用\答题\菜单打开考生文件夹proj2下的工程proj2,该工程中包含一个程序文件main.cpp,其中有坐标点类point、线段类Line和三角形类Triangle的定义,还有main函数的定义。程序中两点间的距离的计算是按公式

请在程序中的横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的正确输出结果应为:

Side 1:9.43398 Side 2:5 Side 3:8 area:20

【参考答案】 (1)const Point& p (2)p1(p1), p2(p2)

(3)Point p1, Point p2, Point p3

(4)(length1() + length2() + length3())/2

类。sort成员函数的功能是将当前数据表中的元素升序排列。请编写这个sort函数。程序的正确输出应为:

排序前:7,1,3,11,6,9,12,10,8,4,5,2 排序后:1,2,3,4,5,6,7,8,9,10,11,12 【参考答案】

for(int i = 0; i < len; ++i) for(int j = i; j < len; ++j) if( d[i] > d[j]) {

int temp = d[i]; d[i] = d[j]; d[j] = temp; }

第十三套

****found****之后的一行语句有错误,请加以更正。更正后程序的输出应该是:End point 1=(1,8),End point 2=(5,2), length=7.2111。 【参考答案】

(1)Line(double x1, double y1, double x2, double y2) {

(2)cout<< \。\

(3)return sqrt((l.getX1() - l.getX2()) * (l.getX1() - l.getX2()) + (l.getY1() - l.getY2()) * (l.getY1() - l.getY2()));

请使用VC6或使用\答题\菜单打开考生文件夹proj2下的工程proj2。其中有向量基类VectorBase、向量类Vector和零向量类

ZeroVector的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。该程序正确输出结果应为: (1,2,3,4,5) (0,0,0,0,0,0) 【参考答案】

(1)getElement(length()-1)<< (2)delete []val (3)s += val[i] (4)return 0.0;

的类。其成员函数insert的功能是将一个数据插入到一个有序表中,使得该数据表仍然保持有序。请编写这个insert函数。程 序的正确输出应为: 插入前:

1,2,4,5,7,8,10 插入6和3后:

1,2,3,4,5,6,7,8,10

【参考答案】

for( int i = 0; i < len; ++i) if (data < d[i]) {

len++;

double *dd = new double[len]; for (int k = len; k >i; k--) dd[k] = d[k-1]; dd[i] = data;

for (int j = 0; j < i; j++) dd[j] = d[j]; delete []d;

d = new double[len];

for (int index = 0; index < len; ++index) d[index] = dd[index]; delete []dd; break; }

第十四套

语句有错误,请加以更正。更正后程序的输出应为:

Name:Smith Age:21 ID:99999 CourseNum:12 Record:970 【参考答案】 (1)char *Name; (2)~StudentInfo() {}

(3)StudentInfo::StudentInfo(char *name, int age, int ID, int courseNum, float record)

类。然后以motorcar和bicycle作为基类,再派生出motorcycle类。要求将vehicle作为虚基类,避免二义性问题。请在程序中的

横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为: 80 150 100 1

【参考答案】

(1)MaxSpeed(maxspeed), Weight(weight) { }; (2)virtual (3)virtual

(4)public bicycle, public motorcar

请使用VC6或使用\答题\菜单打开考生文件夹proj3下的工程proj3,其中声明的CDeepCopy是一个用于表示矩阵的类。请

编写这个类的赋值运算符成员函数operator=,以实现深层复制。 【参考答案】 n = r.n; delete []p; p = new int[n];

for (int i = 0; i < n; i++) p[i] = r.p[i]; return *this; 第十五套

语句有错误,请加以更正。更正后程序的输出应为: value = 63 number = 1 【参考答案】

(1)MyClass(int val) : N(1) (2)~MyClass() { delete [] p; } (3)void print(MyClass & obj)

请使用VC6或使用\答题\菜单打开考生文件夹proj2下的工程proj2,其中定义了Component类、Composite类和Leaf

类。Component是抽象基类,Composite和Leaf是Component的公有派生类。请在横线处填写适当的代码并删除横线,以实现上 述类定义。此程序的正确输出结果应为: Leaf Node

【参考答案】

(1)virtual void print() const = 0 (2)Component* child

(3)cout<< \

请使用VC6或使用\答题\菜单打开考生文件夹proj3下的工程proj3,其中定义的Matrix是一个用于表示矩阵的类。成员函

数max_value的功能是求出所有矩阵元素中的最大值。例如,若有3×3矩阵 则调用max_value函数,返回值为3。请编写成员函数max_value。 【参考答案】 int temp = 0;

for (int i = 0; i < M; i++) for (int j = 0; j < N; j++) if (temp < array[i][j]) temp = array[i][j]; return temp;

第十六套

打开503号门...门是锁着的,打不开。 打开503号门的锁...锁开了。 打开503号门...门打开了。

打开503号门...门是开着的,无需再开门。 锁上503号门...先关门...门锁上了。 【参考答案】

(1)this->num = num; (2)if(!closed) (3)void lock(){ 按姓名排序 排序前

张三 男 出生日期:1978年4月20日 王五 女 出生日期:1965年8月3日 杨六 女 出生日期:1965年9月5日 李四 男 出生日期:1973年5月30日

排序后:

李四 男 出生日期:1973年5月30日 王五 女 出生日期:1965年8月3日

杨六 女 出生日期:1965年9月5日 张三 男 出生日期:1978年4月20日 【参考答案】

(1)is_male(is_male), birth_date(birth_date) (2)return strcmp(name, p.getName());

(3)<

请使用VC6或使用\答题\菜单打开考生文件夹proj3下的工程proj3,其中包含了类IntegerSet和主函数main的定义。一个

IntegerSet对象就是一个整数的集合,其中包含0个或多个无重复的整数;为了便于进行集合操作,这些整数按升序存放在成 员数组elem的前若干单元中。成员函数add的作用是将一个元素添加到集合中(如果集合中不存在该元素),成员函数remove从

集合中删除指定的元素(如果集合中存在该元素)。请编写成员函数remove。在main函数中给出了一组测试数据,此时程序的 【参考答案】

for (int i = 0; i < counter; i++) if (element == elem[i]) {

for (int j = i; j < counter-1; j++) elem[j] = elem[j+1]; counter--; return; }

第十七套

该工程中包含程序文件main.cpp,其中有关TVSet(\电 视机\和主函数main的定义。更正后程序的输出应该是: 规格:29英寸,电源:开,频道:5,音量:18 规格:29英寸,电源:关,频道:-1,音量:-1 【参考答案】

(1)TVSet(int size) : size(size) { (2)void turnOnOff()

(3)cout<<\规格:\英寸\

其中有类uadritic、类Root以及主函数main的定义。一个Quadritic对象表示一个ax2+bx+c的一元二次多项式。一个Root对象用于表示

程ax2+bx+c=0的一组根,它的数据成员num_of_roots有三种可能的值,即0、1和2,分别表示根的三种情况:无实根、有两个相同的实根和有两个不同的实根。 【参考答案】

(1)x1(root), x2(root), num_of_roots(1) (2)cout<< \无实根\ (3)a(a), b(b), c(c)

(4)return Quadratic(a - x.a, b - x.b, c - x.c);

请使用VC6或使用\答题\菜单打开考生文件夹proj3下的工程proj3,其中包含了类Integers和主函数main的定义。一个

ntegers对象就是一个整数的集合,其中包含0个或多个可重复的整数。成员函数add的作

用是将一个元素添加到集合中,成员

数remove的作用是从集合中删除指定的元素(如果集合中存在该元素),成员函数sort的作用是将集合中的整数按升序进行排 序。

【参考答案】

for (int i = 0; i < counter; i++)

for (int j = counter -1; j > i; j--) if (elem[i] > elem[j]) {

int temp = elem[i]; elem[i] = elem[j]; elem[j] = temp; }

第十八套

该工程中包含程序文件main.cpp,其中有类Foo和主函数main的定义。更正后程序的输出应该是: X=a Y=42

【参考答案】 (1)int Foo::y_= 42; (2)Foo f('a');

(3)cout<< \

其中有类Point(点)、Rectangle(\矩形\和Circle(\圆\的定义。在程序所使用的平面坐标系统中,x轴的正方向是水平向右的,y轴的正方向是竖直向下的。 【参考答案】

(1)point.getX() + width, point.getY() + height (2)radius * radius

(3)center.getX() - radius, center.getY() - radius (4)2 * radius;

请使用VC6或使用\答题\菜单打开考生文件夹proj3下的工程proj3,其中定义了MyString类,一个用于表示字符串的类。成员函数reverse的功能是将字符串进行\反转\。例如,将字符串ABCDEF\反转\后,得到字符串FEDCBA;将字符串ABCDEFG\反转\后,得到字符串GFEDCBA。请编写成员函数reverse。 【参考答案】

int length = strlen(str);

for (int i = 0, j = length -1; i < j; i++, j--) {

char temp = str[i]; str[i] = str[j]; str[j] = temp; }

第十九套

此工程中包含了类Pets(\宠物\和主函数main的定义。 Name:sonny Type:dog

Name:John Type:dog Name:Danny Type:cat Name:John Type:dog 【参考答案】

(1)this->type = type; (2)delete [] name;

(3)strcpy(this->name,s.name);

该工程中包含一个程序文件main.cpp,其中有类CPolygon(\多边形\、CRectangle(\矩形\、CTriangle(\三角形\的定义。该程序的正确输出结果应为: 20 10

【参考答案】

(1)virtual int area(void) = 0; (2)area()

(3)length * height (4)CPolygon

其中声明了ValArray类,该类在内部维护一个动态配的整型数组。ValArray类的拷贝构造函数应实现对象的深层复制。请编写ValArray类的拷贝构造函数。 ValArray v1={1,2,3,4,5} ValArray v2={1,2,3,4,5} 【参考答案】 size = other.size; v = new int[size];

for (int i = 0; i < size; i++) setArray(i,other.v[i]);

第二十套

其中有点类Point和线段类Line和主函数main的定义更正后程序的输出应为: p1=(8,4)p2=(3,5) 【参考答案】

(1):x(x), y(y) {}或this->x=x,this->y=y;

(2)void show() const { cout<< '('<< x<< ','<< y<< ')'; } (3): p1(pt1), p2(pt2) {}或{p1=pt1;p2=p2}

其中有整数栈类IntList、顺序栈类SeqList和链接栈类LinkList的定义。 4 6 3 1 8 4 6 3 1 8

【参考答案】 (1)top(-1) {} (2)data[top--] (3)top(NULL) (4)p->next = top;

其中声明IntSet是一个用于表示正整数集合的类。IntSet的成员函数Intersection的功能是求当前集合与另一个集合的交集。 求交集前:

1 2 3 5 8 10

2 8 9 11 30 56 67

求交集后:

1 2 3 5 8 10

2 8 9 11 30 56 67 2 8 【参考答案】

for (int i = 0; i <=set.GetEnd(); i++)

if (IsMemberOf(set.GetElement(i))) a[size++] = set.GetElement(i);

第二十一套

此工程中包含程序文件main.cpp,其中有ElectricFan(\电风扇\类和主函数main的定义。 品牌:清风牌,电源:关,风速:0 品牌:清风牌,电源:开,风速:3 品牌:清风牌,电源:关,风速:0 【参考答案】

(1)const char * theBrand()const{ return brand;} //返回电扇品牌 (2)void turnOff(){ intensity = 0; } //关电扇

(3)if (inten >=1 && inten <= 3) intensity = inten;

其中有类utoMobile(\汽车\及其派生类Car(\小轿车\、Truck(\卡车\的定义,还有主函数main的定义。

【参考答案】

(1)strcpy(brand, the_brand);

(2)number = new char[strlen(the_number) + 1]; (3)theBrand()

(4)const { return \卡车\返回汽车类别 其中使用友元函数访问类的私有数据成员,求出两个数据成元的大于1的最小公因子。请编写友员函数FriFun

Common denominator is 2

【参考答案】

int min = x.a < x.b ? x.a : x.b; for (int i = 2; i <= min; i++)

if (x.a%i == 0 && x.b%i == 0) return i; return -1; 第二十二套

该工程中包含程序文件main.cpp,其中有Salary(\工资\类和主函数main的定义。 应发合计:3500 应扣合计:67.5 实发工资:3432.5 【参考答案】

(1):base(the_base), bonus(the_bonus), tax(the_tax) (2)~Salary(){ delete []staff_id; }

(3)cout<<\实发工资:\此工程中包含一个程序文件main.cpp,其中有\部门\类Department和\职工\类Staff的定义,

还有主函数main的定义。在主函数中定义了两个\职工\对象,他们属于同一部门。 程序展示,当该部门改换办公室后,这两个人的办公室也同时得到改变。 【参考答案】

(1)strcpy(this->office, office); (2)return office (3)dept(my_dept) {

(4)dept.changeOfficeTo(\

,其中包含了类TaxCalculator(\个税计算器\和主函数main的定义。创建\个税计算器\需要接收税率表信息和起征额信息。在main函数中,通过两个数组创建了如下的税率表: 【参考答案】

if (income <= 2000) return tax payable; if (taxable > lower limits[i]){

tax payable += (taxable - lower limits[i])*rates[i]; taxable = lower limits[i]; }

第二十三套

其中在编辑窗口内显示的主程序文件中定义有类ABC和主函数main。 21 23

【参考答案】

(1)ABC() : a(0), b(0), c(0) {} (2)int s1 = x.Sum() + y.Sum(); (3)int s2 = s1 + w->Sum();

其中在编辑窗口内显示的主程序文件中定义有类Base和Derived,以及主函数main。程序文本中位于每行\下面的一行内有一处或多处下划线标记,请在每个下划线标记处填写合适的内容,并删除掉下划线标记。经修改后运行程序,得到的输出应为:sum=55。

【参考答案】 (1)public Base (2)Base::sum() (3)Derived:: (4)Base(m1, m2)

其中包含主程序文件main.cpp和用户定义的头文件Array.h,整个程序包含有类Array的定义和主函数main的定义。请把主程序文件中的Array类的成员函数Contrary()的定义补充 完整

5 8

5,4,3,2,1

0,0,8.4,5.6,4.5,3.4,2.3,1.2 【参考答案】

for (int i = 0, j = m-1; i < j; i++, j--) {

Type temp = a[i]; a[i] = a[j]; a[j] = temp;

}

第二十四套

此工程中包含程序文件main.cpp,其中有类Score(\成绩\和主函数main的定义。 学号:12345678 课程:英语 总评成绩:85 【参考答案】

(1)strcpy(student_id,the_id);

(2)const char *getID()const{ return student_id; } //返回学号 (3)int Score::getFinal() const {

此工程中包含一个程序文件main.cpp,其中有\班级\类Class和\学生\类Student的定义,还有主函数main的定义。在主函数中定义了两个\学生\对象,他们属于同一班级。程 序展示,当该班级换教室后,这两个人的教室也同时得到改变。 改换教室前:

学号:0789 姓名:张三 班级:062113 教室:521 学号:0513 姓名:李四 班级:062113 教室:521 【参考答案】

(1)strcpy(classroom, room); (2)return classroom; (3)my_class(the_class)

(4)cla.changeRoomTo(\

形如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的值是由参数指定的。

Value of p1 when x=2.0∶59.8 Value of p2 when x=3.0∶226.8 【参考答案】

for (int i = 1; i < num of terms; i++) {

int j = i-1;

double x value = x; while(j > 0) {

x value *= x; j--; }

value += coef[i]*x value; }

第二十五套

该工程中包含程序文件main.cpp,其中有类Clock(\时钟\的定义和主函数main的定义。 Initial times are

0 d:0 h:0 m:59 s After one second times are

0 d:0 h:1 m:0 s 【参考答案】

(1)void Clock::print() const (2)set(++total_sec); (3)return *this;

该工程中包含程序文件main.cpp,其中有类Mammal(\哺乳动物\、类Elephant(\大象\、类Mouse(\老鼠\的定义和主函数main的定义。 ELEPHANT

MOUSE 【参考答案】

(1)char[strlen(str) + 1]; (2)Mammal(str)

(3)return output[MOUSE]; (4)Elephant

其中声明了一个单向链表类sList。sList的成员函数Prepend的功能是在链表头部加入一个新的元素。请编写成员函数Prepend。 B→A→ ### A→ ###

A→ ###

exiting inner block exiting outer block

【参考答案】

sListItem* temp = new sListItem; temp->data = c; temp->next = h; h = temp; 第二十六套

该工程中包含程序文件main.cpp,其中有类CDate(\日期\和主函数main的定义。 原日期:2005-9-25

更新后的日期:2006-4-1 【参考答案】 (1)public:

(2)SetDate(d,m,y);

(3)cout<< m_nYear<< \

其中定义了Employee类和Manager类。Employee用于表示某公司的雇员,其属性包括姓名(name)和工作部分(dept)。Manager是Employee的公有派生类,用于表示雇员中的经理。除了姓名和工作部分之外,Manager的属性还包括级别(level)。Employee类的成员函数print用于输出雇员的信息;Manager类的成员函数print负责输出经理的信息。 Name:Sally Smith Dept:Sales

Level:2

【参考答案】

(1)name_(name), dept_(dept) (2)return dept_;

(3)Employee(name, dept), level_(level) (4)Employee::print();

该工程中含定义了用于表示姓名的抽象类Name、表示\先名后姓\的姓名类Name1(名、姓之间用空格隔开)和表示\先姓后名\的姓名类Name2(姓、名之间用逗号隔开); John Smith

Smith,John 【参考答案】

(1)cout<< firstname<< \ (2)head[i] = start[i]

(3)return new Name2(s); else return new Name1(s)

第二十七套

其中在编辑窗口内显示的主程序文件中定义有类AAA和主函数main。程序文本中位于每行\下面的一行有错误,请加以更正。更正后程序的输出应该是:sum=60。

【参考答案】 (1)public:

(2)for(int i=0; i

其中定义了类Set和用于测试该类的主函数main。类Set是一个用于描述字符集合的类,在该字符集合中,元素不能重复(将'a'和'A'视为不同元素),元素最大个数为100。为该类实现一个构造函数Set(char*s),它用一个字符串来构造一个集合对象,当字符串中出现重复字符时,只放入一个字符。此外,还要为该类实现另一个成员函数InSet(char c),用于测试一个字符c是否在一个集合中,若在,则返回true;否则返回false。构造函数Set和成员函数InSet的部分实现代码已在文件proj2.cpp中给出,请在标有注释\:\的行中添加适当的代码,将这两个函数补充完整,以实现其功能。 【参考答案】 (1)!InSet(*s)

(2)setdata[num++] = *s (3)c == setdata[i] (4)return true

其中声明了MiniComplex是一个用于表示复数的类。请编写这个operator +运算符函数,以实现复数的求和运算。两个复数的和是指这样一个复数:其实部等于两个复数的实部之和,其虚部等于两个复数的虚部之和。例如,(23+34i)+(56+35i)等于(79+69i)。 【参考答案】

MiniComplex sum;

sum.imagPart = this->imagPart + otherComplex.imagPart; sum.realPart = this->realPart + otherComplex.realPart; return sum; 第二十八套

其中位于每个注释\ERROR ****found****\之后的一行语句存在错误。请改正这些错误,

使程序的输出结果为:

Constructor called of 10 The value is 10

Destructor called of 10

【参考答案】

(1)void Print() const (2)~MyClass() (3)int value;

其中定义了类Bag和用于测试该类的主函数main。类Bag是一个袋子类,用于存放带有数字标号的小球(如台球中用的球,在类中用一个整数值表示一个小球),其运算符成员函数==用来判断两个袋子对象是否相同(即小球个数相同、每种小球数目也相同,但与它们的存储顺序无关);成员函数int InBag(int ball)用来返回小球ball在当前袋子内的出现次数,返回0表示该小球不存在。为类实现这两个函数,其用法可参见主函数main。

提示:在运算符函数==中首先判断两个袋子内的小球个数是否相同,再调用InBag函数来判断每种小球在两个袋子内的出现次数是否相同。 【参考答案】

(1)InBag(bag[i]) != b.InBag(bag[i]) (2)return false (3)ball == bag[i] (4)count++

此工程中包含一个源程序文件proj3.cpp,其中定义了用于表示平面坐标系中的点的类MyPoint和表示三角形的类MyTriangle;程序应当显示: 6.82843 2

但程序中有缺少部分,请按照以下提示,把缺失部分补充完整:

(1)在//**1** ****found**** 的下方是构造函数的定义,它用参数提供的三个顶点对point1、point2和point3进行初始化。

(2)在//**2** ****found**** 的下方是成员函数perimeter的定义,该函数返回三角形的周长。

(3)在//**3** ****found**** 的下方是成员函数area的定义中的一条语句。函数area返回三角形的面积。 【参考答案】

(1)point1(p1), point2(p2), point3(p3) (2)::perimeter()const (3)(this->perimeter())/2 第二十九套

此工程中含有一个源程序文件proj1.cpp。其中位于每注释\之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: There are 2 object(s). 【参考答案】

(1)MyClass(int i = 0):value(i) (2)int MyClass::count = 0; (3)obj2.Print();

---排序前--- a1=3 1 2

a2=5 2 7 4 1 6 3

---排序后--- a1=1 2 3

a2=1 2 3 4 5 6 7 【参考答案】

for (int i = 0; i < size; i++)

for (int j = i+1; j < size; j++) if (data[i] > data[j]) swap(i, j); 第四十九套

Name:Smith Age:21 ID:99999 CourseNum:12 Record:970 【参考答案】 (1)char *Name;

(2)StudentInfo(char *name, int age, int ID, int courseNum, float record); (3)void StudentInfo::show() const

此工程中包含一个程序文件main.cpp,其中有类Point(\点\、Circle(\圆\和主函数main的定义。请在横线处填写适当的代码并删除横线,以实现上述定义,此程序的正确输出结果应为: [30,50]

center=[120,89];radius=2.7 【参考答案】

(1):x(xValue), y(yValue) (2)virtual void Disp()

(3): Point(xValue,yValue), radius(radiusValue)

其中声明了ValArray类,该类在内部维护一个动态分配的整型数组v。ValArray类的成员函数equals用于判断两个对象是否相等。两个ValArray对象相等,当且仅当两者的元素个数size相等,并且整型数组v的对应元素分别相等。如果两个对象相等,则equals返回true,否则返回false。请编写成员函数equals。在main函数中给出了一组测试数据,此种情况下程序的输出结果应为: 【参考答案】

if (size != other.size)//判断数组长度 return false;

for (int i = 0; i < size; i++)//判断数组元素 if (v[i] != other.v[i]) return false; return true; 第五十套

此工程中包括类Date(\日期\和主函数main的定义。 2006-1-1 2005-12-31 2005-12-31 2006-1-1

【参考答案】

(1): year(y), month(m), day(d) (2)Date(const Date & d) (3)int year, month, day;

其中在编辑窗口内显示的主程序文件中定义有类Point和Circle,以及主函数main。程序文本中位于每行\****found****\之后的一行内有一处或多处下划线标记,请在下划线处填写合适的内容,并删去下划线标记。经修改后运行程序,得到的输出应为: Point:(0,0)3 Point:(4,5)6 28.2743 113.097 【参考答案】 (1)cc.PrintP() (2)Circle (3):cc(cen) (4) b.PrintP()

其中包含主程序文件main.cpp和用户定义的头文件Array.h,整个程序包含有类Array的定义和主函数main的定义。请把主程序文件中的Array类的成员函数MinTwo()的定义补充 整,经修改后运行程序,得到的输出应: 8

29,20,33,12,18,66,25,14 12,14 【参考答案】

for (int i = 2; i < size; i++) if (x2 > a[i]) if (x1 > a[i]) {

x2 = x1; x1 = a[i]; } else {

x2 = a[i]; }

5

凡是使用过C语言标准库函数strcpy(char*s1,char*s2)的程序员都知道使用该函数时有一个安全隐患,即当指针s1所指向空间不能容纳字符串s2的内容时,将发生内存错误。类String的Strcpy成员函数能进行简单的动态内存管理,其内存管理策为:①若已有空间能容纳新字符串,则直接进行字符串拷贝;②若已有空间不够时,将重新申请一块内存空间(能容纳下新符串),并将新字符串内容拷贝到新申请的空间中,释放原字符串空间。 【参考答案】 (1)++q; ++s; (2)(*p = *s) != 0

该工程中包含一个源程序文件proj3.cpp,其中定义了用于表示平面坐标系中的点的类MyPoint和表示圆形的类MyCircle;程序应当显示: (1,2),5,31.4159,78.5398 【参考答案】 (1)rad(r)

(2)2*c.radius() (3)MyCircle a 第三十套

其中有枚举PetType、宠物类Pet和主函数main的定义。 There is a dog named Doggie There is a cat named Mimi

There is an unknown animal named Puppy

【参考答案】

(1)strcpy(this->name,name);

(2)PetType getType() const {return type; } (3)return \

其中定义了模板函数insert(T dataset[],int & size,T item)和主函数main。模板函数insert用来将一个数据inem插入到一个已排好序(升序)的数据集dataset中,其中类型T可以为int、double、char等数据类型,size为当前数据集中元素的个数,当插入操作完成后,size值将更新。模板函数insert的部分实现代码已在文件proj2.cpp中给出, 【参考答案】

(1)item < setdata[i]

(2)setdata[size + i - j] = setdata[size+i-j-1] (3)setdata[size] = item

其中定了用于表示平面坐标系中的点的类MyPoint和表示线段的类MyLine;程序应当显示: (0,0)(1,1)

1.41421,1

y-

k=

函数slope返回线段的斜率,方法是:若线段的两个端点分别是(x1,y1)和 (x2,y2),则斜率。

【参考答案】

(1)point1(p1), point2(p2)

(2)length()const

(3)point2.getY() - point1.getY() 第三十一套

其中位于每注释\ERROR ****found****\之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: The extension is:CPP 【参考答案】

(1)MyClass(const MyClass & copy) { p = new char; *p = *(copy.p); } (2)~MyClass() {delete p; } (3)return *this;

在C++程序中访问数组元素时,如果索引值(下标)小于0或者大于元素个数减1,就会产生越界访问错误。Array是一个

带有检查越界访问功能的数组类,其成员列表如下: Array类的构造函数会动态分配一个int类型数组,以存储给定数量的元素。在公有成员函数GetValue和SetValue中,首先

调用私有成员函数IsOutOfRange检查用于访问数组元素的索引是否越界,只有当索引值在有效范围内时,才能进行元素访问 操作。

请在横线处填写适当的代码,然后删除横线,以实现Array类的功能。此程序的正确输出结果应为:

1,2,3,4,5,6,7,8,9,10 【参考答案】 (1)new int [size] (2)_p[index] = value (3)return _p[index] (4)index >_size

补充编制C++程序proj3.cpp,其功能是读取文本文件in.dat中的全部内容,将文本存放到doc类的对象myDoc中。然后分别统计26个英字母在文本中出现的次数,统计时不区分字母大小写。最后将统计结果输出到文件out.dat中。文件in.dat长度不大于1000字 节。

【参考答案】 void doc::count() {

for (int i = 0; i < length; ++i) {

if(str[i])>='a'&&str[i]<='z') counter[str[i]-'a']+'+; if(str[i])>'A'&&str[i]<='Z') couner[str[i]-'A']+'+; }

for (int index = 0; index < 26; ++index)

cout<< (char)(index + 65)<< \ << \出现的次数是:\第三十二套

其中位于每注释\ ****found****\之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: False

【参考答案】

(1)MyClass(int x) : flag(x) {} (2)void MyClass::Judge() (3)break;

请编写一个函数int Invert(char*str),其作用是将一个表示整数的字符串转换为相应整数。 【参考答案】 (1)int num = 0 (2)*str; (3)str++;

其中定义了用于表示日期的类Date、表示人员的类Person和表示职员的类Staff;程序应当显示:张小丽123456789012345

(1)在//**1** ****found****的下方是构造函数的定义中的一个语句,它用参数提供的身份证号id_card_no对数据成员 idcardno进行初始化。

(2)在//**2** ****found****的下方是构造函数定义的一个组成部分,其作用是利用参数表中的前几个参数对基类Person 进行初始化。

(3)在//**3**的下方定义了一个Staff对象,其中: 身份证号:123456789012345 姓名:张三

出生日期:1979年5月10日 性别:女

工作部门:人事部 工资:1234.56元 【参考答案】

(1) strcpy(idcardno,id card no)

(2) Person(id card no,p name,birth date,is male)

(3) Staff Zhangsan(\张三\人事部\第三十三套 其中位于每

个注释\ ****found****\之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:

Base:Good Luck! Derived:Good Luck! 【参考答案】 (1)protected:

(2)msg = new char[strlen(str) + 1]; (3)~Base() { delete [] msg; }

函数void Insert(node*q)使程序能完成如下功能:从键输入一行字符,调用该函数建立反序单链表,再输出整个链表。 【参考答案】

(1)q->link = head (2)p = new node (3)Insert(p)

其中声明了ValArray类,该类在内部维护一个动态分配的int型数组v。ValArray类的成员函数cycle用于对数组元素进行向左循环移动。调用一次cycle后,数组的第二个元素至最后一个元素都将向左移动一个位置,而最左端的元素将循环移动到最右端位置上。例如,若ValArray表示的数组为{1,2,3,4,5},则第一次调用cycle后,数组变为{2,3,4,5,1},第二次调用cycle后,数组变为{3,4,5,1,2},以此类推。请编写成员函数cycle。在main函数中给出了一组测试数据,此情况下程序的输出应该是: v={1,2,3,4,5} v={2,3,4,5,1} v={3,4,5,1,2} v={4,5,1,2,3} v={5,1,2,3,4} 【参考答案】

for (int i = 0; i < size-1; i++) {

int temp = v[i]; v[i] = v[i+1]; v[i+1] = temp; }

第三十四套

其中每个注释\之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: Constructor The value is 10 Destructor

【参考答案】 (1)~MyClass() (2)int value;

(3)void MyClass::Print() const

此工程中包含一个头文件number.h,其中包含了类Number、OctNumber、HexNumber和DecNumber的声明;包含程序文件number.cpp,其中包含了上述类的成员函数toString的定义;还包含程序文件proj2.cpp,它以各种数制格式显示输出十进制数11。 013,11,0XB

【参考答案】

(1)virtual const char* toString()const = 0 (2)HexNumber(int k) : Number(k) {} (3)cout<< number.toString() (4) show(HexNumber(11))

本题创建一个小型字符串类,字符串长度不超过100。程序文件包括proj3.h、proj3.cpp、writeToFile.obj。补充完成proj3.h,实现默认构造函数MiniString(const char *s=\和 析构函数~MiniString()。 【参考答案】

MiniString( const char *s = \ {

length = strlen(s);

sPtr = new char[length+1]; strcpy(sPtr, s); }

MiniString() { delete [] sPtr; }

第三十五套

其中每个注释\ERROR ****found****\之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:

The perimeter is 62.8 The area is 314 【参考答案】

(1)Circle(int r) : radius(r) {} (2)void Circle::Display() (3)c.Display();

其中定义了ort类和InsertSort类。Sort是一个表示排序算法的抽象类,成员函数mySort为各种排序算法定义了统一的接口,成员函数wap实现了两个整数的交换操作。InsertSort是Sort的派生类,它重新定义了基类中的成员函数mySort,具体实现了简单插入序法。 【参考答案】 (1)x = y

(2)Sort(a0, n0) (3)swap(a[j], a[j-1]) (4)break

本题创建一个小型字符串类,字符串长度不超过100。程序文件包括proj3.h、proj3.cpp、writeToFile.obj。补充完成proj3.h,重载复合赋值运算符+=。 【参考答案】

MiniString& operator+=(const MiniString& s) {

char *pt = new char [length+1]; strcpy(pt, sPtr); int blength = length; length += s.length; delete []sPtr;

sPtr = new char[length+1]; strcpy(sPtr,pt); delete []pt;

for (int i = 0; i < length; ++i) sPtr[blength+i] = s.sPtr[i]; return *this; }

第三十六套

其中每个注释\ERROR ****found****\之后的一行语句存在错误。请改正这些错误,使程

序的输出结果为: smaller smaller smaller largest

【参考答案】

(1)void Judge(MyClass &obj) (2)(ptr+i)->Set (i + 1); (3)delete [] ptr;

其中定义了yString类。MyString是一个用于表示字符串的类,其构造函数负责动态分配一个字符数组,并将形参指向的字符串复制到数组中;成员函数reverse的功能是对字符串进行反转操作,例如,字符串\经过反转操作后,会变为\;成 函数print的作用是将字符串输出到屏幕上。 【参考答案】 (1)strlen(s) + 1 (2)delete []m_str (3)m_str[n-i-1]

(4)m_str[n-i-1] = tmp

本题创建一个小型字符串类,字符串长度不超过100。程序文件包括proj3.h、proj3.cpp、writeToFile.obj。补充完成proj3.h,重载+运算符。 【参考答案】

MiniString& operator+ (const MiniString& s) {

char *pt = new char [length+1]; strcpy(pt, sPtr); int blength = length; length += s.length; delete []sPtr;

sPtr = new char[length+1]; strcpy(sPtr,pt); delete []pt;

for (int i = 0; i < length; ++i) sPtr[blength+i] = s.sPtr[i]; return *this; }

第三十七套

其中有矩形类Rectangle、函数show和主函数main的定义。程序中位于每个// ERROR ****found****下一行的语句有错误,请加以更正。更正后程序的输出应该是: Upper left=(1,8),down right=(5,2),area=24. 【参考答案】

(1)Rectangle(double x1, double y1, double x2, double y2){ (2)void show(Rectangle r){

(3)cout<< r.getX1()<< \

其中有坐标点类Point、线段类Line和矩形类Rectangle的定义,还有main函数的定义。

Width:4 Height:6

Diagonal:7.2111 area:24

【参考答案】 (1)const Point& p (2)distanceTo(p2)

(3)Point(down_right.x, upper_left.y) (4)width() * height()

其中声明了一个人员信息类Person。在Person类中数据成员name、age和address分别存放人员的姓名、年龄和地址。构造函数Person用以初始化数据成员。补充编制程序,使其功能完整。在main函数中分别创建了两个Person类对象p1和p2,并显示两个对象信息,此种情况下程序的输出应为: Jane25Beijing Tom22Shanghai 【参考答案】

strcpy(name, name);

address = new char[strlen( add) + 1]; strcpy(address, add); 第三十八套

程序中位于每个// ERROR ****found**** 下一行的语有错误,请加以更正。更正后程序的输出应为:

The value is 5 The value is 10

There are 2 objects. There are 1 objects. 【参考答案】

(1)this->value = value; (2)~MyClass()

(3)int MyClass::count = 0;

其中定义了Shape类和Point类。Shape类表示抽象的形状,其成员函数draw声明了显示形状的接口。Point是Shape的派生类,表示平面直角坐标系中的点,其成员函数draw用于在屏幕上显示Point对象;成员函数distance用于计算两个点之间的距离。提示:在平面直角坐标系中,点(x1,y2)和点(x2,y2)标准库函数sprt用于求平方根。 (3,0) (0,4)

Distance = 5 【参考答案】

(1)virtual void draw() const =0; (2)const Point& pt (3)double x_, y_; (4)x_<< ','<< y_

其中声明的Matrix是一个用于表示矩阵的类。其成员函数transpose的功能是实现矩阵的转置运算。将矩阵A的行列互换,所得到的矩阵称为A的转置,记作AT。例如,若有3×3矩

【参考答案】

for(int i = 0; i < M; i++) for(int j = 0; j < i; j++) {

int temp = array[i][j]; array[i][j] = array[j][i]; array[j][i] = temp; }

第三十九套

程序中位于每个// ERROR ****found****之后的一行句有错误,请加以更正。更正后程序的输出应该是:

Name:Smith Age:21 ID:99999 CourseNum:12 Record:970 【参考答案】 (1)char *Name;

(2)StudentInfo(char *name, int age, int ID, int courseNum, float record); (3)~StudentInfo() { delete [] Name; }

其中包含抽象类Shape的声明,以及在此基础上派生出的类Rectangle和Circle的声明,二者都有计算对象面积的函数GetArea()和计算对象周长的函数GetPerim()。 The area of the Circle is 78.5

The perimeter of the Circle is 31.4 The area of the Rectangle is 24

The perimeter of the Rectangle is 20

【参考答案】 (1)virtual (2)virtual

(3)itsLength(len), itsWidth(width) (4)Shape* sp;

请使用VC6或使用\答题\菜单打开考生文件夹proj3下的工程proj3,其中声明的CDeepCopy是一个用于表示动态数组的

类。请编写其中的拷贝构造函数。 【参考答案】 n = r.n;

p = new int[n];

for (int index = 0; index < n; index++) p[index] = r.p[index]; 第四十套

打开503号门...门是锁着的,打不开。 打开503号门的锁...锁开了。 打开503号门...门打开了。

打开503号门...门是开着的,无需再开门。 锁上503号门...先关门...门锁上了。 【参考答案】

(1)Door(int n) : num(n), closed(true), locked(true) {}

(2)void open(){ // 开门 (3)if(!closed){

请使用VC6或使用\答题\菜单打开考生文件夹proj2下的工程proj2。此工程中包含一个程序文件main.cpp,其中有日期类

Date、人员类Person以及排序函数sortByAge和主函数main的定义。请在横线处填写适当的代码并删除横线,以实现该程序。 该程序的正确输出结果应为: 排序前:

张三 男 出生日期:1978年4月20日 王五 女 出生日期:1965年8月3日 杨六 女 出生日期:1965年9月5日 李四 男 出生日期:1973年5月30日

排序后:

张三 男 出生日期:1978年4月20日 李四 男 出生日期:1973年5月30日 杨六 女 出生日期:1965年9月5日 王五 女 出生日期:1965年8月3日 【参考答案】 (1)name

(2)n = p.birth_date.getMonth() - birth_date.getMonth() (3)(is_male ? \男\女\ (4)ps[m]

其中包含了类Integers和主函数main的定义。一个ntegers对象就是一个整数的集合,其中包含0个或多个可重复的整数。成员函数add的作用是将一个元素添加到集合中,成员数remove的作用是从集合中删除指定的元素(如果集合中存在该元素),成员函数filter的作用是去除集合中的所有负整数。编写这个filter函数。 【参考答案】

for (int i = counter-1; i >= 0; i--) if (elem[i] < 0) {

for (int j = i; j < counter-1; j++) elem[j] = elem[j+1]; counter--; }

第四十一套

规格:29英寸,电源:开,频道:5,音量:18 规格:29英寸,电源:关,频道:-1,音量:-1 【参考答案】 (1){ volume = 18; } (2)channel = chan;

(3)void setVolumeTo(int vol){

此工程中包含一个程序文件main.cpp,其中有类Quadritic、类Root以及主函数main的定义。

一个Quadritic对象表示一个形如ax2+bx+c的一元二次多项式。一个Root对象用于表示方程ax2+bx+c=0的一组根,它的数据成员num_of_roots有三种可能的值,即0、1和2,分别表示根的三种情况:无实根、有两个相同的实根和有两个不同的实根。 3X^2+4X+5=0.1 无实根

4.5X^2+6X+2=0.0 有两个相同的实根:-0.666667和-0.666667 0.5X^2+2X-3=0.0 有两个不同的实根:0.896805和-2.23014 【参考答案】

(1)x1(root1), x2(root2), num_of_roots(2) (2)switch( num_of_roots (3)a(x.a), b(x.b), c(x.c) (4)return Root()

其中包含了日期类Date、人员类Person以及排序函数ortByAge和主函数main的定义。其中Person的成员函数compareAge的功能是:将当前Person对象和参数Person对象进行比 较,若前者的年龄大于后者的年龄,则返回一个正数;若前者的年龄小于后者的年龄,则返回一个负数;若年龄相同则返回0。注意,出生日期越大,年龄越小。请编写成员函数compareAge。 【参考答案】 int n = 0;

n = p.birth date.getYear() - birth date.getYear(); if (n != 0) return n;

n = p.birth date.getMonth() - birth date.getMonth(); if (n != 0) return n;

return p.birth date.getDay() - birth date.getDay(); 第四十二套

此工程定义了StopWatch(秒表)类,用于表示时、分、信息,有构造函数StopWatch()、设置

时间函数reset(),并且重载了前置和后置++运算符,实现增加1秒的功能。 00: 00:00

00:01:00 【参考答案】

(1)if ((++seconds) == 60) (2)return *this; (3)show(++sw);

此工程中定义了一个人员类Person,然后派生出学生类Student和教授类Professor。 My name is Zhang.

my name is Wang and my G.P.A. is 3.88. My name is Li,I have 8 publications.. 【参考答案】 (1)Person() (2)virtual void

(3): Person(s), gpa(g) (4)Person* p

其中声明了MyString类。MyString是一个用于表示字符串的类。成员函数startsWith的功能是判断此字符串是否以指定的前缀开始,其参数s用于指定前缀字符串。如果参数s表示的字符串是MyString对象表示的字符串的前缀,则返回true;否则返回false。注意,如果参

数s是空字符串或等于MyString对象表示的字符串,则结果为true。 s1=abcde s2=abc s3=abd s4=

s5=abcde s6=abcdef 【参考答案】

if (s == NULL) return true; int len = strlen(s);

if (len > size) return false; for (int i = 0; i < len; i++) if ( str[i] != s[i]) return false; return true; 第四十三套

此工程中包括类Point、函数fun和主函数main。程序中于每个// ERROR ****found****之后的一行语句有错误,请加以更正。更正后程序的输出应为: The point is(0,1) The point is(3,5)

【参考答案】

(1)Point(int x = 0, int y = 1) (2)void move(int xOff, int yOff) (3)p->print();

其中的Collection定义了集合类的操作接口。一个集合对象可以包含若干元素。工程中声明的Array是一个表示整型数组的类,是Collection的派生类,它实现了Collection中声明纯虚函数。Array的成员说明如下:

成员函数add用于向数组的末尾添加一个元素; 成员函数get用于获取数组中指定位置的元素; 数据成员a表示实际用于存储数据的整型数组;

数据成员size表示数组的容量,数组中的元素个数最多不能超过size; 数据成员num表示当前数组中的元素个数。

请在横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的正确输出结果应为:

1,2,3,4,5,6,7,8,9,10,、 【参考答案】 (1)int[s]; (2)delete []a; (3)a[num] (4)return a[i];

其中定义的MyString类是一个用于表示字符串的类。假设字符串由英文单词组成,单词与单词之间使用一个空格作为分隔符。成员函数wordCount的功能是计算组成字符串的单词的个数。

例如,字符串\由1个单词组成;字符串\由9

个单词组成。请编写成员函

数wordCount。在main函数中给出了一组测试数据,此时程序应显示: 读取输入文件...

STR1=1 STR2=9

【参考答案】

if (str == NULL) return 0; int counter = 1;

int length = strlen(str); for (int i = 0; i < length; i++) if (isspace(str[i])) counter++; return counter;

第四十四套

此工程中包含程序文件main.cpp,其中有ElectricFan(\电风扇\类和主函数main的定义。 品牌:清风牌,电源:关,风速:0 品牌:清风牌,电源:开,风速:3 品牌:清风牌,电源:关,风速:0 【参考答案】

(1)bool isOn()const{ return intensity==1;} //返回电源开关状态 (2)void turnOff(){ intensity=0;} //关电扇 (3)intensity = inten;

其中有\书\类Book及其派生出的\教材\类TeachingMaterial的定义,还有主函数main的定义。

教材名:C++语言程序设计 页 数:299 作 者:张三

相关课程:面向对象的程序设计 【参考答案】

(1)num_pages(pages) {

(2)writer = new char[strlen(the_writer) + 1]; (3)Book(the_title, pages, the_writer) { (4)a_book.theCourse();

其中声明的IntSet是一个用于表示正整数集合的类。IntSet的成员函数Merge的功能是求当前集合与另一个集合的并集,在Merge中可以使用成员函数IsMemberOf判断一个正数是否在集合中。请完成成员函数Merge。在main函数中给出了一组测试数据,此时程序的输出应该是: 求并集前:

1 2 3 5 8 10

2 8 9 11 30 56 67

求并集后:

1 2 3 5 8 10

2 8 9 11 30 56 67

1 2 3 5 8 10 9 11 30 56 67 【参考答案】

for (int i = 0; i <= end; i++) {

a[i] = element[i]; size++; }

for (int k = 0; k <= set.GetEnd(); k++)

if (!IsMemberOf(set.GetElement(k))) a[size++] = set.GetElement(k); 第四十五套

其中有类Book(\书\和主函数main的定义。 书名:C++语言程序设计 总页数:299 已把\++语言程序设计\翻到第50页 已把\++语言程序设计\翻到第51页 已把书合上。

书是合上的。

已把\++语言程序设计\翻到第1页 【参考答案】

(1)title = new char[strlen(theTitle) + 1];

(2)bool isOpen()const{ return cur_page != 0;} //书打开时返回true,否则返回false (3)cur_page = 0;

其中有类AutoMobile(\汽车\及其派生类Car(\小轿车\、Truck(\卡车\的定义,以及主函数main的定义。

车牌号:冀 ABC1234 品牌:ForLand 类别:卡车 当前档位:0 最大载重量:1 车牌号:冀 ABC1234 品牌:ForLand 类别:卡车 当前档位:2 最大载重量:1 车牌号:沪 XYZ5678 品牌:QQ 类别:小轿车 当前档位:0 座位数:5 车牌号:沪 XYZ5678 品牌:QQ 类别:小轿车 当前档位:-1 座位数:5 【参考答案】

(1)brand = new char[strlen(the_brand) + 1]; (2)strcpy(number, the_number); (3)category()

(4)AutoMobile::show();

成员函数endsWith的功能是判断此字符串是否以指定的后缀结束,其参数s用于指定后缀字符串。如果参数s表示的字符串是MyString对象表示的字符串的后缀,则返回true;否则返回false。注意,如果参数s是空字符串或等于MyString对象表示的字 符串,则结果为true。

例如,字符串\是字符串\的后缀,而字符串\不是字符串\的后缀。请编写成员函数endsWith。在

main函数中给出了一组测试数据,此种情况下程序的输出应为: 【参考答案】

int s size = strlen(s);

for (int i = 0; i < s size; i++)

if (str[size - s size + i] != s[i]) return false; return true;

第四十六套

其中位于每个// ERROR ****found****之后的一行语句有错误,请加以更正。更正后程序的输出应为: v1=23;v2=42 【参考答案】

(1)return MyClass::v2; (2)int MyClass::v2 = 42; (3)int v1 = obj.getValue();

其中定义了Stack类和Entry类。Stack是一个基于链式存储结构的栈,Entry表示存储在栈中的数据顶。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确 输出结果应为:

0 1 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 1 0 【参考答案】

(1)next(n), data(d) { } (2)top->next; (3)top++ (4)top->data;

其中声明的IntSet是一个用于表示正整数集合的类。IntSet的成员函数IsSubset的功能是判断集合B是否是集合A的子集。在IsSubSet中可以使用成员函数IsMemberOf来判断一 个正整数是否在此集合中,请编写成员函数IsSubset。在main函数中给出了一组测试数据,此时程序的输出应该为: 集合A:1 2 3 5 8 10 集合B:2 8

集合B是集合A的子集 【参考答案】

if (end < set.GetEnd()) return false;

for (int i = 0; i <= set.GetEnd(); i++)

if (!IsMemberOf(set.GetElement(i))) return false; return true; 第四十七套

其中位于每个注释\ ****found****\之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:

The value of member objects is 8 【参考答案】 (1)int val;

(2)MyClass(int x) : data(x) {}

(3){ cout<< \

请编写一个数int huiwen(int n),用于求解所有不超过200的n值,其中n的平方是具有对称性质的回文数(回文数是指一个数从左向右读从右向左读是一样的,例如:34543和1234321都是回文数)。求解的基本思想是:首先将n的平方分解成数字保存在数组中,然后将分解后的数字倒过来再组成新的整数,比较该整数是否与n的平方相等。 【参考答案】 (1)arr[i] = sqr; (2)k *= 10; (3)n*n == rqs

其中声明的Matrix是一个用于表示矩阵的类。operator+的功能是实现两个矩阵的加法运算。例如,若有两个3行3列的矩阵

则A与B相加的和为请编写operator+函数。 【参考答案】 Matrix m;

for (int i = 0; i < M; i++) for (int j = 0; j < N; j++)

m.setElement(i, j, (m1.getElement(i,j) + m2.getElement(i,j))); return m; 第四十八套

其中包含类MyClass的定义。 The value is 5 The value is 10

【参考答案】

(1)MyClass() { value = 0; } (2)void setValue(int val) (3)int value;

其中定义了vehicle类,并派生出motorcar类和bicycle类。然后以motorcar和bicycle作为基类,再派生出motocycle类。要求将vehicle作为虚基类,避免二义性问题。请在横线处填 写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为: A vehicle is running! A vehicle has stopped! A bicycle is running! A bicycle has stopped! A motorcar is running! A motocycle is running!

【参考答案】 (1)virtual void (2)virtual void

(3)vehicle(max_speed, weight), SeatNum(seat_num) {} (4)public bicycle, public motorcar

其中定义的IntArray是一个用于表示整型一维数组的类。成员函数swap可以将数组中的两个指定元素交换位置;成员函数sort的功能是将数组元素按照升序排序。请编写成员函数sort。在main函数中给出了一组测试数据,此时程序运行中应显示: 读取输入文件...

本文来源:https://www.bwwdw.com/article/7iv2.html

Top