NOI的大整数减法代码找不到错误

哪位帮我看一下错哪了,题目在http://noi.openjudge.cn/ch0106/11/

#include
#include
using namespace std;
int main(){
    char a[250],b[250];
    fgets(a,250,stdin);
    fgets(b,250,stdin);    //把数据储存在字符中 
    int A[250],B[250];
    int i,n=strlen(a)-1,m=strlen(b)-1;
    for(i=0;i-1-i]-'0';
    }
    for(i=0;i-1-i]-'0';    //把字符转换为数字 ,并反向 
    } 
    for(i=m;i//把空的位置用0填上,使两数位数一致
        B[i]=0;
        m=n;
    }
    int c[250],q,p=0;
    for(i=0;i//设C,储存A-B 
        q=A[i]-B[i]-p;
        if(q<0){
            p=1;
            q+=10;
        }
        else p=0;
        c[m-1-i]=q;
    }
    for(i=0;c[i]==0&&i//除去多余的前导0 
    }
    for(;i//输出答案 
    }
    return 0;
}

因为你没有处理两个数相等的情况,如果两个数相等,你的代码没有任何输出,需要在去除前导0的下面加一个判断,如下图所示:

img

完整代码如下:

#include<iostream>
#include<string.h>
using namespace std;
int main() {
    char a[250], b[250];
    fgets(a, 250, stdin);
    fgets(b, 250, stdin);    //把数据储存在字符中 
    int A[250], B[250];
    int i, n = strlen(a) - 1, m = strlen(b) - 1;
    for (i = 0; i < n; i++) {
        A[i] = a[n - 1 - i] - '0';
    }
    for (i = 0; i < m; i++) {
        B[i] = b[m - 1 - i] - '0';    //把字符转换为数字 ,并反向 
    }
    for (i = m; i < n; i++) {    //把空的位置用0填上,使两数位数一致
        B[i] = 0;
        m = n;
    }
    int c[250], q, p = 0;
    for (i = 0; i < m; i++) {      //设C,储存A-B 
        q = A[i] - B[i] - p;
        if (q < 0) {
            p = 1;
            q += 10;
        }
        else p = 0;
        c[m - 1 - i] = q;
    }
    for (i = 0; c[i] == 0 && i < m; i++) {    //除去多余的前导0 
    }
    //修改,添加这个判断
    if (i == m)
    {
        cout << "0";
        return 0;
    }
    for (; i < m; i++) {
        cout << c[i];    //输出答案 
    }
    return 0;
}


现在什么结果啊?测试了一下没什么问题啊

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632