练习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;
}