大整数加法

#include<stdio.h>
#include<string.h>
int main() {
char a[201],b[201],h;//定义两个字符串,用来储存输入的数
int c,d,e,f,i,j,k[202]={0},l,m=0,n=0;//定义一个数组来储存要输出的数,注意数组的长度
gets(a);
gets(b);
c=strlen(a);
d=strlen(b);
if(c<d) e=d;
else e=c;//考虑到两个字符串的长度可能不相同,需要选择长度长的那个来定义数组的长度
for(i=0;i<c/2;i++) {
h=a[c-1-i];
a[c-1-i]=a[i];
a[i]=h;
}
for(i=0;i<d/2;i++) {
h=b[d-1-i];
b[d-1-i]=b[i];
b[i]=h;
}//将两个字符串倒置过来
if(e==c) {
for(i=d;i<e;i++) {
b[i]=‘0’;
}
}
else {
for(i=c;i<e;i++) {
a[i]=‘0’;
}//注意将零补充在长度较短的字符串中
}
for(i=0;i<e;i++){//开始计算,注意进一
f=a[i]-‘0’+b[i]-‘0’+k[i];
if(f/10>0) {
k[i]=f%10;
k[i+1]=1;
}
else k[i]=f;
}//将数组k倒置过来
for(i=0;i<(e+1)/2;i++) {
l=k[e-i];
k[e-i]=k[i];
k[i]=l;
}
i=0;
while(k[i]0) {
m=i+1;
i++;
}//去除k数组中的前导0
for(i=0;i<e+1;i++) {
if(k[i]!=0) n=1;
}
if(n
1) {//考虑输入全为0的情况
for(i=m;i<e+1;i++) {
printf("%d",k[i]);
}
}
else{
printf(“0\n”);
}
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值