正文

大数相乘2008-03-23 13:27:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/zhaoyg/33524.html

分享到:


#include<stdio.h>
#include<conio.h>
#define MAX 100000
int main()
{    long x,y;
 int p;
    int a[MAX];
    int b[MAX];
    int c[MAX];
    int sum[MAX] ;
    int len_a,len_b,i,j,temp,k;
   
 while(1)
 {
    
     for (int i=0;i<MAX;i++)
     {
          a[i]=0;
          b[i]=0;
          c[i]=0;
          sum[i]=0;
        }
          
        printf("请输入两个相乘的数,用*分隔\n");
        scanf("%d*%d",&x,&y);
   
        for (len_a=0;x;len_a++)
        {
          a[len_a]=x%10;
          x=x/10;
        }
   
        for (len_b=0;y;len_b++)
        {
          b[len_b]=y%10;
          y=y/10;
        }
   
        for (i=0;i<len_b;i++)
        {
           if (i!=0)
           {
              for (temp=len_a-1;temp>=0;temp--)
        { 
     a[temp+1]=a[temp];
    //printf("temp=%d ",a[temp+1]);
              }
              a[0]=0;
              len_a++;
        }
  //printf("   ");
       
        for (j=0;j<len_a;j++)
        {   
   c[j]=a[j]*b[i];
   //printf("%d ",c[j]);
  }
       
        p=len_a;
        for (k=0;k<p;k++)
        {
            if (c[k]>9)
            {
                c[k+1]=c[k+1]+c[k]/10;
                c[k]=c[k]%10;
                if (c[p]!=0)
                   p++;
            }
        }
       
        for (k=0;k<p;k++)
            sum[k]=sum[k]+c[k];
       
        for (k=0;k<p;k++)
        {
            if (sum[k]>9)
            {
                sum[k+1]=sum[k+1]+sum[k]/10;
                sum[k]=sum[k]%10;
                if (sum[p]!=0)
                   p++;
            }
        }
    }
    for (temp=p-1;temp>=0;temp--)
    printf("%d",sum[temp]);
 printf("\n");
   }
   
    getch();
    return 0;
}

阅读(2221) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册