输入:
输入两个整数
输出:
输出两个数的和
样例输入:
87654321
12345678912345678
样例输出:
12345678999999999
代码如下:
#include<stdio.h>
#include<string.h>
void invert(char *x,int *y)
{
int len=strlen(x);
for(int i=len-1,j=0;i>=0;i--,j++)
{
y[j]=x[i]-'0';
}
}
char str1[200],str2[200],str[200];
int a[200],b[200],c[200];
int main()
{
scanf("%s%s",str1,str2);
invert(str1,a);
invert(str2,b);
int len=strlen(str1)>strlen(str2)?strlen(str1):strlen(str2);
for(int i=0;i<len;i++)
{
c[i]+=a[i]+b[i];
c[i+1]=c[i]/10;
c[i]%=10;
}
if(c[len]!=0) len++;
for(int i=len-1,k=0;i>=0;i--,k++)
str[k]=c[i]+'0';
printf("%s",str);
return 0;
}
简化版:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char s1[210],s2[210];
int a[210],b[210],c[210];
int main()
{
scanf("%s%s",s1,s2);
int len1=strlen(s1);
int len2=strlen(s2);
for(int i=1;i<=len1;i++)a[i]=s1[len1-i]-'0';
for(int j=1;j<=len2;j++)b[j]=s2[len2-j]-'0';
int max=len1>len2?len1:len2;
for(int i=1;i<=max;i++)
{
c[i]+=a[i]+b[i];
c[i+1]=c[i]/10;
c[i]%=10;
}
if(c[max+1]!=0)max++;
for(int i=max;i>=1;i--)
printf("%d",c[i]);
return 0;
}