#include <iostream> #include <iomanip> using namespace std; int main(){ double m,n; cin >> m >> n; try { if( n == 0) throw 0; //除数为0,抛出int类型异常 else if(int(m/n)*n!=m) throw 1.0*m/n; //不能整数,抛出double异常 else //完善捕获其他错误 if(int(m/n)*n==m) throw(m/n); } //完善cathch语句,合理使用异常参数 catch (int) { cout<<"catch(int):0"<<endl; cout<<"can not divided by zero!"<<endl; } catch (...) { if(int(m/n)*n!=m) { cout<<"catch(double):"<<fixed<<setprecision(2)<<(1.0*m/n)<<endl; cout<<"int(m/n)*n!=m."<<endl; } else if(int(m/n)*n==m) { cout<<"catch(other):"<<m/n<<endl; cout<<"you got it!"<<endl; } } return 0; }
时间: 2024-04-01 07:32:16 浏览: 8
这段代码是一个对除数为0和整数除法的判断的程序。用户输入两个数m和n,程序会判断n是否为0,如果是则抛出一个int类型的异常,提示用户不能除以0。如果n不为0,则判断m/n是否为整数,如果不是,则抛出一个double类型的异常,提示用户m不能被n整除。如果m/n为整数,则程序抛出一个未知类型的异常,提示用户计算正确。
catch语句中使用了参数,可以根据不同类型的异常抛出不同的信息。如果抛出了int类型的异常,则输出抛出异常的类型和信息;如果抛出double类型的异常,则输出抛出异常的类型和信息;如果抛出了其他类型的异常,则输出计算结果和提示信息。
相关问题
#include<iostream> #include<iomanip> #include<ctime> #include<math.h> #define pi 3.1415926 using namespace std; int main() {float r, s; cin >> r; s = (4 / 3) * pi * r * r * r; cout<<fixed<<setprecision(3)<<s; },帮我看看这段代码
这段代码的功能是计算球的体积。代码的逻辑基本正确,不过有两个问题需要注意:
1. `s` 变量的类型应该为 `float` 或者 `double` 类型,而不是 `int` 类型。因为球的体积一般是一个小数,用 `int` 类型会导致精度损失。
2. 在计算公式中,分数 `4 / 3` 应该是一个小数,但是由于 `4` 和 `3` 都是整数,所以计算结果也会是整数,即 `4 / 3 = 1`。正确的写法应该是 `4.0 / 3.0` 或者 `4 / 3.0` 或者 `4.0 / 3`,这样可以保证计算结果为小数。
修改后的代码如下:
```c++
#include<iostream>
#include<iomanip>
#include<ctime>
#include<math.h>
#define pi 3.1415926
using namespace std;
int main() {
float r, s;
cin >> r;
s = (4.0 / 3.0) * pi * r * r * r;
cout << fixed << setprecision(3) << s;
}
```
这样就可以正确计算球的体积,并保留三位小数输出了。
#include <iostream> #include<iomanip> using namespace std; int main() { double t; int n; cin >> t >> n; cout << setprecision(3) << (t / n); cout << " " << 2 * n; return 0; }该代码输入测试数据500.0 3,想使输出的t/n保留三位小数
这段代码可以通过将输出流设置为保留三位小数来实现。你可以使用`setprecision`函数来设置输出流的精度。下面是修改后的代码:
```cpp
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double t;
int n;
cin >> t >> n;
cout << fixed << setprecision(3) << (t / n);
cout << " " << 2 * n;
return 0;
}
```
现在,输入测试数据500.0 3会输出166.667 6。