蓝桥杯一道高精度加法的题

下面两种做法有什么区别吗?

(上面的错的,下面的对的
下面的有限制范围,上面的没有,可是我觉得都一样的呀)

是加法那一段的区别,不是include的问题(有些没打出来)

1.#include
###include

int main() {
char a[100], b[100];
int c[101], d, e,m, i, f = 0;
/*for (i = 0; i < 101; i++) {
c[i] = 0;
}*/
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(c, 0, sizeof(c));
scanf("%s%s", a,b);

d = strlen(a);
e = strlen(b);
for (i = 0; i < d; i++) 
{
    c[i] += a[d - i - 1] - '0';
}
for (i = 0; i < e; i++) 
{
    c[i] += b[e - i - 1] - '0';
    if (c[i] >= 10)
    { 
        c[i + 1]=c[i]/10; 
        c[i] %= 10;

    }
}
for (i = 0; i < d+1||i<e+1; i++)
    if (c[i] != 0)
        f = i;
for (i = f; i >= 0; i--)
    printf("%d", c[i]);
return 0;

}

2.#include
###include
int main()
{
char a[100], b[100], c[101];

memset(c, 0, sizeof(c));//清零
scanf("%s%s", a,b);
int lena = strlen(a);
int lenb = strlen(b);
int i;
for (i = 0; i < lena || i < lenb; i++)
{
    if (i < lena)
        c[i] += a[lena - i - 1] - '0';
    if (i < lenb)
        c[i] += b[lenb - i - 1] - '0';
    if (c[i] >= 10)
    {
        c[i + 1] = c[i] / 10;
        c[i] %= 10;
    }
}
if (lena < lenb)
    lena = lenb;
if (c[lena] > 0) printf("%d", c[lena]);//最后一次循环
for (i = lena - 1; i >= 0; i--)
    printf("%d", c[i]);
return 0;

}

https://blog.csdn.net/Z_122113/article/details/103971204