C++Primer第五版 5.6.3节练习

来源:互联网 发布:淘宝点赞拆红包怎么玩 编辑:程序博客网 时间:2024/06/17 04:45

练习5.23:编写一段程序,从标准输入读取两个整数,输出第一个整数除以第二个整数的结果。

练习 5.24:修改你的程序,使得当第二个数是0时抛出异常。先不要设定catch子句,运行程序并真的为除数输入0,看看会发生什么?

练习5.25:修改上一题的程序,使用try语块去捕获异常。Catch子句应该为用户输出一条提示信息,询问其是否输入新数并重新执行try语块的内容。

答:练习5.23见云盘程序

练习5.24:抛出异常,程序终止

练习5.25见云盘程序

练习5.23

/**练习5.23 *2015/6/8  *问题描述:练习5.23:编写一段程序,从标准输入读取两个整数,输出第一个整数除以第二个整数的结果。 *功能;两个数整除*作者:Nick Feng *邮箱:nickgreen23@163.com */#include <iostream>using namespace std;int main(){    int val1 = 0, val2 = 0;    while (cin >> val1 >> val2)    {        double val3 = 1.0*val1 / val2 ;        cout << "The result is: " << val3 << endl;    }    return 0;} 

练习5.24

/**练习5.24*日期:2015/6/8*问题描述:练习 5.24:修改你的程序,使得当第二个数是0时抛出异常。先不要设定catch子句,运行程序并真的为除数输入0,看看会发生什么?*功能;遇到第二个数字为0时抛出一个异常 *作者:Nick Feng *邮箱:nickgreen23@163.com */#include <iostream>#include <stdexcept>using namespace std;int main(){    int val1 = 0, val2 = 0;    while (cin >> val1 >> val2)    {        if (val2 == 0)        throw runtime_error("The val2 couldn't be zero!'"); //抛出异常         double val3 = 1.0 * val1 / val2;        cout << "The result is: " << val3 << endl;    }    return 0;}

练习5.25

/**练习5.24*日期:2015/6/8*问题描述:练习5.25:修改上一题的程序,使用try语块去捕获异常。Catch子句应该为用户输出一条提示信息,询问其是否输入新数并重新执行try语块的内容。*功能;使用try-catch语句, 抛出异常,捕获异常,catch部分仿照书上174页而写,注意需要添加头文件 <stdexcept> ,才能调用相应的函数 *作者:Nick Feng *邮箱:nickgreen23@163.com */#include <iostream>#include <stdexcept> using namespace std;int main(){    int val1 = 0, val2 = 0;    while (cin >> val1 >> val2)    {        try {            if (val2 == 0)                throw runtime_error("Exception : val2 must not be zero!");            double val3 = 1.0 * val1 / val2;            cout << "The result is: " << val3 << endl;        }catch(runtime_error err){            cout << err.what() << "\nTry Again? Enter y or n" << endl;            char c;            cin >> c;            if (!cin || c == 'n')                break;        }    }    return 0;}
0 0
原创粉丝点击