c语言两个数组相加
Ⅰ c语言 两个任意长度一维数组的加法
#include<stdio.h>
#include<string.h>
char s[100001];
int a[100001],b[100001],c[100001];
int main(){
long i,j,k,m,n;
long alen,blen,clen;
gets(s);
alen=strlen(s);
for(i=alen-1;i>=0;i--)
a[alen-i]=s[i]-'0';
gets(s);
blen=strlen(s);
for(i=blen-1;i>=0;i--)
b[blen-i]=s[i]-'0';
if(alen>blen)
clen=alen;
else
clen=blen;
for(i=1;i<=clen;i++)
c[i]=a[i]+b[i];
for(i=1;i<=clen;i++)
if(c[i]>9){
c[i+1]++;
c[i]-=10;
if(i==clen)
clen++;
}
for(i=clen;i>=1;i--)
printf("%d",c[i]);
printf("\n");
return 0;
}
Ⅱ 用c语言数组计算两个数的四则运算,考虑两个数非常大的情况
假设A
100位、B
100位分别存到数组m、n中。(位数不一样时,小的数补零填充)
1、加法时,从低位按位相加、进位
2、减法时,重高位开始比较大小,然后从低位开始按位减、借位
3、乘法时,低位按位乘、进位
4、除法时,用模运算求整数商,小数部分折半减,逐步精确
附:直接点的方法也可以先转化成二进制、然后用补码运算