更多"请使用“答题”菜单或使用VC6打开考生文件夹proj1下的工程proj"的相关试题:
[简答题]请使用VC6或使用[答题]菜单打开考生文件夹proj2下的工程proj2,其中有矩阵基类MatrixBase、矩阵类Matnx和单位阵UnitMatrix的定义,还有mam函数的定义。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为:
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
0 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1
注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
#include<iostream>
using namespace std;
//矩阵基础类,一个抽象类
class MatrixBase
int rows,cols;
public:
MatrixBase(int rows,int cols):rows(rows),cols(cols)
int getRows( )constreturn rows;
//矩阵行数
int gatCols( )constreturn cols;
//矩阵列数
virtual double getElement(int r,int c)const=0;//取第i个元素的值
void show( ) const
//分行显示矩阵中所有元素
for(int i=0;i<rows;i++)
cout<<endl;
for(int j=0;j<cols;j++)
//**********found**********
COUt<<______<<" ";
;
//矩阵类
class Matrix:public MatrixBase
double*val;
public:
//**********found**********
Matrix(i
[简答题]请使用VC6或使用[答题]菜单打开考生文件夹proj3下的工程proj3,其中声明的DataList类,是一个用于表示数据表的类。DataList的重载运算符函数operator+,其功能是求当前数据表与另一个相同长度的数据表之和;即它返回一个数据表,其每个元素等于相应两个数据表对应元素之和。请编写这个operator+函数。程序的正确输出应该是:
两个数据表:
1,2,3,4,5,6
3,4,5,6,7,8
两个数据表之和:
4,6,8,10,12,14
要求:
补充编制的内容写在“//********333********”与“//********666********”之间,不得修改程序的其他部分。
注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
//DataList.h
#include <iostream>
using namespace std;
class Datalist //数据表类
int len;
double*d;
public:
DataList(int len,double data[]=
DataList(Datalist &data);
int length ( ) constreturn len;
double getElement(int i)const return d[i];
Datalist operator+(const DataList&list)const; //两个数据表求和
void show ( ) const; //显示数据表void writeToFile(char*,constDataList&);
//main.cpp
#include"Datalist.h"
DataList::DataList(int len,doubledata[]):len(len)
d=new double[len];
for(int i=0;i<len;i++)
d[i]=(data==N
[简答题]请使用VC6或使用[答题] 菜单打开考生文件夹proj3下的工程文件proj3。本题创建一个小型字符串类,字符串长度不超过100。程序文件包括proj3. h、proj3. cpp、writeToFile. obj。补充完成重载赋值运算符函数,完成深复制功能。
屏幕上输出的正确结果应该是:
Hello!
Happy new year!
要求:
补充编制的内容写在“//**********333**********”与“//**********666**********”两行之间。不得修改程序的其他部分。
注意:
程序最后调用writeToFile函数,使用另一组不同的测试数据,将不同的运行结果输出到文件out. dat中。输出函数writeToFile已经编译为obj文件。
//proj3. h
#inelude < iostream >
#include < iomanip >
using namespaee std;
class MiniString
public :
friend ostream &operator << ( ostream &output, const MiniString &s ) //重载流插入运算符
output << s. sPtr; return output;
friend istream &operator >> ( istrearn &input, MiniString &s )//重载流提取运算符
char temp [100]; //用于输入的临时数组
temp[0] = ’/0’; //初始为空字符串
input >> setw( 100 ) >> temp;
int inLen = strlen(temp) ;//输入字符串长度
if( inLen != 0)
s. length = inLen; //赋长度
if( s. sPtr! = 0) delete []s. sPtr; //避免内存泄漏
s. sPtr = new ch
[简答题]请使用VC6或使用[答题]菜单打开考生文件夹projl下的工程proj1,该工程含有一个源程序文件proj1. cpp。其中位于每个注释“//ERROR **** found ****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:
The value is 10
注意:只修改注释“//ERROR ***** found ****”的下一行语句,不要改动程序中的其他内容。
// proj1, cpp
#include < iostream >
using namespace std;
class MyClass
int value ;
public :
// ERROR ******** found ********
void MyClass(int val) : value(val)
int GetValue( ) const return value;
void SetValue(int val) ;
;
//ERROR ******** found ********
inline void SetValue(int val) value = val;
int main( )
MyClass obj (0) ;
obj. SetValne(10) ;
//ERROR ******** found ******** 下列语句功能是输出obj的成员value的值
cout << "The value is " << obj. value << endl;
return 0 ;
[简答题]请使用VC6或使用[答题]菜单打开考生文件夹proj2下的工程proj2,其中定义了Component类、Composite类和Leaf类。Component是抽象基类,Composite和Leaf是Component的公有派生类。请在横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为:
Leaf Node
注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“// ****found****”。
#include<iostream>
using namespace std;
class Component
public:
//声明纯虚函数print( )
//**********found**********
;
class Composite:public Component
public:
//**********found**********
void setChild(______)
m_child=child;
virtual void print( )const
m_child->print( );
private:
Component*m_child;
;
class Leaf:public Component
public:
virtual void print( )const
//**********found**********
______
;
int main( )
Leaf node;
Composite comp;
comp.setChild(&node);
Component*p=∁
p->print( );
return 0;
[简答题]请使用VC6或使用[答题]菜单打开考生文件夹proj1下的工程proj1,此工程中含有一个源程序文件proj1.cpp。其中位于每个注释“//ERROR ****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:
Constructor called.
The value is 10
Copy constructor called.
The value is 10
Destructor called.
Destructor called.
注意:只修改注释“//ERROR ****found****”的下一行语句,不要改动程序中的其他内容。
//proj1.cpp
#include <iostream>
using namespace std;
class MyClass
public:
//ERROR **********found**********
MyClass(int i)
value=i;cout<<"Construc-tor called."<<endl;
//ERROR **********found**********
MyClass(const MyClass p)
value=p.value;
cout<<"Copy constructorcalled."<<endl;
void Print ( )
cout<<"The value is"<<value<<endl;
//ERROR **********found**********
void ~MyClass( )
cout<<"Destructor called."
<<endl;
private:
int value;
;
int main( )
MyClass obj1;
obj1.Print( );
MyClass obj2(obj1);
obj2.Print( );
return
[简答题]请使用VC6或使用[答题]菜单打开考生文件夹proj2下的工程proj2,此工程包含有一个源程序文件proj2. cpp,其中定义了Stack类和ArrayStack类。
Stack是一个用于表示数据结构“栈”的类,栈中的元素是字符型数据。Stack为抽象类,它只定义了栈的用户接口,如下所示:
公有成员函数 功能
push 入栈:在栈顶位置添加一个元素
pop 退栈:取出并返回栈顶元素
ArrayStack是Stack的派生类,它实现了Stack定义的接口。ArrayStack内部使用动态分配的字符数组作为栈元素的存储空间。数据成员maxSize表示的是栈的最大容量,top用于记录栈顶的位置。成员函数push和pop分别实现具体的入栈和退栈操作。
请在程序中的横线处填写适当的代码,然后删除横线,以实现上述功能。此程序的正确输出结果应为:
a, b, c
c, b, a
注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//**** found ****”。
// proj2, cpp
#include < iostream >
using namespace std;
class Stack
public :
virtual void push(char c) = 0;
virtual char pop( ) = 0;
;
class ArrayStack : public Stack
char * p;
int maxSize ;
int top ;
public :
ArrayStack( int s)
top = 0;
maxSize = s;
//******** found ********
p =______;
~ ArrayStack ( )
//******** found ********
______;
void push(char c)
[简答题]请使用VC6或使用[答题] 菜单打开考生文件夹proj1下的工程proj1,此工程中包含一个源程序文件main. cpp,其中有类Book(“书”)和主函数main的定义。程序中位于每个“//ERROR****found****”下的语句行有错误,请加以改正。改正后程序的输出结果应该是:
书名:C++语句程序设计总页数:299
已把“C++语言程序设计”翻到第50页
已把“C++语言程序设计”翻到第51页
已把“C++语言程序设计”翻到第52页
已把“C++语言程序设计”翻到第51页
已把书合上。
当前页:0
注意:只修改每个“//ERROR****found****”下的那一行,不要改动程序中的其他内容。
#include < iostream >
using namespace std;
class Book
char * title ;
int hum_pages; //页数
int cur_page; //当前打开页面的页码,0表示书未打开
public :
// ERROR ********** found **********
Book ( const char * theTide, int pages) num_pages (pages)
tide = new char[ strlen(theTifle) + 1 ] ;
strcpy ( tide, theTitle ) ;
cout << endl << " 书名:" << title
<< "页面数:" << num_pages ;
~Book( ) delete []title;
bool isClosed ( ) const return cur_page == 0 ; //书合上时返回true,否则返回false
bool isOpen( )const return ! isClosed( ) ; //书打开时返回true,否则返回false
int numOfPages ( ) const re
[简答题]请使用VC6或使用[答题] 菜单打开考生文件夹proj2下的工程proj2。此工程中包含一个源程序文件main. cpp,其中有“房间”类Room及其派生出的“办公室”类Office的定义,还有主函数main的定义。请在程序中“//****found****”下的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为:
办公室房间号:308
办公室长度:5.6
办公室宽度:4.8
办公室面积:26.88
办公室所属部门:会计科
注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
#include<iostream>
using namespace std;
class Room //"房间"
int room_no; //房间号
double length; //房间长度(m)
double width; //房间宽度(m)
public :
Room( int the_room_no, double the length, double the_width ) : roomno (the_room_no) , length ( the_length) , width ( the_width )
int theRoomNo( ) const return roomno ;
//返回房间号
double theLength( )const return length; //返回房间长度
double theWidth( )const return width; //返回房间宽度
//********** found **********
double theArea ( ) const ______ //返回房间面积(矩形面积)
;
class Office: public Room //"办公室"类
char * depart; //所属部门
public :
Office(int the_r
[简答题]请使用VC6或使用[答题]菜单打开考生文件夹proj1下的工程proj1。程序中位于每个“//ERROR ****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:
value=63
number=1
注意:只修改每个“//ERROR ****found****”下的那一行,不要改动程序中的其他内容。
#include <iostream>
using namespace std;
class MyClass
int*p;
const int N;
public:
//ERROR **********found**********
MyClass(int val):N=1
p=new int;
*p=val;
//ERROR **********found**********
~MyClass( ) delete*p;
friend void print(MyClass& obj);
;
//ERROR **********found**********
void MyClass::print(MyClass& obj)
cout<<"value="<<*(obj.p)<<endl;
cout<<"number="<<obj.N<<endl;
int main( )
MyClass obj(63);
print(obj);
return 0;
[简答题]请使用“答题"菜单或使用VC6打开考生文件夹proj1下的工程proj1。此工程包含程序文件main.cpp。程序中位于每个//ERROR************found************下的语句行有错误,请加以更正。更正后程序的输出应该是:
1958年3月23日比2001年11月5日更早
2001年11月5日比1958年3月23日更晚
2001年11月5日与2001年11月5日是同一日期
注意:只能修改每个//ERROR************found************下的那一行,不要改动程序中的其他内容。
//源程序
#include <iostream>
using namespace std;
class Date
int year;
int month;
int day;
public:
//ERROR************found************
Date(int yyyy, int mm, int dd): yyyy(year),mm(month),dd(day)
bool isLaterThan(Date dt) const //当前日期晚于日期dt时返回true
if(year!=dt.year) return year>dt.year;
if(month!=dt.month) return month>dt.month;
return day>dt.day;
bool isEarlyThan(Date dt) const //当前日期早于日期dt时返回true
if(year!=dt.year) return year<dt.year;
if(month !=dt.month) return month<dt.month;
//ERROR************found************
return day>dt.day;
void showDate( ) const cout<<year<<"年"<<month<<"月"<<day<<"日";<
[简答题]请使用“答题”菜单或使用VC6打开考生文件夹proj2下的工程proj2,函数void Insert(node*q)使程序能够完成如下功能:从键盘输入一行字符,调用该函数建立反序的无头结点的单链表,然后输出整个链表。
注意:请勿修改主函数main和其他函数中的任何内容,只需在画线处编写适当代码,也不能删除或移动//************found************。
//源程序proj2.cpp
#include<iostream>
using namespace std;
struct node
char data;
node*link:
*head; //链表首指针
void Insert(node*q) //将节点插入链表首部
//************found************
______;
head=q;
int main( )
char ch;
node *p;
head=NULL:
cout<<"Please input the string"<<endl;
while((ch=cin.get( ))!=’/n’)
//************found************
______;//用new为节点p动态分配存储空间
p->data=ch;
//************found************
______; //在链表首部插入该节点
p=head;
while(p!=NULL)
cout<<p->data;
p=p->link;
cout<<endl;
return 0:
[多项选择]请使用“答题”菜单或使用VC6打开考生文件夹proj2下的工程proj2。此工程包含一个程序文件main.cpp,其中的Array是一个表示数组的模板类。Array的成员a用于指向存放数据的数组,size表示该数组的大小。此程序的输出结果应为:
8
29,20,33,12,18,66,25,14
66,33
注意:只能在画线处填写适当的代码,不要改动程序中的其他内容,也不能删除或移动//************found************。
//源程序
#include <iostream>
#include <cstdlib>
using namespace std;
template<class Type>
class Array//数组类
Type *a;
int size;
public:
A. for(int i=0; i<size; i++) a[i]=b[i];
B. i>=size)cout<<"下标越界!"<<endl;exit(1);
C. return a[i];;
D. //由x1和x2带回数组a中的两个最大值
E. template<class Type>
F. void Array<Type>::MaxTwo(Type& x1,Type& x2) const //补充完整函数体的内容
G. //将数组a中头两个数据赋值给x1和x2,使得x1>=x2
H. ______(x1=a[0],x2=a[1]):(x1=a[1],x2=a[0]);
I. for(int i=2;i<size; i++)
J. if(a[i]>x1)x2=x1; x1=a[i];
K. else if(a[i]>x2) x2=a[i];
L. void main()
M. int s1[8]=29,20,33,12,18,66,25,14;Array<int> d1(s1,8);
N. int i,a,b;
O. d1.M axTwo(a,b);
P. cout<<d1.Length()<<endl;
Q. for(i=0;i<7;i++) cout<<d1[i]<<",";
R. cout<<d1[7]<<endl;cout<<a<<","<<b<<endl;
[简答题]请使用“答题”菜单或使用VC6打开考生文件夹proj3下的工程proj3,其中声明了MyString类。MyString是一个用于表示字符串的类。成员函数startsWith的功能是判断此字符串是否以指定的前缀开始,其参数s用于指定前缀字符串。如果参数s表示的字符串是MyString对象表示的字符串的前缀,则返回true;否则返回false。注意,如果参数s是空字符串或等于MyString对象表示的字符串,则结果为true。
例如:字符串"abc"是字符串"abcde"的前缀,而字符串"abd"不是字符串"abcde"的前缀。请编写成员函数startsWith。在main函数中给出了一组测试数据,此情况下程序的输出应该是:
s1=abcde
s2=abc
s3=abd
s4=
s5=abcde
s6=abcdef
s1 startsWith s2:true
s1 startsWith s3 false
s1 startsWith s4 true
s1 startsWith s5 f true
s1 startsWith s6 false
要求:补充编制的内容写在//********333********与//********666********两行之间,不得修改程序的其他部分。
注意:程序最后已经将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
//源程序
#include"MyString.h"
bool MyString::startsWith(const char*s)const
//********333******** //********666********
int main( )
char s1[]="abcde";
char s2[]="abc";
char s3[]="abd";
char s4[]=" ";
char s5[]="abcde";
char s6[]="abcdef";
MyString str(s1)
[简答题]请使用“答题”菜单或使用VC6打开考生文件夹proj3下的工程proj3,其中声明了DataList类,这是一个用于表示数据表的类。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
要求:补充编制的内容写在//********333********与********666********两行之间,不得修改程序的其他部分。
注意:程序最后已经将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
//源程序
#include"DataList.h"
DataList:: DataList(int len, double data[]):len(len)
d=new double[len];
for(int i=0; i<len; i++) d[i]=(data==NULL0.0:data[i]);
void DataList::sort( )//数据表排序
//********333********
//********666********
void DataList::show( ) const//显示数据表
for(int i=0; i<len-1,i++) cout<<d[i]<<",";
cout<<d[len-1]<<endl;
int main( )
double s[]=7,1,3,11,6,9,12,10,8,4,5,2;
DataList list(12,s);
cout<<"排序前:";
list.show( );
list.sort( );
cout<<endl<<"排序后:";
list.show( );
//writeToFile("K://b10//61000102//",list);
return 0:
[简答题]请使用“答题”菜单或使用VC6打开考生文件夹proj3下的工程proj3,其中声明了VaIArray类,该类在内部维护一个动态分配的整型数组。ValArray类的复制构造函数应实现对象的深层复制。请编写ValArray类的复制构造函数。在main函数中给出了一组测试数据,此情况下程序的输出应该是:
ValArray v1=1,2,3,4,5
ValArray v2=1,2,3,4,5
要求:补充编制的内容写在//********333********与//********666********两行之间,不得修改程序的其他部分。
注意:程序最后已经将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
//源程序
#include"ValArray.h"
VaIArray:: VaIArray(const ValArray& other)
//********333********
//********666********
int main( )
const int a[]=1,2,3,4,5 ;
ValArray v1(a,5);
cout<<"ValArray v1=";
v1.print(cout);
cout<<endl;
ValArray v2(v1);
cout<<"ValArray v2=";
v2.print(cout);
cout<<endl;
// writeToFile("K: //b10 //61000101 //");
return 0;
[简答题]请使用“答题”菜单或使用VC6打开考生文件夹proj3下的工程proj3,其中包含了类Polyno-mial(“多项式”)的定义。形如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]中。作为成员函数重载的运算符“+”用于计算两个多项式的和,并返回作为计算结果的那个多项式。请补充完成文件Polynomial.cpp中重载运算符函数operator+的定义。此程序的正确输出结果应为:
p1+p2的结果:7.3X^4+20.6X^3-41.2X^2-2.4X+5
p2+p3的结果:-2.3X^5+14.6X^4+12.8X^3+2.8X^2+0.2X+1
注意:只需要在operator+的//********333********和//********666********之间填入若干语句,不要改动程序中的其他内容。
//源程序
//主函数
#include"Polynomial.h"
int main( )
double p1[]=5.0,3.5,-41.2,7.8,
p2[]=0.0,-5.9,0.0,12.8,7.3,
p3[]=1.0,6.1,2.8,0.0,7.3,-2.3;
Polynomial poly1(p1, sizeof(p1)/sizeof(double)),
poly2(p2, sizeof(p2) /sizeof(double)),
poly3(p3, sizeof(p3) /sizeof(double));
cout<<"p1+p2的结果:"<<(polyl+poly2).tostring( )<<endl;
cout<<"p2+p3的结果:"<<(pol
[简答题]请使用“答题”菜单或使用VC6打开考生文件夹proj1下的工程proj1。此工程定义了Stop-Watch(秒表)类,用于表示时、分、秒信息,有构造函数StopWatch( )、设置时间函数reset( )、并且重载了前置和后置++运算符,用于实现增加秒的功能。程序中位于每个//ERROR************found************下的语句行有错误,请加以改正。改正后程序的输出应该是:
00:00:00
00:01:00
注意:只能修改每个//ERROR************found************下的那一行,不要改动程序中的其他内容。
//源程序
#include<iostream>
#include<iomanip>
using namespace std;
class StopWatch //“秒表”类
int hours,minutes,seconds; //小时、分钟、秒
public:
StopWatch( ):hours(0),minutes (0),seconds(0)
void reset( )hours=minutes=seconds=0;
StopWatch operator++(int) //后置++
StopWatch old=*this;
++(*this);
return old;
//前进1秒
StopWatch& operator++( ) //前置++
//ERROR************found************
if(seconds++==60)
seconds=0;minutes++;
if(minutes==60)
minutes=0;hours++;
//ERROR************found************
return this:
friend void show(StopWatch);
;
void show(StopWatch watc
[简答题]请使用“答题”菜单或使用VC6打开考生文件夹proj2下的工程proj2。此工程定义了一个人员类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..
注意:只能在画线处填写适当的代码,不要改动程序中的其他内容,也不能删除或移动“//************found************”。
//源程序
#include <iostream>
using namespace std;
class Person
public:
//************found************
______name=NULL;
Person(char*s) name=new char[strlen(s)+1];strcpy(name,s);
~Person( ) if(name!=NULL) delete[]name;
//************found************
______Disp( ) cout<<"My name is"<<name<<"./n"; //声明虚函数
void setName(char*s) name=new char[strlen(s)+1];strcpy(name,s);
protected:
char*name:
;
class Student: public Person
public:
//************found************
Student(char*s,double g)______
void Disp( ) cout<<"my name is"<<name<<"and my G.P.A.is il<<gpa<<"./n";
private: