C++实现自定义异常类NegativeNumberException,表示对负数执行操作时出现的异常,如计算负数的平方根。该类有一个string类型的私有数据成员message,用来存放异常信息;一个无参(默认)构造函数和一个有参构造函数,用来设置异常信息;成员函数what,用来显示异常信息。在main函数中,让用户输入某个数,并调用squareRoot函数,计算该数的平方根。如果输入的是负数,squareRoot函数将抛出NegativeNumberException异常,否则返回该数的平方根。
时间: 2023-06-07 09:08:03 浏览: 99
好的,这是一个关于 C 语言的编程问题,我可以回答。请看下面的代码:
```
#include <stdio.h>
#include <math.h>
// 定义自定义异常类 NegativeNumberException
typedef struct {
char message[100];
} NegativeNumberException;
// 定义 squareRoot 函数
double squareRoot(double num) {
// 判断输入的数是否为负数
if (num < 0) {
// 如果是负数,抛出 NegativeNumberException 异常
NegativeNumberException exception;
sprintf(exception.message, "输入的数 (%.2f) 为负数,无法计算平方根!", num);
throw(exception);
} else {
// 如果不是负数,计算平方根并返回结果
return sqrt(num);
}
}
int main() {
double num;
printf("请输入一个数:");
scanf("%lf", &num);
try {
double result = squareRoot(num);
printf("该数的平方根为:%.2f\n", result);
} catch(NegativeNumberException exception) {
printf("%s\n", exception.message);
}
return 0;
}
```
这个程序中,我们首先定义了一个 `NegativeNumberException` 结构体类型,其中包含一个 `message` 字符数组成员,用来存放异常信息。
然后我们定义了一个 `squareRoot` 函数,接收一个数作为输入参数。如果输入的数是负数,则抛出 `NegativeNumberException` 异常;否则,计算该数的平方根并返回结果。
在 `main` 函数中,我们让用户输入一个数,并调用 `squareRoot` 函数。如果函数正常结束,计算并输出该数的平方根;如果函数抛出了 `NegativeNumberException` 异常,我们捕获该异常并提示异常信息。
请注意,本程序中涉及到了异常处理机制。在 C 语言中,异常处理并不是语言本身的一部分,而是通过特定的技术手段实现的。上述程序中使用的是类似 C++ 中的 STL 异常处理库,需要通过外部库文件进行支持。如果您要运行该程序,请先了解一下相关库文件的用法。
阅读全文