1、编写一个函数,求数列运算中从n个不同的数中取r个数的所有选择的个数,要求如下:
主程序中设计一个循环,不断从输入接收n和r的值,计算结果并输出,当用户输入0 0时,程序结束;
能检查输入数据的合法性,要求n>=1并且n>=r;
能得到正确结果。
输入:5 3输出:10
输入:10 20;输出:Input Invalid !;
输入:-1 4;输出:Input Invalid!;
步骤:
利用一个函数fn(int n)计算n!,
利用另一个函数Cnr(int n, int r)计算Cnr,在该函数中调用fn(),
2、内联函数的使用:定义一个TestInline类,该类拥有两个私有整型变量i,j,为该类添加3个内联函数 int add()返回两数之和,int dec()返回两数之差,int GetNum()返回私有变量j的值。要求如下:
1、add、dec的函数体定义在类的内部
3、GetNum的函数体定义在类的外部
1.程序:
#include<iostream>
using namespace std;
int fn(int n)
{
if(n==0)return 1;
else return n*fn(n-1);
}
int Cnr(int n, int r)
{
int mul=1,i;
if(n<1||n<r)
{ cout<<"Input Invalid !"<<endl;return 0;}
for(i=0;i<r;i++)
mul*=(n-i);
return mul/fn(r);
}
int main()
{
int m,n;
cout<<"input two integers:";
cin>>m>>n;
cout<<Cnr(m,n);
return 0;
}
结果:
2.程序:
#include<iostream>
using namespace std;
class TestInline
{
private:
int i;
int j;
public:
TestInline(int a=0,int b=0):i(a),j(b){}
int add(){return i+j;}
int dec(){return i-j;}
inline int GetNum();
};
inline int TestInline::GetNum()
{
return j;
}
int main()
{
TestInline test(1,3);
cout<<"add="<<test.add()<<endl;
cout<<"dec="<<test.dec()<<endl;
cout<<"j="<<test.GetNum()<<endl;
return 0;
}
结果:
说明:add和dec因为在类内定义所以可以省略inline关键字。