程式碼如下:
#include
#include
using namespace std;
int main(void)
{
double n;
while(cin>>n)
{
cout << "|" << n << "|=" << abs(n) << endl;
}
}
我用dev c++編譯能過,自己run程式測也沒問題,但送出解答卻CE (編譯錯誤) ...
有人知道我程式哪裡錯了嗎?
感謝~
程式碼修改後如下:
#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;
int main(void)
{
double n;
while(cin>>n)
{
cout << fixed << setprecision << "|" << n << "|=" << abs(n) << endl;
}
}
但還是CE...
程式碼如下:
#include
#include
using namespace std;
int main(void)
{
double n;
while(cin>>n)
{
cout << "|" << n << "|=" << abs(n) << endl;
}
}
我用dev c++編譯能過,自己run程式測也沒問題,但送出解答卻CE (編譯錯誤) ...
有人知道我程式哪裡錯了嗎?
感謝~
程式碼修改後如下:
#include
#include
#include
using namespace std;
int main(void)
{
double n;
while(cin>>n)
{
cout << fixed << setprecision << "|" << n << "|=" << abs(n) << endl;
}
}
但還是CE...
試試看cmath,不然就有編錯。
這邊簡單解釋一下~
<math.h>是對應到C的標頭檔(不過C++也能使用),
但C語言是不支援函式多載的,
這意味在C語言底下對於不同型態的函式的名稱是不同的,
在標準的<math.h>中對應到double型態的函式為 fabs() ,
故將上面程式碼中的 abs() 改為 fabs() 即可。
另一種選擇則是使用<cmath>的標頭檔,
<cmath>則是應到C++的標頭檔(C就無法使用),
C++是支援函式多載的,
這意味在C++底下對於不同型態的函式的名稱是可以相同的,
故在<cmath>中使用 abs() 就行了,
所以也可以將標頭檔換成 <cmath> 即可。
至於在DevC++中能編譯的原因嘛....
我猜是DevC++在編譯時自動幫忙強制轉型態了... ?
另外提醒一下, setprecision 要記得給參數 setprecision(4) 這樣~~~ OwO