2016-02-28 64 views
-1
#include <iostream> 
using namespace std; 

int main() 
{ 
    int i = 0; 
    do { 
    switch (i) { 
     case 1: 
     i++; 
     break; 
     case 4: 
     case 8: 
     i = i+ 2; 
     break; 
     default: 
     cout << i << endl; 
     break; 
    } 
    i++; 
    } while (i < 12); 

    cout << i << endl; 
    return 0; 
} 

爲什麼代碼打印出來12的最後一個輸入?因爲while語句,它不應該是11嗎?需要幫助瞭解如何使用switch語句

+0

'do while x> y'表示完成,直到'x'大於'y'。 –

+0

這不是問題,但不要使用'std :: endl',除非你需要額外的東西。 ''\ n''開始一個新行。 –

回答

0

沒有辦法,最後COUT < <我可以輸出任何低於12後while循環。 while循環將繼續重複開關,直到變量爲12或更多。

0

如果您不想打印12並退出while循環,請更改代碼,如下所示。想想這種變化,並試着瞭解爲什麼會發生這種情況。

#include <iostream> 
using namespace std; 

int main() 
{ 
int i = 0; 
do { 
switch (i) { 
    case 1: 
    i++; 
    break; 
    case 4: 
    case 8: 
    i = i+ 2; 
    break; 
    default: 
    cout << i << endl; 
    break; 
} 
i++; 
} while (i < 11); 

cout << i << endl; 
return 0; 
} 

根據你的代碼,這種情況正在發生,因爲在條件時,i == 11檢查i<12將返回true,由於11 < 12.因爲該程序不會從while循環和退出循環會再次運行i = 12並打印12.