题目大意:
两个大数相加
解题思路:
无
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
void add(char *a, char *b, int *c, int n)
{
int i;
for(i=0; i<n; i++)
{
c[i] = a[i] - '0' + b[i] - '0' + c[i];
if(c[i] >= 10)
{
c[i] = c[i]%10;
c[i+1]++;
}
}
if(c[n]>0)
{
for(i=n; i>=0; i--)
printf("%d",c[i]);
}
else if(c[n] == 0)
{
for(i=n-1; i>=0; i--)
printf("%d",c[i]);
}
}
int main()
{
char a[1005], b[1005];
int c[1005];
int n, count=0, k, l, i;
char x;
scanf("%d",&n);
while(n--)
{
scanf("%s%s",a, b);
printf("Case %d:\n%s + %s = ",++count,a,b);
k = strlen(a);
l = strlen(b);
for(i=0; i<k/2; i++)
{
x=a[i];a[i]=a[k-1-i];a[k-1-i]=x;
}
for(i=0; i<l/2; i++)
{
x=b[i];b[i]=b[l-1-i];b[l-1-i]=x;
}
if(l>k)
{
for(i=0; i<=l; i++)
{
c[i] = 0;
}
for(i=k; i<=l; i++)
{
a[i]= '0';
}
add(a, b, c, l);
}
else
{
for(i=0; i<=k; i++)
{
c[i] = 0;
}
for(i=l; i<=k; i++)
{
b[i] = '0';
}
add(a, b, c, k);
}
if(!n)
printf("\n");
else if(n)
printf("\n\n");
}
return 0;
}
163

被折叠的 条评论
为什么被折叠?



