#include<stdio.h>#include<conio.h>#define MAX 100000int 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;}

评论