资源描述
专业好文档
电大《面向对象程序设计》复习题
编程题
1. 根据下面类中Count函数成员的原型和注释写出它的类外定义。
class AA {
int* a;
int n;
int MS;
public:
void InitAA(int aa[], int nn, int ms) {
if(nn>ms) {cout<<"Error!"<<endl; exit(1);}
MS=ms;
n=nn;
a=new int[MS];
for(int i=0; i<n; i++) a[i]=aa[i];
}
int Count(int x); //从数组a的前n个元素中统计出其
//值等于x的个数并返回。
};
答案:
int AA::Count(int x)
{
int i,c=0;
for(i=0; i<n;i++)
if(a[i]==x) c++;
return c;
}
2. 根据下面类中Search函数成员的原型和注释写出它的类外定义。
class AA {
int* a;
int n;
int MS;
public:
void InitAA(int aa[], int nn, int ms) {
if(nn>ms) {cout<<"Error!"<<endl; exit(1);}
MS=ms;
n=nn;
a=new int[MS];
for(int i=0; i<n; i++) a[i]=aa[i];
}
int Search(int x); //从数组a的前n个元素中顺序查找值为x的第一个元素,
//若查找成功则返回元素的下标,否则返回-1。
};
答案:
int AA::Search(int x)
{
int i;
for(i=0; i<n;i++)
if(a[i]==x) return i;
return -1;
}
3. 根据下面类中MaxMin 函数成员的原型和注释写出它的类外定义。
class AA {
int* a;
int n;
int MS;
public:
void InitAA(int aa[], int nn, int ms) {
if(nn>ms) {cout<<"Error!"<<endl; exit(1);}
MS=ms;
n=nn;
a=new int[MS];
for(int i=0; i<n; i++) a[i]=aa[i];
}
int MaxMin(int& x, int& y); //从数组a的前n个元素中求出
//最大值和最小值,并分别由引用参数x和y带回,
//同时若n大于0则返回1,否则返回0。
};
答案:
int AA::MaxMin(int& x, int& y)
{
int mx,my;
mx=my=a[0];
for(int i=1; i<n; i++) {
if(a[i]>mx) mx=a[i];
if(a[i]<my) my=a[i];
}
x=mx; y=my;
if(n>0) return 1; else return 0;
}
4. 根据下面类中Compare 函数成员的原型和注释写出它的类外定义。
class AA {
int* a;
int n;
int MS;
public:
void InitAA(int aa[], int nn, int ms) {
if(nn>ms) {cout<<"Error!"<<endl; exit(1);}
MS=ms;
n=nn;
a=new int[MS];
for(int i=0; i<n; i++) a[i]=aa[i];
}
int Compare(AA b); //比较*this与b的大小,若两者中
//的n值相同,并且数组中前n个元素值对应
//相同,则认为两者相等返回1,否则返回0。
};
答案:
int AA::Compare(AA b)
{
if(n!=b.n) return 0;
for(int i=0; i<n; i++)
if(a[i]!=b.a[i]) return 0;
return 1;
}
5. 根据下面类中CompareBig 函数成员的原型和注释写出它的类外定义。
class AA {
int* a;
int n;
int MS;
public:
void InitAA(int aa[], int nn, int ms) {
if(nn>ms) {cout<<"Error!"<<endl; exit(1);}
MS=ms;
n=nn;
a=new int[MS];
for(int i=0; i<n; i++) a[i]=aa[i];
}
int CompareBig(AA b); //比较*this与b的大小,从前向后按两数组
//中的对应元素比较,若*this中元素值大则返回1,若b中
//元素值大则返回-1,若相等则继续比较下一个元素,直到
//一个数组中无元素比较,此时若两者的n值相同则返回0,
//否则若*this中的n值大则返回1,若b中的n值大则返回-1。
};
答案:
int AA::CompareBig(AA b)
{
int k;
if(n>b.n) k=b.n; else k=n;
for(int i=0; i<k; i++)
if(a[i]>b.a[i]) return 1;
else if(a[i]<b.a[i]) return -1;
if(k==n && k==b.n) return 0;
else if(k<n) return 1;
else return -1;
}
最新小抄
展开阅读全文