⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pow.c

📁 程序中一开始已初始化一个需要求的阶乘数字 程序只需要运行就可得到结果,如要修改,可在源代码作一个小小修改即可
💻 C
字号:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<dos.h>
#define NUM 9000
int P[NUM]={0},M[NUM]={0};

add(int a,int b,int *c,int *T)
  { int ab;
    ab=a+b+*T;
    *T=(ab/10)%10;
    *c=ab%10;
  }

adda(int a[],int b[])
  { int T=0,c,i,j;
    for(i=0;i<NUM;i++)
       { add(a[i],b[i],&c,&T);
         M[i]=c;
       }
    M[i]=T;
  }

mu(char a,char b,char *c,int *T)
  { int ab;
    ab=(a-48)*(b-48)+*T;
    *T=(ab/10)%10;
    *c=ab%10+48;
   }

mul(char a[],char b,int ii)
  { int len,i,j=0,T=0;
    char C[NUM],c;
    len=strlen(a);
    for(i=len-1;i>=0;i--)
       { mu(a[i],b,&c,&T);
         C[j++]=c;
       }
    if(T!=0)
       { C[j]=T+48;C[j+1]='\0';}
    else   C[j]='\0';
 for(i=0;i<=ii;i++)
     P[i]=0;
 for(i=0;i<strlen(C);i++)
       { P[ii+i]=C[i]-48;
       }
    adda(M,P);
  }


mul1(char a[],char b[])
   { int i,len,j=0;
     len=strlen(b);
     for(i=len-1;i>=0;i--)
         { mul(a,b[i],j);
           j++;
         }
   }

multiply(char a[],char b[],char R[])
 {
 int T=0,i=0,j=0;

  mul1(a,b);
  for(i=NUM-1;i>=0;i--)
      { if(M[i]!=0)
         break;
      }
  for(j=0;j<=i;j++)
     R[i-j]=M[j]+48;
   R[i+1]='\0';

   }

intchar(int i,char mui[])
  { if((i/1000)%10!=0)
          { mui[0]=(i/1000)%10+48;
            mui[1]=(i/100)%10+48;mui[2]=(i/10)%10+48;
            mui[3]=i%10+48;
            mui[4]='\0';
          }
        else if((i/100)%10!=0)
              { mui[0]=(i/100)%10+48;
                mui[1]=(i/10)%10+48;
                mui[2]=i%10+48;
                mui[3]='\0';
              }
           else if((i/10)%10!=0)
               { mui[0]=(i/10)%10+48;
                 mui[1]=i%10+48;
                 mui[2]='\0';
               }

               else { mui[0]=i%10+48;
                      mui[1]='\0';
                   }
        
  }


powd(int N,char R[],char SUM[])
  {int i,j; char muN[5];
    intchar(N,muN);
    SUM[0]=49;SUM[1]='\0';
    for(i=1;i<=N;i++)
    {  multiply(SUM,muN,R);
       strcpy(SUM,R);
       for(j=0;j<=NUM;j++)
          {P[j]=0;M[j]=0;}




    }





  }




main()
{ 
  int T=0,i=0,j,n=1025;
  char a,b,c,R[NUM],SUM[NUM],mui[5];
  struct time timep1, timep2,timep;
  FILE *fpr,*fpw,*fp;
 fp=fopen("in.txt","w");
   for(i=1;i<=50;i++)
      fprintf(fp,"\n%d",i);
   fclose(fp);


   fpr=fopen("in.txt","r");
   fpw=fopen("out.txt","a");

  intchar(n,mui);
  while(!feof(fpr))
{ fscanf(fpr,"%d",&n);

  gettime(&timep1);
  T=0;
  SUM[0]=49;SUM[1]='\0';
  for(i=1;i<=n;i++)
     {  intchar(i,mui);
        for(j=0;j<NUM;j++)
         M[j]=0;
        multiply(SUM,mui,R);
        strcpy(SUM,R); 
         for(j=0;j<=NUM;j++)
            {P[j]=0;M[j]=0;}







     }

  /* powd(n,R,SUM);   */




   if(n==0)
      SUM[0]=48;


   
  gettime(&timep2);
 fprintf(fpw,"N=%d\n",n);
 fprintf(fpw,"%s   \nlength=%d\n",SUM,strlen(SUM));
 fprintf(fpw," \nThe time is :%2d:%2d:%2d:%2d",timep1.ti_hour,timep1.ti_min,timep1.ti_sec,timep1.ti_hund);
 fprintf(fpw," \nThe time is :%2d:%2d:%2d:%2d\n",timep2.ti_hour,timep2.ti_min,timep2.ti_sec,timep2.ti_hund);
   





}
fclose(fpr);
fclose(fpw);



}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -