大数的乘法(正数)

来源:互联网 发布:绘制地图软件 编辑:程序博客网 时间:2024/04/30 14:15
#include <stdio.h>#include <string.h>int main(){char ch1[100],ch2[100];int a[100],b[100],c[100],d[100]={0};int i,j,k;int index,peace,temp;int flag;printf("input first char string:\n");scanf("%s",ch1);printf("input scond char string:\n");scanf("%s",ch2);for(i=0;i<strlen(ch1);i++)a[strlen(ch1)-i-1]=ch1[i]-'0';for(i=0;i<strlen(ch2);i++)b[strlen(ch2)-i-1]=ch2[i]-'0';for(i=0;i<strlen(ch2);i++){index=i;peace=0;temp=0;for(j=0;j<strlen(ch1);j++)//一位乘多位运算{c[index]=(b[i]*a[j]+peace)%10;peace=(b[i]*a[j]+peace)/10;index++;}if(peace)//进位{c[index]=peace;index++;}for(k=i;k<index;k++)//相加{flag=d[k];d[k]=(d[k]+c[k]+temp)%10;temp=(flag+c[k]+temp)/10;}if(temp)//进位{d[k]=temp;index++;}}for(i=index-1;i>0;i--)//判断最高位是不是‘0’{if(d[i]==0)index--;elsebreak;}printf("乘积为:\n");for(i=index-1;i>=0;i--)printf("%d",d[i]);putchar('\n');return 0;}

0 0
原创粉丝点击