C++求n的阶乘!

要简单点的~
能运行出来的~谢谢

C++求n的阶乘代码如下:

#include<iostream>  

using namespace std;   

int fac(int);   

int main()  

{  

int n;    

while(cin>>n)  

{  

cout<<n<<"!= "<<fac(n)<<endl;  

}   

return 0;  

}    

int fac(int x)  

{  

register int i,f=1;  //定义寄存器变量  

for(i=1;i<=x;i++)  

f*=i;    

return f;  

扩展资料:

C++求n的阶乘的其他方法:

#include<iostream>  

using namespace std;    

int fac(int);    

int main()  

{  

int i;    

for(i=1;i<=10;i++)  

{  

cout<<i<<"!= "<<fac(i)<<endl;  

}    

return 0;  

}    

int fac(int x)  

{  

static int f=1;   //静态局部变量  

f*=x;    

return f;  

}  

参考资料:

百度百科-C++

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2019-09-04

以下为C++求阶乘的四种方法,需要注意的是,各个代码只是提供了求阶乘的思路,以便在实际需要时再来编码,各个程序都在1到10内测试正确。

1、该程序在每次输入n时,都会调用fac()来暴力计算以得到结果:

2、该程序利用了数组记录已得到的结果,并在计算下一个结果时利用了已得到的结果。

3、应该说该代码实用性最差,主要是来学习静态局部变量来了。

4、此代码较不常用,思路比较新奇,但可以尝试。

扩展资料

运行程序后,1-10的结果如下,可供检验:

1、当i为:1时阶乘值为:1

2、当i为:1时阶乘值相加为:1

3、当i为:2时阶乘值为:2

4、当i为:2时阶乘值相加为:3

5、当i为:3时阶乘值为:6

6、当i为:3时阶乘值相加为:9

7、当i为:4时阶乘值为:24

8、当i为:4时阶乘值相加为:33

9、当i为:5时阶乘值为:120

10、当i为:5时阶乘值相加为:153

11、当i为:6时阶乘值为:720

12、当i为:6时阶乘值相加为:873

13、当i为:7时阶乘值为:5040

14、当i为:7时阶乘值相加为:5913

15、当i为:8时阶乘值为:40320

16、当i为:8时阶乘值相加为:46233

17、当i为:9时阶乘值为:362880

18、当i为:9时阶乘值相加为:409113

19、当i为:10时阶乘值为:3628800

20、当i为:10时阶乘值相加为:4037913

本回答被网友采纳
第2个回答  推荐于2019-10-07

以下为C++求阶乘的四种方法,需要注意的是,各个代码只是提供了求阶乘的思路,以便在实际需要时再来编码,各个程序都在1到10内测试正确。

1、该程序在每次输入n时,都会调用fac()来暴力计算以得到结果:

2、该程序利用了数组记录已得到的结果,并在计算下一个结果时利用了已得到的结果。

3、应该说该代码实用性最差,主要是来学习静态局部变量来了。

4、此代码较不常用,思路比较新奇,但可以尝试。

扩展资料:

运行程序后,1-10的结果如下,可供检验:

1、当i为:1时阶乘值为:1

2、当i为:1时阶乘值相加为:1

3、当i为:2时阶乘值为:2

4、当i为:2时阶乘值相加为:3

5、当i为:3时阶乘值为:6

6、当i为:3时阶乘值相加为:9

7、当i为:4时阶乘值为:24

8、当i为:4时阶乘值相加为:33

9、当i为:5时阶乘值为:120

10、当i为:5时阶乘值相加为:153

11、当i为:6时阶乘值为:720

12、当i为:6时阶乘值相加为:873

13、当i为:7时阶乘值为:5040

14、当i为:7时阶乘值相加为:5913

15、当i为:8时阶乘值为:40320

16、当i为:8时阶乘值相加为:46233

17、当i为:9时阶乘值为:362880

18、当i为:9时阶乘值相加为:409113

19、当i为:10时阶乘值为:3628800

20、当i为:10时阶乘值相加为:4037913

参考资料来源:网易云课堂-C/C++学习指南系列(Qt界面篇)

本回答被网友采纳
第3个回答  推荐于2019-09-25

C++求n的阶乘代码如下:

#include<iostream>  

using namespace std;   

int fac(int);   

int main()  

{  

int n;    

while(cin>>n)  

{  

cout<<n<<"!= "<<fac(n)<<endl;  

}   

return 0;  

}    

int fac(int x)  

{  

register int i,f=1;  //定义寄存器变量  

for(i=1;i<=x;i++)  

f*=i;    

return f;  

扩展资料:

求C++求n的阶乘的其他方法:

#include<iostream.h>
int result=1;
void fac(int n)
{
while(n!=0)
{
result*=n;
n--;
}
}
void main()
{
int a;
cout<<"请输入所要求阶乘的数:"<<endl;
cin>>a;
fac(a);
cout<<a<<"!="<<result<<endl;
}

参考资料:百度百科-阶乘

本回答被网友采纳
第4个回答  2008-03-17
int factorial(int n)

{

int a[1000]; //确保保存最终运算结果的数组足够大

int carry;//进位

int digit = 1;//位数

a[0] = 1;//将结果先初始化为1

int temp;//阶乘的任一元素与临时结果的某位的乘积结果

int i,j;

for(i = 2; i <= n; ++i)//开始阶乘,阶乘元素从2开始依次“登场”

{//按最基本的乘法运算思想来考虑,将临时结果的每位与阶乘元素相乘

for(j = 1, carry = 0; j <= digit; ++j)

{

temp = a[j-1] * i + carry;//相应阶乘中的一项与当前所得临时结果的某位相乘(加上进位)

a[j-1] = temp % 10;//更新临时结果的位上信息

carry = temp / 10; //看是否有进位

}

while(carry)//如果有进位

{

a[++digit-1] = carry % 10;//新加一位,添加信息。位数增1

carry /= 10;//看还能不能进位

}

}

printf("结果是:\n%d ! = ",n);//显示结果

for(i = digit; i >=1; --i)

{

printf("%d",a[i-1]);

}

return 0;

}
相似回答