C语言大数相乘
2014-11-17 15:22
183 查看
#include
#include
#include
#define len 20
void display(int *result,int length);
void displayAll(int *result,int length);
int * init(int *r,int length);
int * add(int *r1,int *r2,int length);
int * moveLeft(int *result,int length);
int main()
{
int i,j,t,n,temp;
char mult1[len];
char mult2[len];
printf("Input two big numbers:\n");
scanf("%s %s",mult1,mult2);
int len1 = strlen(mult1);
int len2 = strlen(mult2);
int *c1 = (int *)malloc(sizeof(int)*len1);
int *c2 = (int *)malloc(sizeof(int)*len2);
int *result = (int *)malloc(sizeof(int)*(len1+len2));
int *tempResult = (int *)malloc(sizeof(int)*(len1+len2));
for(i=0; i
c1[i]=(int)mult1[i]-48;
for(i=0; i
c2[i]=(int)mult2[i]-48;
n=len1+len2;
int resultLength=n;
init(result,n);
init(tempResult,n);
n--;
temp=0;
for(i=len2-1; i>-1;i--){
t=c2[i];
printf("%d*",t);
int flag=0;//进位
init(tempResult,resultLength);
n=resultLength-1;
for(j=len1-1; j>-1 ;j--)
{
printf("%d=",c1[j]);
temp=t*c1[j]+flag;
flag=temp/10;
tempResult
=temp;
printf("%d,进位:%d\n",tempResult
,flag);
n--;
}
if(n>-1)
tempResult
+=flag;
//循环左移
for(int p=len2-1-i;p>0;p--){
tempResult=moveLeft(tempResult,resultLength);
}
result=add(result,tempResult,resultLength);
displayAll(tempResult,resultLength);
}
display(result,resultLength);
return 1;
}
void displayAll(int *result,int length){
for(int i=0;i
printf("%d",result[i]);
}
printf("\n");
}
void display(int *result,int length){
printf("Result:");
if(result[0]!=0)
printf("%d",result[0]);
for(int i=1;i
printf("%d",result[i]);
}
printf("\n");
}
int * moveLeft(int *result,int length){
for(int k=0;k
if(k!=length-1)
result[k]=result[k+1];
else
result[k]=0;
}
return result;
}
int * add(int *r1,int *r2,int length){
int flag=0;
for(int i=length-1;i>=0;i--){
int temp=r1[i]+r2[i]+flag;
flag=temp/10;
r1[i]=temp;
}
return r1;
}
int * init(int *r,int length){
for(int i=0; i<length;i++)
r[i]=0;
return r;
}
#include
#include
#define len 20
void display(int *result,int length);
void displayAll(int *result,int length);
int * init(int *r,int length);
int * add(int *r1,int *r2,int length);
int * moveLeft(int *result,int length);
int main()
{
int i,j,t,n,temp;
char mult1[len];
char mult2[len];
printf("Input two big numbers:\n");
scanf("%s %s",mult1,mult2);
int len1 = strlen(mult1);
int len2 = strlen(mult2);
int *c1 = (int *)malloc(sizeof(int)*len1);
int *c2 = (int *)malloc(sizeof(int)*len2);
int *result = (int *)malloc(sizeof(int)*(len1+len2));
int *tempResult = (int *)malloc(sizeof(int)*(len1+len2));
for(i=0; i
c1[i]=(int)mult1[i]-48;
for(i=0; i
c2[i]=(int)mult2[i]-48;
n=len1+len2;
int resultLength=n;
init(result,n);
init(tempResult,n);
n--;
temp=0;
for(i=len2-1; i>-1;i--){
t=c2[i];
printf("%d*",t);
int flag=0;//进位
init(tempResult,resultLength);
n=resultLength-1;
for(j=len1-1; j>-1 ;j--)
{
printf("%d=",c1[j]);
temp=t*c1[j]+flag;
flag=temp/10;
tempResult
=temp;
printf("%d,进位:%d\n",tempResult
,flag);
n--;
}
if(n>-1)
tempResult
+=flag;
//循环左移
for(int p=len2-1-i;p>0;p--){
tempResult=moveLeft(tempResult,resultLength);
}
result=add(result,tempResult,resultLength);
displayAll(tempResult,resultLength);
}
display(result,resultLength);
return 1;
}
void displayAll(int *result,int length){
for(int i=0;i
printf("%d",result[i]);
}
printf("\n");
}
void display(int *result,int length){
printf("Result:");
if(result[0]!=0)
printf("%d",result[0]);
for(int i=1;i
printf("%d",result[i]);
}
printf("\n");
}
int * moveLeft(int *result,int length){
for(int k=0;k
if(k!=length-1)
result[k]=result[k+1];
else
result[k]=0;
}
return result;
}
int * add(int *r1,int *r2,int length){
int flag=0;
for(int i=length-1;i>=0;i--){
int temp=r1[i]+r2[i]+flag;
flag=temp/10;
r1[i]=temp;
}
return r1;
}
int * init(int *r,int length){
for(int i=0; i<length;i++)
r[i]=0;
return r;
}
相关文章推荐
- 一道C语言面试题——大数相乘的问题
- C语言实现两个大数相乘问题
- C语言:大数相乘.
- C语言实现两个大数相乘
- C语言精度计算——大数相乘
- 【C语言代码】大数相乘
- 华为2012校园招聘上机题——大数相乘,两个超过100位的大数相乘C语言
- C语言 大数相乘法
- C语言大数相乘
- 大数相乘C语言代码
- C语言大数相乘问题普通算法->acm.scu.edu.cn:1002
- C语言 乘法 大数相乘
- C语言大数相乘A × B problem
- C语言实现大数相乘
- 华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)
- 【C语言】大数相乘
- C语言大数相乘的问题
- C语言中的大数相乘问题
- c语言的大数相乘 十分经典的代码
- 大数相乘 +方法2(C语言)