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

当前编程题:实验三 大数、枚举问题(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;
}
展开阅读全文

没有更多推荐了,返回首页