第一次没有依赖Java的BigInteger,自己用C语言手写模拟,代码如下。注意,最后一行不要打印两个空格。欢迎各路大神提出意见。
#include <stdio.h>
#include <string.h>
char a[1005], b[1005];
int ans[1005];
int max(int m, int n) {
if(m > n)
return m;
return n;
}
void add(char a[], char b[]) {
memset(ans, 0, sizeof(ans));
int l1 = strlen(a), l2 = strlen(b);
int l = l1 + 1, k = l - 1;
for(int i = 1; i <= l1 - l2; i ++) {
ans[i] = a[i - 1] - '0';
}
for(int i = l1 - 1; i >= l1 - l2; i --) {
ans[k] += a[i] - '0' + b[i - (l1 - l2)] - '0';
int len = k;
while(ans[len] >= 10) {
ans[len] -= 10;
ans[len - 1] ++;
len --;
}
k --;
}
}
int main() {
int n, k, t = 1;
scanf("%d", &n);
k = n;
while(n --) {
scanf("%s%s", a, b);
int l1 = strlen(a), l2 = strlen(b);
if(l1 < l2)
add(b, a);
else
add(a, b);
printf("Case %d:\n", t);
printf("%s + %s = ", a, b);
int m = 0;
if(ans[0] == 0)
m = 1;
for(int i = m; i <= max(l1, l2); i ++) {
printf("%d", ans[i]);
}
if(t != k)
printf("\n\n");
else
printf("\n");
t ++;
}
return 0;
}