注意:因为可能是个非常大的数,所以不能用一个long之类的数字相加这种方法。所以需要数组输出

#include <stdio.h>

int main()
{
    char str1[10000] = {0};
    char str2[10000] = {0};
    scanf("%s", str1);
    scanf("%s", str2);
    int len1 = strlen(str1);
    int len2 = strlen(str2);
    int len = (len1 > len2)?(len1):(len2);
    int array1[len];
    int array2[len];
    int array[len+1];    //保存的数可能比最大的要多一位
    memset(array1, 0, len*sizeof(int));
    memset(array2, 0, len*sizeof(int));
    memset(array, 0, (len+1)*sizeof(int));
    int index = 0;
    for(int i = len1-1; i >= 0 && index < len1; i--)
    {
        if(str1[i] >= '0' && str1[i] <= '9')
        {
            array1[index++] = str1[i]-'0';
        }
    }
    index = 0;
    for(int i = len2-1; i >= 0 && index < len2; i--)
    {
        if(str2[i] >= '0' && str2[i] <= '9')
        {
            array2[index++] = str2[i]-'0';
        }
    }
#if 0
    for(int i = 0; i < len; i++)
    {
        printf("%d", array1[i]);
    }
    printf("\n");
    for(int i = 0; i < len; i++)
    {
        printf("%d", array2[i]);
    }
    printf("\n");
#endif
    int flag = 0;
    int num = 0;
    int count = 0;
    for(int i = 0; i < len+1; i++)
    {
        if(i < len)    //遍历1、2数组中的数据
        {
            num = array1[i] + array2[i] + flag;
        }
        else    //最后检查flag是否为0,不是需要进1.
        {
            num = flag;
        }
        
        if(flag != 0)
        {
            flag = 0;    //第二次判断前,需要情况flag位
        }
        if(num >= 10)
        {
            flag = 1;    //两个个位数相加,不会超过20
            
            if(num == 10)
            {
                num = 0;
            }
            else
            {
                num = num % 10;    //取个位数字
            }
        }
        array[i] += num;
        count++;
        num = 0;    //每次添加完都有清空
    }
    for(int i = count-1; i >= 0; i--)
    {
        /* 因为需要判断是否有进1位的数,但是0又不能打印 */
        if(i == count-1 && array[i] == 0)
        {
            //!=号无反应,只能用这个方法显示不打印
        }
        else
        {
            printf("%d", array[i]);
        }
    }
    printf("\n");
    return 0;
}