您的位置:首页 > 编程语言 > C语言/C++

大数相加 C/C++

2016-05-17 19:44 375 查看
</pre><pre name="code" class="cpp">#include<cstdio>
#include<cstring>
#include<algorithm>
char num1[1002];
char num2[1002];
char res[1002];//结果的逆序
void add(char *num1,char*num2)
{
memset(res,0,sizeof(res));
int n1=strlen(num1);
int n2=strlen(num2);
int i=n1-1,j=n2-1;
int flag=0;
int num=0;
while(i>=0&&j>=0)
{
if(num1[i]+num2[j]+flag-'0'>'9')
{
res[num]=num1[i]+num2[j]+flag-'0'-10;
flag=1;
}
else
{
res[num]=num1[i]+num2[j]+flag-'0';
flag=0;
}
i--;
j--;
num++;
}
if(i>=0)
{
while(i>=0)
{
if(num1[i]+flag>'9')
{
res[num]=num1[i]+flag-10;
flag=1;
}
else
{
res[num]=num1[i]+flag;
flag=0;
}
i--;
num++;
}
}
else if(j>=0)
{
while(j>=0)
{
if(num2[j]+flag>'9')
{
res[num]=num2[j]+flag-10;
flag=1;
}
else
{
res[num]=num2[j]+flag;
flag=0;
}
j--;
num++;
}
}
if(flag)
{
res[num++]='1';
}
res[num++]='\0';
return ;
}
int main()
{
int T;
scanf("%d",&T);
for(int i=1;i<=T;i++)
{
//memset(num1,0,sizeof(num1));
//memset(num2,0,sizeof(num2));
scanf("%s",&num1);
scanf("%s",&num2);
add(num1,num2);
printf("Case %d:\n",i);
printf("%s + %s = ",num1,num2);
int n=strlen(res);
for(int j=n-1;j>=0;j--)
{
printf("%c",res[j]);
}
printf("\n");
if(i!=T)
{
printf("\n");
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: