2016-02-28 65 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.