在C語言中,通常不直接使用sqrt函數來處理異常,因為sqrt函數本身并不返回錯誤代碼。相反,它返回一個浮點數,表示輸入值的平方根。如果輸入值是負數,sqrt函數將返回一個特殊值(NaN,即非數字),這可以被視為一種異常情況。
要處理這種情況,你可以檢查sqrt函數的返回值,并在發現無效結果時采取適當的措施。以下是一個示例代碼,展示了如何處理這種情況:
#include <stdio.h>
#include <math.h>
#include <stdbool.h>
bool is_valid_input(double value) {
return value >= 0;
}
double safe_sqrt(double value) {
if (is_valid_input(value)) {
return sqrt(value);
} else {
// 處理無效輸入的情況,例如打印錯誤消息并返回一個特殊值
printf("Error: Invalid input value. Cannot compute square root.\n");
return NAN;
}
}
int main() {
double input_value;
printf("Enter a number: ");
scanf("%lf", &input_value);
double result = safe_sqrt(input_value);
if (isnan(result)) {
printf("The square root is not valid for the given input value.\n");
} else {
printf("The square root of %.2lf is %.2lf.\n", input_value, result);
}
return 0;
}
在這個示例中,我們定義了一個名為is_valid_input
的函數來檢查輸入值是否有效(即非負數)。然后,我們定義了一個名為safe_sqrt
的函數,它使用is_valid_input
函數來檢查輸入值,并在發現無效輸入時返回NaN。在main
函數中,我們調用safe_sqrt
函數并檢查其返回值,以確定是否成功計算了平方根。