题目描述:
实现一个加法器,使其能够输出a+b的值
输入描述:
输入包括两个数a和b,其中a和b的位数不超过1000位
输出描述:
可能有多组测试数据,对于每组数据,
输出a+b的值。
代码
#include<stdio.h>
#include<string.h>
void f(char *s)//翻转字符串
{
int len=strlen(s);
char temp;
for(int i=0,j=len-1;i<j;i++,j--)
{
temp=s[i];
s[i]=s[j];
s[j]=temp;
}
}
void add(char *a,char *b)
{
f(a);f(b);
int len1=strlen(a);
int len2=strlen(b);
a[len1]=b[len2]='0';
char c[1002];
memset(c,'\0',sizeof(c));
int len=len1>len2?len1:len2;
for(int i=0;i<len;i++)
{
c[i]+=a[i]+b[i]-'0';
if(c[i]>'9')
{
c[i]-=10;
c[i+1]+=1;
}
}
if(c[len]=='\1')//进位问题
c[len]+='0';
f(c);
printf("%s\n",c);
}
int main()
{
char a[1002],b[1002];
memset(a,'0',sizeof(a));
memset(b,'0',sizeof(b));
scanf("%s%s",&a,&b);
add(a,b);
return 0;
}