首页 > C/C++语言 > C/C++数据结构 > 求阶乘算法(0—10000)标准C++语言控制台应用程序
2006
08-24

求阶乘算法(0—10000)标准C++语言控制台应用程序

下载本文所附源代码


可能很多人都曾经想过要实现一些比较大的数的阶乘,但是C++中提供的标准数据类型其存储空间太小,根本无法实现。我们可以通过其他方法来实现,本程序用一个很简单的算法实现数的阶乘,程序很短,也很简单,各处都有注释,相信大家很容易就可以看懂,下载源码后在VC6.0中打开编译后即可运行,程序经少许改动可以实现更大的数的阶乘,有兴趣的读者在看完本程序后可一动手试试,其乐无穷!!希望这个程序能给大家一点帮助。程序可能还有许多不足之出,热烈欢迎各位前来指导。在下在此表示衷心的感谢!!!!!


求阶乘算法(0—10000)标准C++语言控制台应用程序》有 2 条评论

  1. ningweidong 说:

    我看了半天也没看懂,郁闷.只好自已经重写一个.

    #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;
    }

  2. ningweidong 说:

    不过,这个程序也有一个问题,如果数值太大了,超过了某一个值(具体多大我也不知道),程序就会出错.当然,如果把分配内存的值改大,这个最大值也会变大,但是这个问题却避免不了.

留下一个回复