下载本文所附源代码
可能很多人都曾经想过要实现一些比较大的数的阶乘,但是C++中提供的标准数据类型其存储空间太小,根本无法实现。我们可以通过其他方法来实现,本程序用一个很简单的算法实现数的阶乘,程序很短,也很简单,各处都有注释,相信大家很容易就可以看懂,下载源码后在VC6.0中打开编译后即可运行,程序经少许改动可以实现更大的数的阶乘,有兴趣的读者在看完本程序后可一动手试试,其乐无穷!!希望这个程序能给大家一点帮助。程序可能还有许多不足之出,热烈欢迎各位前来指导。在下在此表示衷心的感谢!!!!!
-
近期文章
近期评论
- coolker 发表在《打造最快的Hash表》
- struggle 发表在《提供C语言教学课件(适用于初学者)》
- zhanghaibo 发表在《提供C语言教学课件(适用于初学者)》
- zhanghaibo 发表在《提供C语言教学课件(适用于初学者)》
- diys 发表在《C语言编程宝典(王大刚) 1.1 C 语言的产生与发展》
文章归档
- 2022 年十月
- 2014 年一月
- 2013 年十二月
- 2012 年十一月
- 2012 年七月
- 2012 年六月
- 2012 年五月
- 2012 年四月
- 2012 年三月
- 2012 年二月
- 2011 年十二月
- 2011 年十月
- 2011 年九月
- 2011 年八月
- 2011 年七月
- 2011 年六月
- 2011 年五月
- 2011 年四月
- 2011 年三月
- 2011 年二月
- 2011 年一月
- 2010 年十二月
- 2010 年十一月
- 2010 年十月
- 2010 年九月
- 2010 年八月
- 2010 年七月
- 2010 年六月
- 2010 年五月
- 2010 年四月
- 2010 年三月
- 2010 年二月
- 2010 年一月
- 2009 年十二月
- 2009 年十一月
- 2009 年十月
- 2009 年九月
- 2009 年八月
- 2009 年七月
- 2009 年六月
- 2009 年五月
- 2009 年四月
- 2009 年三月
- 2009 年二月
- 2009 年一月
- 2008 年十二月
- 2008 年十一月
- 2008 年十月
- 2008 年九月
- 2008 年八月
- 2008 年七月
- 2008 年六月
- 2008 年五月
- 2008 年四月
- 2008 年三月
- 2008 年二月
- 2008 年一月
- 2007 年十二月
- 2007 年十一月
- 2007 年十月
- 2007 年九月
- 2007 年八月
- 2007 年七月
- 2007 年六月
- 2007 年三月
- 2007 年二月
- 2007 年一月
- 2006 年十二月
- 2006 年十一月
- 2006 年十月
- 2006 年九月
- 2006 年八月
- 2006 年七月
- 2006 年六月
- 2006 年五月
- 2006 年四月
- 2006 年三月
- 2006 年二月
- 2006 年一月
- 2005 年十二月
- 2005 年十一月
分类目录
功能
我看了半天也没看懂,郁闷.只好自已经重写一个.
#include<iostream.h>
void fact(int *s, int n)
{
int i = 1;
int j = 1;
int up = 0;
for (j=1; j<=n; j++)
{
for (i=0; i<2*n; i++)
{
s [i] *= j;
}
for (i=n*2; i>0; i–)
{
if (s[i]>9)
{
up = s[i] / 10;
s [i] %= 10;
s [i-1] += up;
}
}
}
}
void main()
{
int n = 0;
int i = 0;
int j = 0;
cout << “输入一个正数:” << endl;
cin >> n;
if (n<0)
{
cout << “数值有误!” << endl;
return;
}
else if (n == 0)
{
cout << “0!==1″ << endl;
return;
}
int *s = new int[n*2];
for (i=0; i<n*2; i++)
{
s[i] =0;
}
s[n*2-1] = 1;
fact(s,n);
for (i=j; i<n*2; i++)
{
cout << s[i];
}
cout << endl;
}
不过,这个程序也有一个问题,如果数值太大了,超过了某一个值(具体多大我也不知道),程序就会出错.当然,如果把分配内存的值改大,这个最大值也会变大,但是这个问题却避免不了.