NicoleLin__07 2018-12-02 03:08 采纳率: 100%
浏览 413
已采纳

大数减法 麻烦帮忙找一下BUG?

大数减法,问题有可能处在后面,麻烦帮忙找一下bug!谢谢!

#include
#include
#include
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char argv[]) {
char a[50],b[50];
int la,lb,lc,m[50]={0},n[50]={0},i,x,g;
scanf("%s%s",a,b);
la=strlen(a);
lb=strlen(b);
int j=0,q=0;
for(int i=la-1;i>=0;i--){
m[j]=a[i]-'0';
j++;
}
for(int i=lb-1;i>=0;i--){
n[q]=b[i]-'0';
q++;
}
/*for(int i=0;i<la;i++){
printf("%d",m[i]);
}
printf("\n");
for(int i=0;i<lb;i++){
printf("%d",n[i]);
}
/

if(la>lb){
    g=1;
    lc=la; 
}
if(la<lb){
    g=-1;
    lc=lb;
}
if(la=lb){
    lc=la;
    if(strcmp(a,b)>=0){
        g=1;
    }else{
        g=-1;
    }

}
if(g==1){
    for(int i=0;i<lc;i++){
    if((m[i]-n[i])<0){
        m[i]=m[i]+10-n[i];
        m[i+1]--;
    }else{
        m[i]=m[i]-n[i];
    }
}
} 
if(g==-1){
    for(int i=0;i<lc;i++){
    if((n[i]-m[i])<0){
        m[i]=n[i]+10-m[i];
        n[i+1]--;

    }else{
        m[i]=n[i]-m[i];
    }
}

}

for(i=49;i>=0;i--){
    if(m[i]!=0) 
    break;
}
for( ;i>=0;i--){
    printf("%d",m[i]);
}

return 0;

}

  • 写回答

1条回答 默认 最新

  • NicoleLin__07 2018-12-02 06:30
    关注

    找到了,发现等于号写成赋值等号了。以下应为正确代码,以作参考。
    #include
    #include
    #include
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */

    int main(int argc, char argv[]) {
    char a[50],b[50];
    int la,lb,lc,m[50]={0},n[50]={0},i,x,g;
    scanf("%s%s",a,b);
    la=strlen(a);
    lb=strlen(b);
    int j=0,q=0;
    for(int i=la-1;i>=0;i--){
    m[j]=a[i]-'0';
    j++;
    }
    for(int i=lb-1;i>=0;i--){
    n[q]=b[i]-'0';
    q++;
    }
    /*for(int i=0;i<la;i++){
    printf("%d",m[i]);
    }
    printf("\n");
    for(int i=0;i<lb;i++){
    printf("%d",n[i]);
    }
    /

    if(la>lb){
        g=1;
        lc=la; 
    }
    if(la<lb){
        g=-1;
        lc=lb;
    }
    if(la==lb){
        lc=la;
        if(strcmp(a,b)>=0){
            g=1;
        }else{
            g=-1;
        }
    
    }
    if(g==1){
        for(int i=0;i<lc;i++){
        if((m[i]-n[i])<0){
            m[i]=m[i]+10-n[i];
            m[i+1]--;
        }else{
            m[i]=m[i]-n[i];
        }
    }
    } 
    if(g==-1){
        for(int i=0;i<lc;i++){
        if((n[i]-m[i])<0){
            m[i]=n[i]+10-m[i];
            n[i+1]--;
    
        }else{
            m[i]=n[i]-m[i];
        }
    }
    
    }
    
    for(i=49;i>=0;i--){
        if(m[i]!=0) 
        break;
    }
    for( ;i>=0;i--){
        printf("%d",m[i]);
    }
    
    return 0;
    

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端