void add(unsigned int *R1,int h,unsigned int *R2,int t,unsigned int *R_add,int s)
{
int i,max,min,temp=0;
if(h<t)
{
min=h;
max=t;
}
else if(h>t)
{
min=t;
max=h;
}
else
{
max=t;min=t;
}
for(i=0;i<min;i++)//将两个数组的前min个元素进行相加
{
R_add[i]=R1[i]+R2[i]+temp;
if((R_add[i]<R1[i])||(R_add[i]<R2[i]))
{
temp=1;
}
else temp=0;
}
if(max==min)
{
while(temp)
{
max++;
R_add[max-1]=temp;
temp=0;
}
}
else{
for(i=min;i<max;i++)//将剩余的元素复制给和
{ if(max==h)
{
R_add[i]=R1[i]+temp;
temp=0;
}
else
{
R_add[i]=R2[i]+temp;
temp=0;
}
}
}
这个问题的核心就是实现大数的加法运算....
这个是我以前写的....可以实现任意数相加...是在位操作方面考虑的...
{
int i,max,min,temp=0;
if(h<t)
{
min=h;
max=t;
}
else if(h>t)
{
min=t;
max=h;
}
else
{
max=t;min=t;
}
for(i=0;i<min;i++)//将两个数组的前min个元素进行相加
{
R_add[i]=R1[i]+R2[i]+temp;
if((R_add[i]<R1[i])||(R_add[i]<R2[i]))
{
temp=1;
}
else temp=0;
}
if(max==min)
{
while(temp)
{
max++;
R_add[max-1]=temp;
temp=0;
}
}
else{
for(i=min;i<max;i++)//将剩余的元素复制给和
{ if(max==h)
{
R_add[i]=R1[i]+temp;
temp=0;
}
else
{
R_add[i]=R2[i]+temp;
temp=0;
}
}
}
这个问题的核心就是实现大数的加法运算....
这个是我以前写的....可以实现任意数相加...是在位操作方面考虑的...