藍橋杯 演算法訓練 sign函式
問題描述
給定實數x,輸出sign(x)的值。
sign(x)是符號函式,如果x>0,則返回1;如果x=0,則返回0;如果x<0,則返回-1。
輸入格式
一行一個實數x。
輸出格式
一行一個整數表示答案。
樣例輸入
-0.0001
樣例輸出
-1
資料規模和約定
|x|<=10000,輸入資料精度最多達到4位小數。
提示
判斷實數x是否等於零時,由於計算機實數運算誤差,應當引入極小量eps,核心程式碼如下:
其中fabs為cmath中的絕對值函式。
const double eps=1e-6;
if (fabs(x) <= eps) {
//x是零
}
#include <iostream>
using namespace std;
int sign(double x) {
if (x > 0)
return 1;
else if (x == 0)
return 0;
else
return -1;
}
int main() {
double a;
cin >> a;
cout << sign(a);
cin >> a;
return 0;
}