问答题请使用VC6或使用【答题】菜单打开
proj3下的工程proj3,其中使用友元函数访问类的私有数据成员,求出两个数据成员的大于1的最小公因子。请编写友员函数FriFun,使其输出结果为:
Common denominator is 2
要求:补充编制的内容写在“// *******333*******”与“// *******666*******”之间,不得修改程序的其他部分。
注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
//proj3.h
class FriFunClass
{
int a, b;
public:
FriFunClass (int i, int j) {a=i; b=j;}
friend int FriFun (FriFun-
Class x); //友元函数
};
void writeToFile (const char *);
//proj3.cpp
#include <iostream>
using namespace std;
#include "prj3.h"
int FriFun (FriFunClass x)
{
// *******333*******
//由于函数FriFun()是类FriFunClass的友元函数,所以它可以直接访问a和b
// *******666*******
}
int main()
{
FriFunClass n(10, 20);
if (FriFun(n))
cout << "Common denominator is" << FriFun(n) << "/n";
else cout << "No common denominator./n";
writeToFile(" ");
return 0;
}
问答题请使用VC6或使用【答题】菜单打开考生文件夹pmjl下的工程proj1,此工程中含有一个源程序文件proj1.cpp。其中位于每个注释“//ERROR****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:Constructorcalled.Thevalueis10Maxnumberis20Destructorcalled.注意:只能修改注释“//ERROR****found****”的下一行语句,不要改动程序中的其他内容。//proj1.cpp#include<iostream>usingnamespacestd;classMyClass{public://ERROR**********found**********voidMyClass(inti){value=i;cout<<"Constructorcalled."<<end1;}intMax(intx,inty){returnX>y?X:y;)//求两个整数的最大值//ERROR**********found**********intMax(intx,inty,intz=0)//求三个整数的最大值{if(x>y)returnx>z?x:z;elsereturny>z?y:z;}intGetValue()const{returnvalue;}~MyClass(){cout<<"Destructorcalled."<<end1;}private:intvalue;};intmain(){MyClassobj(10);//ERROR**********found**********cout<<"Thevalueis"<<value()<<end1;cout<<"Maxnumberis"<<obj.Max(10,20)<<end1;return0;}
问答题使用VC6打开考生文件夹下的源程序文件modil.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:
i=5
i=10
i=15
i=20
注意:错误的∥********error********语句在的下面,修改该语句即可。
#include
class CMyClass
{
public:
template
void func(T x,T y)
{
∥********error********
T i=0;
if(x>=i)
{
i=i+x;
}
else
{
i=i+y;
}
cout<<”i=”<
问答题使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为:
TestClass2
TestClass3
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在∥********error********的下面。
#include
class TestClassl
{
public:
virtual void fun()=0;
};
class TestClass2:public TestClassl
{
∥********error********
int fun()
{
us ing namespace std ;
coutfun(),
obj 2.fun();
return;
}
问答题使用VC++6.0打开
下的源程序文件3.cpp,其中定义了类BA、PA1和PA2,其中PA1类由BA类公有派生,PA2类由PA1类公有派生。上述3个类的定义并不完整,请按要求完成下列操作,将程序补充完整。
程序输出结果如下:
10
5
10 5 7
(1)定义类BA的构造函数,该构造函数有一个整型的参数m,在构造函数中将m赋值给数据成员a。请在注释1之后添加适当的语句。
(2)定义类PA1的构造函数,该构造函数有两个整型的参数m和n,在构造函数中将m赋值给数据成员b,将n作为基类BA构造函数的参数值传入。请在注释2之后添加适当的语句。
(3)定义类PA2的构造函数,该构造函数有3个整型的参数m、n和k,在构造函数中请将m赋值给数据成员c,将n和k分别赋值给基类PA1构造函数的参数m和n。请在注释3之后添加适当的语句。
(4)完成类PA2的成员函数show的定义,该函数调用基类成员函数,输出基类私有成员a、b及类PA2自身的数据成员C的值,上述3个值在输出时用空格隔开。请在注释4之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
试题程序:
#include<iostream.h>
class BA
{
int a;
public:
//********1********
int geta()(return a;}
};
class PA1:public BA
{
int b;
public:
//********2********
int getb(){return b;)
};
class PA2:public PA1
{
int c;
public:
//********3********
void show()
{
//********4********
}
};
void main()
{
PA2 a(7,5,10);
cout<<a.geta()<<endl;
cout<<a.getb()<<endl;
a.show();
}
问答题使用VC6打开考生文件夹下的源程序文件modil.cpp,但该程序运行时有错,请改正程序中的错误,使该程序的输出结果为:
20,15
15.20
注意:错误的语句在∥********error********的下面,修改该语句即可。
#include
∥********error********
void Exchangel(int m,int n)
{
int t=m;
m=n;
n=t;
}
∥********error********
void Exchange2(int m,int n)
{
int t=*m:
*m=*n;
*n=t:
}
void msin()
{
int b=20;
int a=15;
Exchangel(a,b);
cout<
问答题使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错误,请改正程序中的错误,使得程序输出:
10
TestClass 1
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在∥********error********的下面。
#lnclude
C1ass TestClassl
{
public:
TestClassl(){
};
∥********error********
private:
virtual~TestClassl()
{
using namespace std;
coutm i=i ;
}
void print()
{
∥********error********
cout<
问答题使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码。函数num(char*str)实现返回字符串中非数字的个数。
例如:abcl23abc45
返回输出:6
将函数num()补充完整。
注意:请勿改动主函数。
#include
int num(char*str)
{
}
int main()
{
char str[1 02 4];
cout<<“please input a string:”<
问答题请使用VC6或使用【答题】菜单打开考生文件夹pmj2下的工程proj2,此工程中含有一个源程序文件pmj2.epp,请编写一个函数inthuiwen(intn),用于求解所有不超过200的n值,其中n的平方是具有对称性质的回文数(回文数是指一个数从左向右读与从右向左读是一样的,例如:34543和1234321都是回文数)。求解的基本思想是:首先将n的平方分解成数字保存在数组中,然后将分解后的数字倒过来再组成新的整数,比较该整数是否与乃的平方相等。注意:请勿修改主函数main和其他函数中的任何内容,只在横线处编写适当代码,也不要删除或移动“//****found****”。//proj2.cpp#include<iostream>usingnamespacestd;inthuiwen(int1"1){intarr[16],sqr,rqs=0,k=1;sqr=n*n;for(inti=1;sqr!=0;i++){//**********found**********________;sqr/=10;}for(;i>1;i--){rqs+=arr[i一1]*k;//********found********________;}//********found********if(________)returnn;elsereturn0;}intmain(){intcount=0;cout<<"Thenumberare:"<<end1;for(inti=10;i<200;i++)if(huiwen(i))cout<<++count<<'\t'<<i<<'\t'<<i*i<<end1;return0;}
问答题请使用VC6或使用【答题】菜单打开
proj1下的工程proj1,该工程中包含程序文件main.cpp,其中有类Foo和主函数main的定义。程序中位于每个“// ERROR ****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应该是:
X=a
Y=42
注意:只修改每个“// ERROR *******found*******”下的那一行,不要改动程序中的其他内容。
#include <iostream>
using namespace std;
class Foo {
public:
Foo(char x) {x_ = x;}
char getX() const {return x_;}
public:
static int y_;
private:
char x_;
};
// ERROR *******found*******
int Foo.y_ = 42;
int main(int argc, char * argv[])
{
// ERROR *******found*******
Foo f;
// ERROR *******found*******
cout << "X =" << f.x_ << endl;
cout << "Y =" << f.y_ << endl;
return 0;
}
问答题使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序,使函数fun()实现以下功能:找出一个整数,它加上100后是一个完全平方数,再加上268又是一个完全平方数,请问该数是多少?
程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后开方,如果开方后的结果满足条件,即是结果。
#include
#include
void fun()
{
}
int main()
{
fun();
return 0;
}
问答题使用VC6打开
下的源程序文件modi2.cpp。
阅读下列函数说明和代码,完成空出部分程序。函数sum(int A[NUM][NUM],int n)实现的功能是计算矩阵中所有非质数数字的和。
提示:函数isPrime(int n)的功能是判定当前数字是否为质数,如果是则返回true。
注意:不能修改程序的其他部分,只能修改sum()函数。
#include <ioStream.h>
#include <cmath>
#define NUM 50
int A[NUM] [NUM]
{
{10,13,59,70,6},
{2,40,89,92,9},
{14,55,71,11,19},
{79,68,83,97,101},
{102,10001,23,45}
};
bool isPrime(int n)
{
if(n==1)
return false;
if(n==2)
return true;
for(int i=2; i<n/2; i++)
{
if(n%i==0)
return false;
}
return true;
}
int sum(int A[NUM] [NUM],int n)
{
}
int msin()
{
cout
sum(A,5)
endl;
return 0;
}
问答题使用VC6打开考生文件央下的源程序文件modi3.cpp,其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
(1)定义类CPlanet的保护数据成员distance和revolvePeriod,它们分别表示行星距太阳的距离和行星的公转周期。其中,distance为double型,revolvePeriod为int型。清在注释∥********1********之后添加适当的语句。
(2)定义类CEarth的构造函数CEarth(doublc d,intr),并在其中计算地球绕太刚公转的轨道周长。假定circumference=2*d*3.1416 。 请在注释
∥********2********之后添加适当的语句。
(3)定义类Earth的成员display(),用于显示所有信息。包括地球距太阳的距离,地球的公转刷划,以及地球绕太阳公转的轨道周长。请在注释∥********3********之后添加适当的语句。
注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。
#include
using namespace std;
class s CPlanet
{
protected:
∥********1********
public:
CPlanet(double d,int r)
{
distance=d;
revolvePeriod=r;
}
};
class CEarth:public CPlanet{
double Circumference,
public:
∥********2********
CEarth(double d,int r)
{
circumference=2*d*3.1416;
}
∥********3********
{
cout<<“distance=”<
问答题请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,此工程包含有一个源程序文件pmj2.cpp。其中定义了Base1类、Base2类和Derived类。Base1是一个抽象类,其类体中声明了纯虚函数Show。Base2类的构造函数负责动态分配一个字符数组,并将形参指向的字符串复制到该数组中,复制功能要求通过调用strcpy函数来实现。Derived类以公有继承方式继承Basel类,以私有继承方式继承Base2类。在Derived类的构造函数的成员初始化列表中调用Base类的构造函数。请在程序中的横线处填写适当的代码,然后删除横线,以完成Base1、Base/和Derived类的功能。此程序的正确输出结果应为: I'm a derived class. 注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。//proj2.cpp#include<iostream>#include<cstring>using namespace std;class Basel{public://**********found**********下列语句需要声明纯虚函数Show——;; }; class Base2{ protected: char*;; Base2(const char*s){_P=new char[strlen(s)+1];//**********found**********下列语句将形参指向的字符串常量复制到该类的字符数组中——;?}~Base2(){delete[]-j);)},//**********found**********Derived类公有继承Basel,私有继承Base2类class Derived:——{public://**********found**********以下构造函数调用Base2类构造函数Derived(const char*s):——{ }void Show(){cout<<_p<<endl;)};int main(){Basel*pb=new Derived(“I’m a derived class.”); pb一>Show(); delete pb; return 0;}
问答题简单应用
请使用"答题"菜单或使用VC6打开考生文件夹proj2下的工程proj2。此工程包含一个程序文件main.cpp,其中有表示具有开、关两种状态的设备的类Switchable、表示"灯"的类Lamp和表示"按钮"的类Button等三个类的定义,还有主函数main的定义。在主函数中定义了一个"灯"对象和一个用于控制"灯"的"按钮"对象。程序展示,每当按一次按钮,灯和按钮的状态同时被改变。请在程序中//**********found**********下的横线处填写适当的代码,然后删除横线,以实现上述类定义。此程序的正确输出结果应为:
灯的状态:关
按钮的状态:关
灯的状态:开
按钮的状态:开
注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不能删除或移动"//**********found**********"。
问答题使用VC6打开考生文件夹下的源程序文件modi2.cpp。完成空出的函数fun(int a[],hat*index),使函数输入n(
;#define MAXLINE 1 00
_int fun(int a[],int *index)
{
}
void main()
{
int A[MAXLINE];
int index;
int maxdata ;
maxdata=fun(A,&index);
count<<“the max data i8:”<<
maxdata<
问答题使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码。函数MergeAndSort(int s[],int e[],int a[],int m,hat n)实现将两个数组合并。这两个数组已经有序,按照由d,N大的顺序排列。
例如:
e[]={l,3,5,6},m是数组e的长度,即为4。
a[]={2,4,5,7,11,13},n是数组a的长度,即为6。
则执行的结果为:s[]={1,2,3,4,5,6,7,11,13)
补充函数fun(int s[],int e[],int a[],int m,hat n),使之实现上述要求。
注意:请勿改动主函数。
#include
void MergeAndSort(int s[],
int e[],int a[],int m,int n)
{
}
int main()
{
int data[2 0],i ;
int a[]={1,3,5,6);
int b[]={2,4,5,7,11,13);
cout<<”a[]=”;
for(i=0,i<4;i++)
cout<
问答题使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(char*s,char*s1,char*s2)中形参字符串s1和s2有相同的字符个数,且s1中各字符互不相同。该函数实现将己知字符串s中所有在字符串s1中也存在的字符,都用字符串s2中的对应位置的字符代替。例如:设字符串s、s1和s2分别为:s[]="ABCABC",s1[]="AC",s2[]="ZX"则s2中的字符Z和X分别对应s1中的字符C和A,函数调用fun(s,s1,s2)将字符串s的内容变为"ZBXZBX"。注意:不能修改程序的其他部分,只能修改fun()函数。#include<iostream>void fun(char *s,char *s1,char*s2){}void main(){char s[]="ABCABC";fun(s,"AC","ZX");std::cout<<s<<std::endl;return;}
问答题请编写函数fun(),其功能是计算并输出下列多项式值 Sn=1+1/1!+1/2!+1/3!+1/4!+…+1/n!例如:从键盘输入15,则输出为s=2.718282。注意;部分源程序以存在文件test37_2.cpp中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。文件test37_2.cpp的内容如下: #include<stdio.h> #include<iostream.h> double fun(int n) void main ( ) int n; double s; cout<<"Input n:"<<end1; cin>>n; s=fun(n); cout<<"s="<<s<<end1;
问答题使用VC6打开考生文件夹下的工程test34_3。此工程包含一个test34_3.cpp,其中定义了表示栈的类stack。源程序中stack类的定义并不完整,请按要求完成下列操作,将程序补充完整。
(1)定义类stack的私有数据成员sp和size,它们分别为整型的指针和变量,其中sP指向存放栈的数据元素的数组,size为栈中存放最后一个元素的下标值。请在注释“//**1**”之后添加适当的语句。
(2)完成类stack的构造函数,该函数首先从动态存储空间分配含有100个元素的int型数组,并把该数组的首元素地址赋给指针sp,然后将该数组的所有元素赋值为0,并将size赋值为-1(size等于-1表示栈为空)。请在注释“//**2**”之后添加适当的语句。
(3)完成类stack的成员函数push的定义。该函数将传入的整型参数x压入栈中,即在size小于数组的最大下标情况下, size自加1,再给x赋值。请在注释“//**3**”之后添加适当的语句。
(4)完成类stack的成员函数pop的定义,该函数返回栈顶元素的值,即在size不等于-1的情况下,返回数组中下标为size的元素的值,并将size减1。请在注释“//**4**”之后添加适当的语句。
程序输出结果如下:
the top elem:1
the pop elem:1
the stack is empty
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件test34_3.cpp清单如下:
#include<iostream.h>
class stack
{
//** 1 **
public:
stack ( );
bool empty(){return size==-1;}
bool full() {return size==99;}
void push(int x);
void pop();
void top();
};
stack::stack()
{
//** 2 **
for(int i=0; i<100; i++)
*(sp+i)=0;
size=-1;
}
void stack::push(int x)
{
//** 3 **
cout<<"the stack is full"<<end1;
else
{
size++;
*(sp+size) = x;
}
}
void stack::pop()
{
//** 4 **
cout<<"the stack is empty"<<end1;
else
{
cout<<"the pop elem:"<<*(sp+size)<<end1;
size--;
}
}
void stack::top()
{
if iempty() )
cout<<"the stack is empty"<<end1;
else
{
cout<<"the top elem:"<<*(sp+size)<<end1;
}
}
void main ( )
{
stack s;
s.push(1);
s.top();
s.pop();
s.top();
}