水儿 大约2小时前 无聊 的说 生命不熄,灌水不止.......   timi 大约4小时前 平静 的说 降温了   sunnytoy 大约13小时前 平静 的说 无奈呀   ㄣ苐②噤區℡ 大约15小时前 思念 的说 情何以堪啊~   鲍豪斯 大约17小时前 平静 的说 提醒您注意保暖…   jacky200247 大约17小时前 平静 的说 对不起,我不想再这样等下去了。   无耻之兔 大约22小时前 生气 的说 机电又分钱了   丰之痛 12月3日 高兴 的说 今天又想去打篮球了!!!!   丰之痛 12月2日 郁闷 的说 机电那伙人太火了..........   看海的日子 12月2日 平静 的说 输入要叽歪的内容_   [查看全部 456 条唧唧歪歪...]


打印

一个能容纳40位数的算法!

一个能容纳40位数的算法!

/*设计一个可以容纳40位数的求n!的程序*/

/*=================================================*/
/*程序名称:*/
/*程序目的:设计一个可以容纳40位数的求n!的程序    */
/*作者:kuo-Yu Huang                      */
/*=================================================*/


#include "stdio.h"
#include "conio.h"

void main(void)
{
   int  Data[40];  /*存储40位数的整数数组*/
   int  Digit;    /*数据位数变量*/
   int  i,j,r,k;   /*循环变量*/
   int  N;       /*用户输入值*/

   for (i=1;i<40+1;i++)  /*将数组初值为零*/
   Data=0;

   Data[0]=1;    /*设第零位数数组是1*/
   Data[1]=1;    /*设第一位数数组是1*/
   Digit = 1;    /*设数据位数是1*/

   printf("Enter a number what you want to calculus : ");
   scanf("%d",&N);  /*读取用户欲求的值*/
   if(N>34)
      {
        printf("The bit overload 40");
        sleep(1);
        return ;
      }
   for(i=1;i<N+1;i++)
   {
    for(j=1;j<Digit+1;j++)
        Data[j]*=i;  /*数组中内容的运算*/

    for(j=1;j<Digit+1;j++)
     {
       if(Data[j]>10)
       {
         for(r=1;r<Digit+1;r++)
          {
           if(Data[Digit]>10)
              Digit++; /*当数组中的值大于10时,则位数加一*/

              Data[r+1] +=Data[r]/10;/*前一位数组值= 前一位数组值 + 此位数组值除以10*/

              Data[r]=Data[r]%10;   /*此位数组值 = 此为数组值除以10取余*/
           }
       }
     }
     printf("%d!=",i);
     for(k=Digit;k>0;k--)
        printf("%d",Data[k]);  /*输出数组中的内容*/
     printf("\n");
   }
   sleep(5);
}

TOP

有没有知道

TOP

[s:1]  [s:2]  [s:3]  [s:4]  [s:5]  [s:6]  [s:7]  [s:8]

TOP