\\这个是不用函数的通过了
#include<stdio.h>
#include<string.h>
int main(){
char a[505],b[505];
int a1[505], b1[505], c[505] = {0};
scanf("%s\n%s",a,b);
int la = strlen(a), lb = strlen(b);
int lc = la>lb?la:lb;
for (int i = 0; i < la; i++) {
a1[la - i - 1] = a[i] - '0';
}
for (int i = 0; i < lb; i++) {
b1[lb - i - 1] = b[i] - '0';
}
for (int i = 0; i < lc; i++) {
c[i] += a1[i] + b1[i];
c[i + 1] += c[i] / 10;
c[i] %= 10;
}
while (c[lc] == 0 && lc > 0)
lc--;
for (int i = lc; i >= 0; i--) {
printf("%d",c[i]);
}
return 0;
}
\用了函数以后两个长度不同的字符串相加会出错```c #include<stdio.h> #include<string.h>
int High_precision_addition(char a[], char b[]) { int la = strlen(a), lb = strlen(b); int a1[505], b1[505], c[505] = {0}; int lc = la>lb?la:lb; for (int i = 0; i < la; i++) { a1[la - i - 1] = a[i] - '0'; } for (int i = 0; i < lb; i++) { b1[lb - i - 1] = b[i] - '0'; }
for (int i = 0;i < lc; i++) {
c[i] += a1[i] + b1[i];
c[i + 1] += c[i] / 10;
c[i] %= 10;
}
while (c[lc] == 0 && lc > 0)
lc--;
for (int i = lc; i >= 0; i--) {
printf("%d",c[i]);
}
return 0;
} int main(){ char a[505],b[505]; scanf("%s\n%s",a,b); High_precision_addition(a,b); return 0; }