-
實現水仙花的數量(C++)。
是 C 語言中的數學庫函式。
#include
#include
using namespace std;
int main()
for(int i=1;i<=9;++i)
for (int j=0;j<=9;++j)
for (int k=0;k<=9;++k){
if (abs((i*100+j*10+k-pow(i*,3)-pow(j*,3)-pow(k*,3)))1e-6) continue;
cout不能開水仙花的原因是為了判斷這句話:
if (i*100+j*10+k-pow(i,3)-pow(j,3)-pow(k,3)) continue;
有兩個錯誤:
第乙個 pow(double,double),pow(float,float),你提供 pow(int,int,int),系統不知道匹配哪乙個???
第二個 pow 返回乙個 double,你使用 if(double)??這個判斷對於if(double==0)是不正確的,假設if(,因為5可能用於double。 由於精度的原因,它應該是 if(abs(double)
-
pow 函式無法接受 int 值,更改如下所示:
#include
#include
using namespace std;
void main()
for(float i=1;i<=9;++i)for (float j=0;j<=9;++j)for (float k=0;k<=9;++k)if (i*100+j*10+k-pow(i,3)-pow(j,3)-pow(k,3))
continue;
cout<浮,雙倍,長雙倍都可以。
-
#include
如果是 C++ 風格,則為:
#include
對“問題”的補充:
因為 c 中的 pow() 函式返回乙個 double,因為計算機說浮點數會有錯誤,所以在比較 int 和 float 或 double 時無法得到正確的結果,所以你可以稍微修改一下你的程式
if(i*100+j*10+k-(int)(pow(i,3)+pow(j,3)+pow(k,3)) continue;
-
1 所有 pow 都包含在 或 cmath 標準標頭檔案中,用法為 pow(a,b),表示 a 的 b 冪。
-
CMATH 只有 pow 功能。
這些是超載的。 您需要將第乙個引數轉換為所需的型別。 不同的編譯器有不同的要求,可能是你們的編譯器要求比較嚴格,我用的是程式碼塊,如果我像你一樣使用,我不會報錯。
-
強制指定型別。 例如:
double d = pow((double)1, (double)3);
如果它是乙個變數,是的。
pow((double)a, (double)b);
-
型別 2 是乙個整數,屬於浮點數,函式宣告中的第乙個引數是浮點數,第二個引數是整數,int 到 float 和 double 可以隱式轉換,編譯器允許這種轉換,但 float 和 double 不能隱式轉換為 int,這可能會導致資料丟失, 編譯器不允許它,除非你強制轉換。
-
在 VC++ 中,原型是雙 pow(雙 x、雙 y);
標頭檔案:cmath
函式:計算 x 的 y 次冪。
返回值:x不能為負數且y為小數,或x不能為負數且y小於等於0,返回冪指數的結果。
返回型別:double, int, float 會發出警告!
示例:包括
#include
int main(void)
C++ 提供了以下過載形式的 PoW 函式:
double pow(double x,int y);
float pow(float x,float y);
float pow(float x,int y);
long double pow(long double x,long double y);
long double pow(long double x,int y);
使用引數時,應合理設定引數型別,避免出現多個 pow 例項與引數列表匹配的情況。
-
最好將 m = pow(2, i) 更改為 m = pow(, i),因為三個 pow 函式都沒有 int 第乙個引數。
-
由於 C++ 過載,呼叫不明確。
您可以改用 cmath。
或者,您可以使用強制轉換來顯式呼叫。
例如,更改為。 m = (int)pow((long double)2,i);
或 m = (int)pow((double)2,i);
或者 m = (int)pow((float)2,i);
以澄清您的電話。
-
您需要將 include 新增到程式的第一行
在 VS2008 中,選擇“在 Vis C++ 中建立專案”,然後選擇“控制台應用程式”,然後開始編寫。 寫完**後,按 f5 就可以執行了。
順便說一句,除了在前面加include之外,你發布的程式還有乙個不是很嚴重的問題,那就是最好在main()前面加int,也就是讓main函式返回int值,否則dev-c++(其實一般是mingw,dev-c++只是乙個shell)會發出警告, 但它可以正常編譯。
最後,其實win7也可以和vc6一起安裝,可以正常使用。
-
您需要設定它:工具 - 編譯器選項 - 構建優化 - 構建 - 語言標準 (-std),選擇 ISO C++11。
-
g++ 編譯器會自動執行內聯函式嗎?
G++編譯器非常先進,如果在編譯時開啟優化,G++會進行各種優化,比如:內聯合適的函式(即使沒有新增inline關鍵字),直接評估一些函式,除了G++編譯器還可以重新排序**等等。 編譯器比你更了解硬體,所以只要允許優化,他就會嘗試去做。
您正在使用的開發 C++ IDE 使用的 C++ 編譯器是 G++。
什麼樣的函式即使標記為內聯也無法內聯?
例如,如果函式體太大太複雜(比如包含多個迴圈,包括遞迴呼叫),不值得內聯成本,那麼編譯器會忽略 inline 關鍵字,而 vc++ 編譯器提供關鍵字強制內聯函式,除非你很了解硬體,否則最好讓編譯器來做。 編譯不會內聯這些函式取決於特定的編譯器實現。
內聯關鍵詞的作用是什麼?
inline 關鍵字可以提示編譯器內聯函式並強制函式使用內部鏈結。 例如,如果在標頭檔案中定義函式,則可以新增 inline 關鍵字以防止多個定義錯誤,以防止多個定義。
如果您對硬體了解不多,底層優化仍然留給編譯器。
請看下面的幾個編譯器優化函式示例:
1.編譯器直接評估函式:
本段中的 use 函式呼叫 sum 函式,傳遞 3 和 5,並將返回值分配給外部變數 val。
我們來看一下編譯後 use 函式生成的彙編**(64 位彙編)
可以看出,整個使用函式只包含三條指令,並且直接優化了語句 val = sum( 3, 5 ) 將 8 賦值給 val 變數,不僅沒有函式呼叫,甚至省略了加法計算。
2.編譯器內聯函式:
編譯後的 use 函式的主體:
可以看到 printf 函式的呼叫(call z6printfpkcz)直接嵌入到使用函式體中,沒有其他跳轉指令。
3.**重新安排:
編譯 do something 函式:
第三條指令將 b 的值載入到 EAX 暫存器中。
第四項指令在B中存放了34。
第五條指令將 EAX 的值加 1(EAX 儲存前一條 B 的值)。
第六條指令將 EAX 的值儲存到 A 中。
可以看出,編譯器對函式的兩個語句的位置進行了更改,這種優化主要是為了優化**的執行速度,而某些CPU記憶體讀寫操作的開銷不同,因此對某些**進行重新排序可以提高程式的執行速度。
與 一樣,它都是評論,但只有一行評論。
起始行號、結束行號 * - 這樣可以注釋幾行,中間有虛線,兩邊匹配。 >>>More
執行 sudo apt-get install libstdc++5 時,可能會出現“找不到軟信譽包 libstdc++5”,在 Internet 上搜尋 ** 此檔案,得到乙個 compat-libstdc++-33 安裝包。 >>>More