c++出现未经处理的异常如何解决

程序运行时出现未经处理的异常应该如何处理,出现问题的函数是用来求最大公约数的

img


希望有人能修改

img

把求公约数的函数gys()里的for循环的条件修改下,改为:for(int i=b;i>=1;i--),即判断从两个数中小的那个数到1之间哪个是两数的最大公约数即可 ,修改如下:

参考链接:


#include <iostream>

using namespace std;

int max(int a,int b,int c){
    
    int d = a>b?a:b;
    d = d>c?d:c;
    return d; 
} 

int min(int a,int b,int c){
    
    int x = a<b?a:b;
    x = x<c?x:c;
    return x; 
} 


int gys(int q,int b){
    
    int i,x=1;
    for(int i=b;i>=1;i--){
        if(q%i==0&&b%i==0){
            x=i;
        //    cout<<"int for:x="<<x<<endl;
            break;
        }
    }    
    
//    cout<<"int gys:x="<<x<<endl;
    return  x;
}

int main(void){
    
    int a,b,c,m,n,gyshu;
    
    cin>>a>>b>>c;
    m=max(a,b,c);
    n=min(a,b,c);
    gyshu=gys(m,n);
    cout<<"公约数为:"<<gyshu<<endl;
    cout<<(n/gyshu)<<'/'<<(m/gyshu);
    
    
    return 0;
    
}

img

除以0 的错误,做除法时,分母不能为0。请检查下,做除法的地方的代码,把逻辑再理一遍,保证被除数不能为0。望采纳

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^