kong aaa 2023-05-25 10:09 采纳率: 0%
浏览 42
已结题

关于#C++异常处理#的问题,如何解决?


#include<iostream>
using namespace std;

void division(int apples, int children){
    int per_child;
    int rest;
    //除零错误异常消息字符串 
    string divid0 = "";
    //小朋友数多于苹果数的异常消息整数
    int notenough = 1; 
    if(children == 0){
        throw divid0;
    }
    else if(apples < children){
        throw notenough;
    }
    per_child = apples / children;
    rest = apples % children;
    cout << "每个小朋友分:" << per_child << "个苹果。" << endl;
    cout << "还剩:" << rest <<"个苹果。" << endl; 
}
int main() {
    int apples, children;
    cin >> apples;
    cin >> children;
    //添加异常处理过程try块,让程序圆满执行不崩溃。
    //如果小朋友为0,则输出  小朋友一个没来,不能分苹果。并回车
    //如果小朋友数大于苹果数,则输出  不够分。并回车
    //如果正常够分,则在调用division函数后,输出  成功完成了一次分苹果活动。
    division(apples, children);
    
    
    
    return 0;
}

测试输入:
10
3

预期输出:
每个小朋友分:3个苹果。
还剩:1个苹果。
成功完成了一次分苹果活动。

测试输入:
10
0

预期输出:
小朋友一个没来,不能分苹果。

  • 写回答

1条回答 默认 最新

  • Huazie 优质创作者: 编程框架技术领域 2023-05-25 10:21
    关注

    参考如下:

     
    #include<iostream>
    using namespace std;
     
    void division(int apples, int children){
        int per_child;
        int rest;
        //除零错误异常消息字符串 
        string divid0 = "";
        //小朋友数多于苹果数的异常消息整数
        int notenough = 1; 
        if(children == 0){
            throw divid0;
        }
        else if(apples < children){
            throw notenough;
        }
        per_child = apples / children;
        rest = apples % children;
        cout << "每个小朋友分:" << per_child << "个苹果。" << endl;
        cout << "还剩:" << rest <<"个苹果。" << endl; 
    }
    int main() {
        int apples, children;
        cin >> apples;
        cin >> children;
        //添加异常处理过程try块,让程序圆满执行不崩溃。
        //如果小朋友为0,则输出  小朋友一个没来,不能分苹果。并回车
        //如果小朋友数大于苹果数,则输出  不够分。并回车
        //如果正常够分,则在调用division函数后,输出  成功完成了一次分苹果活动。
        try {
            division(apples, children);
        } catch (int e1) {
            cout << "不够分。" << endl;
        } catch (string e2) {
            cout << "小朋友一个没来,不能分苹果。" << endl;
        }
        
        return 0;
    }
    
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月25日
  • 创建了问题 5月25日