题目描述
小明很喜欢做a+b,他但经常忘记进位,所以他算88+12=90,而不是100。 现在你给了小明一些a+b的算式,请问他算出来会是什么?
输入
第一行是一个整数K,表示样例的个数。 每个样例占一行,为两个整数a,b,0≤a,b≤1e9。
输出
每行输出一个样例的结果,不要输出前导0。
代码如下:
#include<stdio.h>
#include<string.h>
int main() {
int k;
scanf_s("%d", &k);
while(k--)
{
char a[11], b[11];
int c[11];
memset(a, '0', sizeof(a));
memset(b, '0', sizeof(b));
memset(c, 0, sizeof(c));
scanf_s("%s", a,sizeof(a));
scanf_s("%s", b, sizeof(b));
int len1 = strlen(a);
int len2 = strlen(b);
int max, i, k = 0, m, j;
if (len1 >= len2)max = len1;
else max = len2;
if (len1 < len2) {
m = len2 - len1;
for(j=0;j<m;j++){
for (i = len1 + j; i > 0; i--)a[i] = a[i - 1];
a[0] = '0';
}
}
else if(len1 > len2) {
m = len1 - len2;
for(j=0;j<m;j++) {
for (i = len2 + j; i > 0; i--)b[i] = b[i - 1];
b[0] = '0';
}
}
for (i = 0; i < max; i++) {
c[i] = (a[i]-'0'+b[i]-'0') % 10;
}
i = 0;
while (c[i] == 0)i++;
for (i; i < max; i++) {
printf("%d", c[i]);
k = 1;
}
if (k == 0)printf("0");
printf("\n");
}
}