您的位置:首页 > 其它

练习系统 实验三 大整数加法

2017-03-06 15:18 176 查看
当前编程题:实验三 大数、枚举问题(16级)---大整数加法

3.问题描述
求两个不超过200位的非负整数的和。
输入形式
有两行,每行是一个不超过200位的非负整数,没有多余的前导0。
输出形式
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。

样例输入

22222222222222222222
33333333333333333333
样例输出
55555555555555555555

昨天不知道是电脑抽筋了还是这两个编译软件抽筋了  反正就是不会判断了  那么正确的代码  竟然不通过   哎  昨天很崩溃

#include<stdio.h>

#include<string.h> 

int main()

{
char aa[200],bb[200];
int cc[200],i,j,lenth1,lenth2;
memset(cc,0,sizeof(cc));
gets(aa);
gets(bb);

// puts(aa);

// puts(bb);
lenth1=strlen(aa);
lenth2=strlen(bb);
if(lenth1>=lenth2)
{
for(i=0;i<lenth1;i++)
{
aa[lenth1-1-i]-='0';
bb[lenth2-1-i]-='0';
if(lenth2-1-i>=0)
{
cc[i]+=aa[lenth1-1-i]+bb[lenth2-1-i];
}
else
{
cc[i]+=aa[lenth1-1-i];
}
}
}
else
{
for(i=0;i<lenth2;i++)
{
aa[lenth1-1-i]-='0';
bb[lenth2-1-i]-='0';
if(lenth1-1-i>=0)
{
cc[i]+=aa[lenth1-1-i]+bb[lenth2-1-i];
}
else
{
cc[i]+=bb[lenth2-1-i];
}
}
}
for(j=0;j<i;j++)
{
if(cc[j]>=10)
{
cc[j+1]+=cc[j]/10;
cc[j]=cc[j]%10;
}

// printf("%d ",cc[j]);


// printf("\n");
if(cc[j]>0)
{
i++; 
}
for(j=0;j<i;j++)
{
aa[j]=cc[i-j-1]+'0';
}
aa[j]='\0';
puts(aa);
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: