大数的乘法

来源:互联网 发布:linux解压war包命令 编辑:程序博客网 时间:2024/05/16 07:46
#include "stdio.h"#include "string.h"int a[100]={0},b[100]={0},move[100]={0},result[100]={0} ;int fac();int main(){int i,j;char str1[100],str2[100];printf("please input a number :\n");gets(str1);for(j=0,i=strlen(str1)-1;i>=0;i--,j++)a[j]=str1[i]-'0';printf("please input other number :\n");gets(str2);for(j=0,i=strlen(str2)-1;i>=0;i--,j++)b[j]=str2[i]-'0';fac();for(i=99;result[i]==0;i--);for(;i>=0;i--)printf ("%d",result[i]);return 0;}int fac(){int i,j,k;int tempi,tempj;int tempx;int flag;for(i=99;b[i]==0;i--);tempi=i;for(i=0;i<=tempi;i++){for(j=99;a[j]==0;j--);tempj=j;flag=0;for (j=0;(j<=tempj || flag==1);j++){flag=0;tempx=a[j]*b[i];if(result[j+i]+move[j+i]+tempx%10>9)move[j+i+1]=(result[j+i]+move[j+i]+tempx%10)/10;result[j+i]=(result[j+i]+move[j+i]+tempx%10)%10;if(tempx>9)for (k=j+i;tempx>0;k++) {move[k+1]=move[k+1]+tempx/10;tempx=tempx/10;}move[j+i]=0;for(k=99;move[k]==0;k--); //判断进位数组剩下的进位数是否为零if(k>j){flag=1;}}}return 0;}

0 0
原创粉丝点击