Description
对于输入的两个不超过1000位数字的非负整数,给出两数之和。
Input
在两行中分别给出两个不超过1000位数字的非负整数。
Output
输出两数之和
Sample Input 1
123
12
Sample Output 1
135
#include <stdio.h>
#include<math.h>
#include<string.h>
int main()
{
char a[2000], b[2000],c[2000];
scanf("%s", a);
getchar();//吸收\n
scanf("%s", b);
int lena = strlen(a);
int lenb = strlen(b);
int len;//字符串c的长度
if (lena > lenb)
len = lena;
else len = lenb;
int t = len;
for (int i = 0; i < len; i++)//初始化c字符串
c[i] = '0';
while (len > 0)//字符串加法从len-1开始到0结束
{
len--; lena--; lenb--;
if (lena >= 0)//把a字符串加到c里面
c[len] += a[lena]-'0';//注意是加数字而不是字符
if (lenb >= 0)//同理b+c
c[len] += b[lenb]-'0';
if (c[len] > '9')//如果字符大于9就减去10
{
c[len] -= 10;
if (len)//分情况,如果len>0,往前面一位len=0,不能往前一位加一,直接输出第一位数字
c[len - 1] += 1;
else printf("1");
}
}
for (int i = 0; i < t; i++)
printf("%c", c[i]);
return 0;
}