我回去编了下,晕了,昨天编到12点多,哎.
下面您看看,我分了三个模块,两块是函数。
主程序:
#include "stdio.h"
#include "conio.h"
#include "ceshi2.c"
#include "string.h"
int main()
{
   short result[300]={0},end[300]={0},sum[300]={0},num[20]={0},i,j,len,q=0,k,m;
   char str_num[21],ch;
   gets(str_num);
   k=strlen(str_num)-2;
   for(i=2;i<k+2;num[i-2]=str_num[i++]-48);
   for(j=k-1;j>=0;j--)
      {
         multi(result,j+1,num[j]);
         len=3*(j+1)-1;
         while(len>=0)
            {
               sprintf(&ch,"%d",result[len--]);
               end[q++]=ch-48;
            }
         for(i=3*j+2;i>=0;i--)
            {
               sum[i]+=end[i];
               if(sum[i]>9)
                 {
                    if(i>0)
                      {
                        sum[i-1]+=sum[i]/10;
                        if(i>1)
                          sum[i-2]+=sum[i+1]/10;
                        sum[i-1]%=10;
                      }
                    sum[i]%=10;
                 }
            }
     for(i=0;i<300;end[i]=0,result[i++]=0);
     q=0;
      }
   for(i=299;!sum[i];i--);
   printf("0.");
   for(m=0;m<=i;m++)
      printf("%d",sum[m]);
   getch();
}
函数1:(保存成ceshi2.c)
#include "stdio.h"
#include "conio.h"
#include "ceshi.c"
#include "string.h"
void  multi(short *result,short j,short num)
{
   short sum[300]={0},i,m;
   cal(j,sum);
   for(i=299;!sum[i];i--);
   for(m=0;m<=i;m++)
      {
          result[m]+=sum[m]*num;
          result[m+1]+=result[m]/10;
          result[m+2]+=result[m+1]/10;
          result[m+1]%=10;
          result[m]%=10;
      }
}
函数2:(保存成ceshi.c)
#include "stdio.h"
#include "conio.h"
void pow125(short *a,short *result);
void cal(short time,short *result)
{
    short a1[300]={5,2,1},i=0,k,a2[300]={0};
    while(++i!=time)
      {
         if(i%2)
           pow125(a1,a2);
         else pow125(a2,a1);
      }
    if(time%2)
      {
         for(i=0;i<300;i++)
            result[i]=a1[i];
      }
    else
      {
         for(i=0;i<300;i++)
            result[i]=a2[i];
      }
}
void pow125(short *a,short *result)
{
   short i,j,k,num[3]={5,2,1};
   for(k=299;!a[k];k--);
   for(i=0;i<300;result[i++]=0);
   for(i=0;i<3;i++)
   for(j=0;j<=k;j++)
      {
         result[i+j]+=a[j]*num[i];
         result[i+j+1]+=result[i+j]/10;
         result[i+j]%=10;
      }
}
以上三个程序要求保存在同一目录下.算法相当繁杂,我下个帖再写,先帖这三个上去,以免帖子太长.

对不礼貌的女生收钱......

 
											






 
	    



