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 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败