使用VC6打开考生文件夹下的工程test25_3,此工程包含一个源程序文件test25_3.cpp,其中定义了用于表示堆的类Set,但它的定义并不完整。请按要求完成下列操作,将程序补充完整。
(1)完成成员函数int IsMemberOf(int n)的定义,该函数检查参数n是否在类的数据成员数组elems中,如果在返回1,反之返回0。请在注释“//**1**”之后添加适当的语句。
(2)完成成员函数int Add(int n)的定义,如果参数n包含在类的数据成员数组elems中则返回1如果数组超界则返回0,如果都不是,则将参数n插入到elems中,下标大小为类的数据成员PC,之后PC自加一。请在注释“//**2**”之后添加适当的语句。
(3)完成拷贝初始化构造函数Set(Set &s)的定义,请在注释“//**3**”之后添加适当的语句。输出结果如下:
1

1,2,3,4,5,6,7,8
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件test25_3.cpp清单如下:
#include<iostream.h>
class Set

public:
Set( ) PC=O;
Set(Set &s);
void Empty( ) PC=O;
int IsEmpty( ) return PC==O;
int IsMemberOf(int n);
int Add(int n);
void Print( );
private:
int elems[100];
int PC;
;
int Set::IsMemberOf(int n)

//**1**
if(elems[i]==n)
return 1;
return O;

int Set::Add(int n)

//**2**
return 1;
else if(PC>=100)
return O;
else

elems[PC++]=n;
return 1;


Set::Set(Set &s)

//**3**
for(int i=O; i<PC; i++)
elems[i]=s.elems[i];

void Set::Print( )

cout<<"";
for(int i=O; i<PC-1; i++)
cout<<elems[i]<<",";
if(PC>O)
cout<<elems[PC-1];
cout<<""<<endl;

void main( )

Set A;
cout<<A.IsEmpty( )<<endl;
A.Print( );
Set B;
for(int i=l; i<=8; i++)
B.Add(i);
B.Print( );


(1)
for(int i=O;i<PC;i++)
(2)
if(IsMemberOf(n))
(3)
PC=s.PC;

使用VC6打开考生文件夹下的工程RevProj13。此工程包含一个源程序文件RevMain13.cpp,但该程序中类的定义有错误。请改正程序中的错误,使它能得到正确结果。
注意,不要改动主函数,不得删行或增行,也不得更改程序的结构。
源程序文件RevMain13.cpp中的程序清单如下;
//RevMain13.cpp
#include<iostream>
using namespace std;
class MyClass

public:
MyClass(int a=0,b=1);
Print( );
private:
int x;
int y;

MyClass::MyClass(int a=0,int b=1)

x=a;
y=b;

void MyClass::Print( )

cout<<"x="<<x<<end1;
cout<<"y= "<<y<<end1;

int main( )

MyClass obj(1,2)
obj.Print( );
return 0;

正确的类MyClass的定义如下:
class MyClass
{
public:
MyClass(int a=0,int b=1);
void Print();
private:
int x;
int y;
};
MyClass: :MyClass(int a,int b)
{
x=a;
y=b;
}
void MyClass::Print()
{
cout<<"x="<<x<<end1;
cout<<"y="<<y<<end1;
}

请编写一个函数char *fun(char *s,int n)。函数fun( )的功能是将字符串s中的字符“循环左移”n位。例如,输入“ABCDE”,则循环左移2位应输出“CDEAB”,输入“1234567”,循环左移3位应输出“4567123”。
注意:部分源程序已存在文件PROC13.cpp中。
请勿修改主函数和其他函数中的任何内容,仅在函数fun( )的花括号中填写若干语句。
文件PROC13.cpp的内容如下:
//PROC13.cpp
#include <iostream>
#include <string>
using namespace std;
char *fun(char *s,int n);
int main( )

char str[81];
int n;
cout<<"Enter a string(less than 80 char)/n”;
cin>>str;
cout<<"/n Enter n:";
cin>>n;
if(n>strlen(str))

cout<<"/n Data overflow";
return 0;

cout<<"The result is: "<<fun(str,n)<<end1;
return 0;

char *fun(char*s,int n)

//* * * * * *

函数fun()的定义如下:
char *fun(char*s,int n)
{
char k;
int i,len=strlen(s);
for(i=0;i<n;i++)
{
k=*s;
strcpy(s,s+1);
s[len-1)=k;
}
return s;
}

使用VC6打开考生文件夹下的工程MyProj13。此工程包含一个源程序文件MyMain12.cpp。程序中定义了两个类Base和Derived,但类的定义并不完整。
请按要求完成下列操作,将类的定义补充完成:
①定义类shapes的保护成员x和y,它们都是整型变量。请在注释“//* *1* *”之后添加适当的语句。
②完成构造函数shapes(int d,int w)定义,使类shapes的保护成员x、y分别初始化为d、w,并分别具有默认值0、0。请在注释“//* *2* *”之后添加适当的语句。
③完成类shapes的成员函数setvalue(int d,int w)的定义,shapes类的数据成员x和y分别被设置成d和w。请在注释“//* *3* *”之后添加适当的语句。
④将类shapes的成员函数void disp( )设置成纯虚函数。请在注释“//* *4* *”之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件MyMain13.cpp清单如下:
//MyMain13.cpp
#include<iostream>
using namespace std;
class shapes

//* * * 1 * * *
public:
//* * * 2 * * *
void setvalue(int d,int w)

//* * * 3 * * *

//* * * 4 * * *

class square : public Shapes

public:
void disp( )

cout<<x*y<<end1;

;
int main( )

shapes*ptr;
square s1;
ptr=&s1;
ptr->setvalue(10,5);
ptr->disp( );
return 0;

①protected:int x,y;
②shapes(int d=0,int w=0) {x=d;y=w;}
③x=d;y=w;
④virtual void disp()=0;

使用VC6打开考生文件夹下的工程test22_1,此工程包含—个源程序文件test22_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为:
6/15
3/4
9/19
源程序文件test22_1.cpp清单如下:
#include<iostream.h>
class Franction

int nume;
int deno;
public:
Franction FranAdd(const Franction& x)

this->nume+=x.nume;
this->deno+=x.deno;
/****************found*******************/
return this;

void InitFranction( ) nume=0; deno=l;
void InitFranction(int n, int d) nume=n; deno=d;
void FranOutput( ) cout<<nume<<’/’<<deno<<endl;
;
void main( )

Franction *a=new Franction;
Franction *b=new Franction;
a->InitFranction(6,15);
b->InitFranction(3,4);
a->FranOutput( );
b->FranOutput( );
Franction c;
/****************found*******************/
c->InitFranction( );
/****************found*******************/
c=a->FranAdd(b);
c. FranOutput( );


(1)错误:return this;
正确:return*this;
(2)错误:c->InitFranction();
正确:c.InitFrancfion();
(3)错误:c=a->FranAdd(b);
正确:c=a->FranAdd(*b);

请编写函数fun( ),对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码值降序排列。
例如:原来的字符串为CEAedca,则排序后输出为CedcEAa。
注意:部分源程序已存在文件test22_2.cpp中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
文件test22_2.cpp的内容如下:
#include <iostream.h>
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
void int fun(char *s, int num)


void main ( )

char s[10];
printf ("输入7个字符的字符串:");
gets(s);
fun(s,7);
cout<<s;

int fun(char*s,int num)
{char t;
int i,j;
for(i=A;i<num-B;i++)
for(j=i+A;j<num-A;j++)
if(s[i]<s[j])
{t=s[i];
s[i]=s[j];
s[j]=t;
}
}

使用VC6打开考生文件夹下的工程test22_3,此工程包含一个源程序文件test22_3.cpp,其中定义了用于表示考生的类 CStudent和它的派生类CGraduateStudent,但它们的定义并不完整。请按要求完成下列操作,将程序补充完整。
(1)定义CStudent的构造函数,函数含参数nm,它是char型的指针数据,请使用字符串函数将类数据成员name初始化。请在注释“//**1**”之后添加适当的语句。
(2)完成类CStudent的成员函数void addscore(double sc)的定义,将类数据成员score加上参数sc,请在注释“//**2**”之后添加适当的语句。
(3)添加类CGraduateStudent的成员函数void addpaper(int d)的定义,将int型的参数d的值加到类的数据成员paper上,请在注释“//**3**”之后添加适当的语句。
(4)调用对象sdt的成员函数addpaper使得该考生的论文数量变为10,将请在注释“//**4**”之后添加适当的语句。
输出结果如下:
Student Hanson
(Advisor:MichaelPhong)
Total paper is 10
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件test22_3.cpp清单如下:
#include<iostream.h>
#include<string.h>
class CStudent

private:
char name[30];
int code;
double score;
public:
CStudent(char* nm)

//**1**

CStudent( )
void putname(char* nm) strcpy(name,nm);
void putcode(int d)code=d;
void putscore(double sc)score=sc;
void getname(char* nm)strcpy(nm,name);
double getcode( )return code;)
double getscore( )return score;
void addscore(double sc)

//**2**


class CGraduateStudent:public CStudent

private:
char advisor[30];
int paper;
public:
void putadvisor(char*nm) strcpy(advisor, nm);
void getadvisor(char*nm) strcpy(nm, advisor);
void putpaper(int d) paper=d;
//**3**
int getpaper( ) return paper;
;
void main( )

CGraduateStudent sdt;
sdt.putname("Hanson");
sdt.putadvisor("MichaelPhong");
sdt.putpaper(8);
//**4**
char csname[30];
sdt.getname(csname);
char caname[30];
sdt.getadvisor(caname);
cout<<"Student"<<csname<<endl;
cout<<"(Advisor:"<<caname<<")"<<endl;
cout<<"Total paper is"<<sdt.getpaper( )<<endl;

(A)
strcpy(name,nm);
(B)
score+=sc;
(C)
void addpaper(int d){paper+=d;}
(D)
sdt.addpaper(B);

使用VC6打开考生文件夹下的工程test19_1,此工程包含一个源程序文件test19_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:
1:
weight:5
age:0
2:
weight:7
age:9
源程序文件test19_1.cpp 清单如下:
#include <iostream.h>
class animal

public:
/**************** found *******************/
friend void setvalue(animal&,int);
/**************** found *******************/
void print( )
protected:
int itsweight;
int itsage;

void animal::print( )

cout<<"weight:"<<itsweight<<end1;
cout<<"age:"<<itsage<<end1;

void setvalue(animal &ta,int tw)

ta.itsweight=tw;
ta.ihsage=0;

void setvalue(animal &ta,int tw, int tn)

ta.itsweight=tw;
ta.itsage=tn;

void main( )

/**************** found *******************/
animal peppy
setvalue(peppy,5);
cout<<"1:"<<end1;
peppy.print( );
setvalue(peppy,7,9);
cout<<"2:"<<end1;
peppy.print( );


(A)错误:缺少友元函数的声明
正确:添加友元函数的声明friend void setvalue(animal &,int,int);
(B)错误:viod print();
正确:void print();
(C)错误:animal peppy
正确:animal peppy;

请编写一个函数int SeqSearch(int list[],int start,int n,int key),该函数从start开始,在大小为n的数细list中查找key值,返回最先找到的key值的位置,如果没有找到则返回-1。请使用for循环实现。
注意:部分源程序已存在文件test19_2.cpp中。
请勿修改主函数main和其他函数中的任何内容,仅在函数SeqSearch的花括号中填写若干语句。
文件test19_2.cpp的内容如下:
#include <iostream.h>
int SeqSearch(int list[], int start, int n, int key)


void main( )

int A[10];
int key, count=0, pos;
cout<<"Enter a list of 10 integers: ";
for(pos=0;pos<10;pos++)

cin>>A[pos];

cout<<"Enter a key: ";
cin>>key;
pos=0;
while( (pos=SeqSearch(A, pos,10,key))!=-1)

count++;
pos++;

cout<<key<<" occurs "<<count<<(count!=1" times":" time")<<" in the list."<<end1;


int SeqSearch(int list[], int start, int n,int key)
{
for(int i=start;i<n;i++)
{
if(list[i]==key)
{
return i;
}
}
return -1;
}

使用VC6打开考生文件夹下的工程test19_3,此工程包含一个源程序文件test19_3.cpp,其中定义了用于表示向量的类 vector,但类vector的定义并不完整。请按要求完成下列操作,将类vector的定义补充完整。
(1)补充类vector的构造函数,该函数有参数x和y,它们都是int型的数据,默认值都为0。请使用参数列表的形式分别将类的数据成员a和b分别初始化为参数x和y的值。请在注释“//**1**”之后添加适当的语句。
(2)完成类vector的成员函数input(int x,int y)的定义,将int型的参数x和y分别赋值给数据成员a和b,请在注释“//**2**”之后添加适当的语句。
(3)完成类vector的友元函数friend double Multiply (vector &x,vector &y)的定义,先定义double型的临时变量c,然后将参数对象x和对象y的数据成员a与b分别相乘再相加后赋值给c,最后返回c的值,将请在注释“//**3**”之后添加适当的语句。输出结果如下:
(10,20)
(2, 3)
80
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件test19_3.cpp清单如下:
#include <iostream.h>
class vector

int a;
int b;
public:
//**1**
void input(int x, int y)

//**2**

void output ( )

cout<<’(’<<a<<’,’<<b<<")"<<end1;

friend double Multiply(vector &x,vector &y);

double Multiply (vector &x,vector &y)

//**3**
c=x.a*y.a+x.b*y.b;
return c;

void main( )

vector x(10,20),y;
double d;
y.input (2,3);
d=Multiply (x,y);
x. output ( );
y. output ( );
cout<<d<<end1;

(A)
vector(int x=0,int y=0):a(x),b(y){}
(B)
a=x;
b=y;
(C)
double c;
 

微信扫码获取答案解析
下载APP查看答案解析