2017-04-15 35 views
-1

我在做一個賦值,我修改了一個計算數字階乘的程序,以便程序在用戶輸入數字「0」時終止。下面是代碼:雖然循環錯誤:「未初始化的本地變量使用」

#include <iomanip> 
#include <iostream> 
using namespace std; 

int main() 
{ 
    unsigned int numb; 
    unsigned long fact = 1; 

    while (numb > 0) 
    { 


     cout << "Enter a number: "; 
     cin >> numb; 

     for (int j = numb; j > 0; j--) 
     { 
      fact *= j; 
      cout << "Factorial is " << fact << endl; 

     } 
    } 

    return 0; 
} 

不過,我不斷收到收到此錯誤信息:

錯誤C4700:未初始化的局部變量「麻木」使用

我在做什麼錯?

+3

你沒有初始化麻木。這個錯誤很明顯。 – harold

+0

這甚至不是真正的錯誤。你使用什麼編譯器? –

回答

1
unsigned int numb; 
unsigned long fact = 1; 

while (numb > 0) 

當你第一次打這個表達式時,numb的值是多少?編譯器也不知道。

0

我把一個

cout << "Enter a number: ";

cin >> numb;

while循環前初始化後方可進入麻木。然後將現有的cout,cin語句移到循環結尾。

0

如果你想使階乘所以必須做出這樣的(在你的變量): 1.給數 2.循環降低計數器(--j) 3.乘以在循環計數器。 4.循環後,顯示結果(事實)。

#include <iostream> 
using namespace std; 

int main() 
{ 
    unsigned int numb; 
    unsigned long fact = 1; 
    cout << "Enter a number: "; 
    cin >> numb; 
    for (int j = numb; j > 0; --j) 
    { 
     fact *= j; 
    } 
    cout << "Factorial is " << fact << endl; 
    return 0; 
}