2016-09-15 114 views
-2

我的目標這個程序是從用戶獲得輸入值「Y」,然後通過0乘以該數值,1,2,3,4,5,6,7 ,8,9,然後打印出10個結果。現在,當用戶輸入'y'的值時,程序只返回一個零列表。任何想法我做錯了什麼?While循環即遞增變量的點

#include <iostream> 

using namespace std; 

int main(){ 

    int x; 
    int y; 
    int z; 
    x = 0; 
    z = x * y; 
    cout << "enter y" << endl; 
    cin >> y; 
    while (x < 10) { 
     cout << z << endl; 
     x = x + 1; 
    } 

} 
+3

啓用更多編譯器警告並重新閱讀C++書籍的前幾章。 –

+0

你甚至沒有改變變量'z'在循環。你還期望什麼? –

回答

0

你的問題是,你實際上並不計算z內循環,所以它永遠是你的外循環計算的值。陳述和表達不能追溯。

但是,您遇到的問題比此更嚴重,因爲您在初始化之前使用了y,導致未定義的行爲

0

您需要更改Y輸入位置爲Z的計算,應該是循環

+2

這個答案是不好措辭不清。 –

0

聲明Z = X * Y裏面應該是你的while循環中爲它工作了。 現在正在發生的事情是,每次打印出的z的初始值都是x(它是0)和y(這是一些垃圾值,因爲它還沒有被初始化)而得到的值相同時,給出0

0

在你的代碼中出現的第一個問題是,試圖通過其中y乘以X分配Z,但Y不是分配到一定值=>錯誤!這意味着您應該在分配z之前獲得用戶輸入。

你可能想知道爲什麼你的「0」十個輸出:在循環中,你只打印分配給Z到控制檯的價值,但z爲之前已經分配和重複過程中沒有改變。

#include <iostream> 

using namespace std; 

int main(){ 

    int x; 
    int y; 
    int z; 
    x = 0; 
    z = x * y;     // y is never assigned to a value 
    cout << "enter y" << endl; 
    cin >> y;     // y got assigned here! 
    while (x < 10) { 
     cout << z << endl;  // z stays the same in the loop 
     x = x + 1; 
    } 
}