哪位能帮我查一下错误,pta团体天梯赛L1-025正整数A加B,为啥我的代码有个样例通过不了


#include<stdio.h>
#include<string.h>
#include<math.h>
int main() {
        char a[1020] = "\n";
        char b[1020] = "\n";
        char c[2020];
        int m, n, k = 0, z = 0,v=0;
        int i, counta = 0, countb = 0;
        gets(c);
        for (i = 0; i < strlen(c); i++) {
            if (c[i] != ' ') {
                a[v] = c[i];
                v++;
            }
            else break;
        }
        for (i = 0; i < strlen(c) - v + 1; i++) {
            b[i] = c[v + 1];
            v++;
        }
        for (i = 0; i < strlen(a); i++) {
            if (a[i] - '0' <= 9 && a[i] - '0' >= 0) {
                k += (a[i] - '0') * (pow(10, strlen(a) - 1 - i));
                counta++;
            }
        }
        if (counta == strlen(a))
            m = 1;
        else
            m = 0;
        for (i = 0; i < strlen(b); i++) {
            if (b[i] - '0' <= 9 && b[i] - '0' >= 0) {
                countb++;
                z += (b[i] - '0') * (pow(10, strlen(b) - 1 - i));
            }
        }
        if (countb == strlen(b))
            n = 1;
        else
            n = 0;
        if (m == 1 && n == 1) {

            printf("%s + %s = %d", a, b, k + z);
        }
        if (m == 1 && n == 0) printf("%s + ? = ?", a);
        if (m == 0 && n == 1) printf("? + %s = ?", b);
        if (m == 0 && n == 0) printf("? + ? = ?");
    
    return 0;
}

这题比较坑,测试点5、6限制A、B的范围在[1,1000],
测试点4 B可能含有空格。


#include<stdio.h>
#include<string.h>
#include<math.h>
int main() {
    char a[1020] = "\n";
    char b[1020] = "\n";
    char c[2020];
    int m, n, k = 0, z = 0, v = 0;
    int i, counta = 0, countb = 0;
    gets(c);
    for (i = 0; i < strlen(c); i++) {
        if (c[i] != ' ') {
            a[v] = c[i];
            v++;
        } else break;
    }
    int lenb = 0;
    for (i = v+1; i < strlen(c); i++) {
        b[lenb++] = c[i];
    }
    for (i = 0; i < strlen(a); i++) {
        if (a[i] - '0' <= 9 && a[i] - '0' >= 0) {
            k += (a[i] - '0') * (pow(10, strlen(a) - 1 - i));
            counta++;
        }
    }
    if (counta == strlen(a))
        m = 1;
    else
        m = 0;
    if(k > 1000 || k < 1) {
        m = 0;
    }
    int empty = 0;
    
    for (i = 0; i < strlen(b); i++) {
        if (b[i] >= '0' && b[i] <='9') {
            countb++;
            z =z*10+ (b[i] - '0');
        }else if(b[i]==' '){
            empty++;
        }
    }
    if (countb+empty == strlen(b))
        n = 1;
    else
        n = 0;
    if(z > 1000 || z < 1) {
        n = 0;
    }
    if (m == 1 && n == 1) {
        printf("%d + %d = %d", k, z, k + z);
    }
    if (m == 1 && n == 0) printf("%s + ? = ?", a);
    if (m == 0 && n == 1) printf("? + %s = ?", b);
    if (m == 0 && n == 0) printf("? + ? = ?");
    return 0;
}