C++用面向对象的方法求阶乘
问题A:【类的设计】用面向对象的方法求阶乘【类与对象】题目描述定义一个接口,接口(Fun)中有以下三个抽象方法:1.“longfact(intm);”方法的功能为求参数的...
问题 A: 【类的设计】用面向对象的方法求阶乘【类与对象】
题目描述
定义一个接口,接口(Fun)中有以下三个抽象方法:
1.“long fact(int m);”方法的功能为求参数的阶乘。
2.“long intPower(int m, int
n);”方法的功能为求参数m的n次方。
3.“boolean findFactor(int m, int
n);”方法的功能为求参数m加上参数n的和是否大于30。
定义类(Method)实现该接口,调用接口中的三个方法,并将所得结果按格式输出。
此题不需要提供主程序,系统已提供主程序。
输入
输入有两个正整数,分别为m和n。
输出
输出有三行,第一行为m的阶乘所得的值。
第二行为m的n次方的值。
若m+n的值大于30,则第三行输出“true”,否则输出“false”。
样例输入
3 2
样例输出
6
9
false 展开
题目描述
定义一个接口,接口(Fun)中有以下三个抽象方法:
1.“long fact(int m);”方法的功能为求参数的阶乘。
2.“long intPower(int m, int
n);”方法的功能为求参数m的n次方。
3.“boolean findFactor(int m, int
n);”方法的功能为求参数m加上参数n的和是否大于30。
定义类(Method)实现该接口,调用接口中的三个方法,并将所得结果按格式输出。
此题不需要提供主程序,系统已提供主程序。
输入
输入有两个正整数,分别为m和n。
输出
输出有三行,第一行为m的阶乘所得的值。
第二行为m的n次方的值。
若m+n的值大于30,则第三行输出“true”,否则输出“false”。
样例输入
3 2
样例输出
6
9
false 展开
3个回答
展开全部
#include <iostream>
#include <windows.h>
using namespace std;
//定义接口
class Fun{
public:
Fun(){};
virtual ~Fun(){};
virtual long fact(int m)=0; //求参数的阶乘
virtual long intPower(int m,int n)=0; //求参数m的n次方
virtual boolean findFactor(int m,int n)=0; //求参数m加上参数n的和是否大于30
};
class Method:public Fun{
public:
Method(){};
virtual ~Method(){}
long fact(int m)
{
long s=1;
if(m==0 || m==1)
return 1;
else if(m>1)
{
for(int i=1;i<=m;i++)
s *= i;
return s;
}
else
return -1;
}
long intPower(int m,int n)
{
long s=1;
if(n == 0)
return 1;
else if(n>0)
{
for(int j=1;j<=n;j++)
s *=m;
return s;
}
else
return -1;
}
boolean findFactor(int m,int n)
{
if((m+n)>30)
return true;
else
return false;
}
};
说明:用VC6.0现写的,自己写了个主函数测试,完全通过。
#include <windows.h>
using namespace std;
//定义接口
class Fun{
public:
Fun(){};
virtual ~Fun(){};
virtual long fact(int m)=0; //求参数的阶乘
virtual long intPower(int m,int n)=0; //求参数m的n次方
virtual boolean findFactor(int m,int n)=0; //求参数m加上参数n的和是否大于30
};
class Method:public Fun{
public:
Method(){};
virtual ~Method(){}
long fact(int m)
{
long s=1;
if(m==0 || m==1)
return 1;
else if(m>1)
{
for(int i=1;i<=m;i++)
s *= i;
return s;
}
else
return -1;
}
long intPower(int m,int n)
{
long s=1;
if(n == 0)
return 1;
else if(n>0)
{
for(int j=1;j<=n;j++)
s *=m;
return s;
}
else
return -1;
}
boolean findFactor(int m,int n)
{
if((m+n)>30)
return true;
else
return false;
}
};
说明:用VC6.0现写的,自己写了个主函数测试,完全通过。
更多追问追答
追问
编译错误
追答
是你说我不用写主程序的,看样子你自己不会写主程序进行测试,我还是把主程序贴出来吧
int main()
{
Method mm;
int a=6,b=3;
bool flag=mm.findFactor(a,b);
cout<<mm.fact(a)<<endl;
cout<<mm.intPower(a,b)<<endl;
if(flag==true)
cout<<a<<","<<b<<"的和大于30"<<endl;
else if(flag==false)
cout<<a<<","<<b<<"的和不大于30"<<endl;
return 0;
}
顺便把我运行的截图也给你看看
整个程序的截图也贴给你看看,编译完全没问题:
展开全部
这感觉题目要求你用Java写啊
// C++
class Fun {
public:
virtual long fact(int m) = 0;
virtual long intPower(int m, int n) = 0;
virtual bool findFactor(int m, int n) = 0;
};
class Method : public Fun {
public:
long fact(int m) {
long result = 1;
for (int i = 2; i <= m; i++) {
result *= i;
}
return result;
}
long intPower(int m, int n) {
long result = 1;
for (int i = 0; i < n; i++) {
result *= m;
}
return result;
}
bool findFactor(int m, int n) {
return m + n > 30;
}
};
// JAVA
import java.util.*;
import java.lang.*;
import java.io.*;
interface Fun {
public long fact(int m);
public long intPower(int m, int n);
public boolean findFactor(int m, int n);
}
class Method implements Fun {
public long fact(int m) {
long result = 1;
for(int i=2;i<=m;i++) {
result = result * i;
}
return result;
}
public long intPower(int m, int n) {
long result = 1;
for(int i=0;i<n;i++) {
result = result * m;
}
return result;
}
public boolean findFactor(int m, int n) {
return m + n > 30;
}
}
class Main
{
public static void main (String[] args) throws java.lang.Exception
{
// your code goes here
Scanner cin = new Scanner(System.in);
int m = cin.nextInt();
int n = cin.nextInt();
Fun fun = new Method();
System.out.println(fun.fact(m));
System.out.println(fun.intPower(m,n));
System.out.println(fun.findFactor(m,n));
}
}
追问
一定要C++的,你上面那个我不知道怎么提交好。
追答
// C++
#include <iostream>
using namespace std;
class Fun {
public:
virtual long fact(int m) = 0;
virtual long intPower(int m, int n) = 0;
virtual bool findFactor(int m, int n) = 0;
};
class Method : public Fun {
public:
long fact(int m) {
long result = 1;
for (int i = 2; i <= m; i++) {
result *= i;
}
return result;
}
long intPower(int m, int n) {
long result = 1;
for (int i = 0; i < n; i++) {
result *= m;
}
return result;
}
bool findFactor(int m, int n) {
return m + n > 30;
}
};
int main() {
int n, m;
cin >> m >> n;
Method method;
cout << method.fact(m) << endl;
cout << method.intPower(m, n) << endl;
cout << (method.findFactor(m, n) ? "true" : "false") << endl;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
class fun
{
public:
static long fact(int m);
static long intPower(int m, int n);
static bool findFactor(int m, int n);
};
long fun::fact(int m)
{
long ret=1;
for(int i=1;i<=m;++i)
ret *=i;
return ret;
}
long fun::intPower(int m, int n)
{
return pow(m,n);
}
bool fun::findFactor(int m, int n)
{
return m+n>30;
}
int main()
{
cout<<fun::fact(3)<<endl;
cout<<fun::intPower(3,2)<<endl;
cout<<boolalpha <<fun::findFactor(3,2)<<endl;
}
#include <math.h>
#include <iomanip>
using namespace std;
class fun
{
public:
static long fact(int m);
static long intPower(int m, int n);
static bool findFactor(int m, int n);
};
long fun::fact(int m)
{
long ret=1;
for(int i=1;i<=m;++i)
ret *=i;
return ret;
}
long fun::intPower(int m, int n)
{
return pow(m,n);
}
bool fun::findFactor(int m, int n)
{
return m+n>30;
}
int main()
{
cout<<fun::fact(3)<<endl;
cout<<fun::intPower(3,2)<<endl;
cout<<boolalpha <<fun::findFactor(3,2)<<endl;
}
追问
错误80%
追答
#include
#include
#include
using namespace std;
typedef boolboolean;
class fun
{
public:
static long fact(int m);
static long intPower(int m, int n);
static boolean findFactor(int m, int n);
};
long fun::fact(int m)
{
long ret=1;
for(int i=1;i30);
cout<<boolalpha <<ret<<endl;
return ret;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询