2015-10-04 120 views
-3

代碼應該詢問用戶一個字母,然後顯示相當於它的ASCII碼數量3次。但它所做的只是向用戶詢問一次字符並顯示它的ASCII碼,而它應該提問三次。while循環和字符

#include <iostream> 
using namespace std; 

int main() { 
    char asciiCharacterNumber = 0; 

    while(asciiCharacterNumber <= 3) { 
     cout << "Character:: "; 
     cin >> asciiCharacterNumber; 
     cout << "Value of ASCII: " << (int)asciiCharacterNumber << endl; 
     asciiCharacterNumber++; 
    } 
    return 0; 
} 
+1

您可以使用'asciiCharacterNumber'來計算循環的迭代*和*存儲用戶的輸入。因此,循環將繼續,直到用戶輸入ASCII值爲2或更大的字符。也許你應該爲不同的任務使用不同的變量。 – Biffen

+0

[你正在讀取一個istream而不檢查結果](http://kayari.org/cxx/antipatterns.html#istream-check) –

+0

你不需要強制轉換爲int,'+ asciiCharacterNumber'將會執行招 –

回答

4

您正在閱讀(使用cin)到同一asciiCharacterNumber變量。由於可打印字符的ASCII值大於3,因此用戶通常輸入的第一個字符將終止循環。要解決這個

一種方法是用於讀取變量和櫃檯分開:

int counter = 0; 
char asciiCharacterNumber; 

while (counter < 3) { 
    cout << "Character:: "; 
    cin >> asciiCharacterNumber; 
    cout << "Value of ASCII: " << (int)asciiCharacterNumber << endl; 
    counter++; 
} 

編輯:

如果你想要一個循環迭代三次,一次for循環可能更合適:

char asciiCharacterNumber; 

for (int i = 0; i < 3; ++i) { 
    cout << "Character:: "; 
    cin >> asciiCharacterNumber; 
    cout << "Value of ASCII: " << (int)asciiCharacterNumber << endl; 
}