do-whil​​e循环

来源:互联网 发布:宜家椅子 知乎 编辑:程序博客网 时间:2024/04/30 07:54

do-whil​​e循环


其格式为: 

do语句while(条件); 

它的功能是完全一样的while循环,除了该条件的do-while循环进行评估,而不是之前的语句执行后,授予即使从来没有被满足的条件至少有一个执行的语句 。 例如,下面的示例程序呼应任何您输入的号码,直到您输入0。 

 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  
 // number echoer #include <iostream> using namespace std; int main () { unsigned long n; do { cout << "Enter number (0 to end): " ; cin >> n; cout << "You entered: " << n << "\n" ; } while (n != 0); return 0; } 
  输入号码(0结束):12345   您输入:12345   输入号码(0结束):160277   您输入:160277   输入号码(0结束):0   您输入:0 


的do-while循环的条件,以确定在循环结束时,通常使用被确定循环语句本身,在前面的情况类似,块内的用户输入是被用来确定如果循环已结束。 事实上,如果你从来没有在前面的例子中输入数值0,你可以更多的数字提示,直到永远。 

for循环


其格式为: 

(初始化条件;增加)语句; 

其主要功能是重复语句,条件仍是如此,像while循环。 但除此之外, 在for循环提供具体的地点,包含初始化语句, 增加语句。 因此,这个循环是专初始化一个计数器,它在每次迭代和增加执行重复动作。 

它的工作原理通过以下方式: 

  1. 执行初始化 。 一般来说,它是一个计数器变量的初始值设置。 这是只执行一次。
  2. 检查条件 。 如果这是真的,继续循环,否则循环结束语句被跳过(未执行)。
  3. 语句执行。 像往常一样,它可以是一个单一的大括号{}括起来的语句或块。
  4. 最后,无论是“ 增加”字段中指定的被执行,循环返回到步骤2。

使用for循环的倒计时下面是一个例子: 

 1  2  3  4  5  6  7  8  9  10  11  
 // countdown using a for loop #include <iostream> using namespace std; int main () { for ( int n=10; n>0; n--) { cout << n << ", " ; } cout << "FIRE!\n" ; return 0; } 
  10,9,8,7,6,5,4,3,2,1,着火了! 


初始化增加的字段是可选的。 他们可以保持为空,但必须写在所有情况下,它们之间的分号标志。 例如,我们可以写:(Ñ<10 ;)如果我们想指定没有初始化和没有增加,或为(;Ñ<10;Ñ+ +),如果我们想包括增加字段,但没有初始化(也许是因为在之前已经初始化变量)。 

或者,用逗号(,),我们可以在任何字段中指定多个表达式包括在一个for循环像在初始化 ,例如。 逗号运算符(,)是一个表达式分隔符,分隔多个表达式,其中只有一个普遍预期。 例如,假设我们希望在我们的环路初始化多个变量: 

 1  2  3  4  
 for ( n=0, i=100 ; n!=i ; n++, i-- ) { // whatever here... } 


这个循环将执行50次,如果既不n或在循环中被修改: 


n从一个值为0,i100,条件 n =(n等于i)。 因为n是增加了一个, 减少一个循环的条件将成为虚假的第50次循环后,当ni都等于50。 

跳转语句。


break语句


使用break,我们可以把一个循环,即使其最终的条件尚未达成。 它可以用于结束一个无限循环,或迫使它结束之前,它的自然结束。 例如,我们要停止计数,其自然结束之前(也许是因为发动机的检查失败?) 

 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  
 // break loop example #include <iostream> using namespace std; int main () { int n; for (n=10; n>0; n--) { cout << n << ", " ; if (n==3) { cout << "countdown aborted!" ; break ; } } return 0; } 
  10,9,8,7,6,5,4,3,倒计时中止! 


continue语句


continue语句使程序跳过其余的回圈,在当前迭代中,如果语句块的结束已经达成,造成它跳转到以下迭代的开始。 例如,我们要在我们的倒计时跳过5号: 

 1  2  3  4  5  6  7  8  9  10  11  12  13  
 // continue loop example #include <iostream> using namespace std; int main () { for ( int n=10; n>0; n--) { if (n==5) continue ; cout << n << ", " ; } cout << "FIRE!\n" ; return 0; } 
  10,9,8,7,6,4,3,2,1,着火了! 


goto语句

转到可以使程序中的另一点是绝对跳转。 你应该使用这个功能时要小心,因为它的执行导致无条件跳转忽略任何类型的嵌套限制。 
确定目标点,由一个标签,然后使用goto语句作为参数。 一个标签是一个有效的标识符,后跟一个冒号(:)。 

一般来说,这个指令没有具体使用结构化或面向对象编程中,除了那些低层次的编程的球迷可能会发现它。 例如,这里是我们的倒计时循环使用 goto语句: 

 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  
 // goto loop example #include <iostream> using namespace std; int main () { int n=10; loop: cout << n << ", " ; n--; if (n>0) goto loop; cout << "FIRE!\n" ; return 0; } 
  10,9,8,7,6,5,4,3,2,1,着火了! 


exit函数


出口是定义的函数在cstdlib库。 

exit 目的是终止当前的程序与特定的退出代码。 它的原型是: 

 
 void exit ( int exitcode); 


一些操作系统使用的退出码,并可以由调用程序。 按照惯例,退出代码为0表示程序正常结束,任何其他值意味着发生了一些错误或意外的结果。 

选择结构:开关。

switch语句的语法是有点奇特。 它的目的是要检查多个可能表达的恒定值。 类似的东西,我们所做的事情在本节开始的串联几个if和 else if指令。 它的形式是以下几点: 

开关(表达) {  情况常量constant1:     报表1组;     打破;  情况CONSTANT2:     报表2组;     打破;        默认值:     默认组语句 }

它的工作方式如下:switch计算表达式并检查它是否是相当于一个常量constant1,如果是,则执行语句组1,直到它找到的break语句。 当它发现这个break语句,程序跳转到年底的开关选择结构。 

如果表达等于一个常量constant1它会检查反对CONSTANT2。 如果它等于这个,它会执行语句组2,休息,直到找到关键字,然后会跳转到年底的开关选择结构。 

最后,如果表达式的值不匹配任何先前指定的常量(可以包括尽可能多的情况下,您要检查标签值),该方案将执行语句后的默认:标签,(如果它存在,因为它是可选的)。 

下面的代码片段都具有相同的行为: 

切换例子if-else语句相当于
开关(X){  案例1:     cout <<“请x是1;    打破;  案例2:     cout <<“请x是2;    打破;  默认值:     cout <<“请值为x的未知”;   }
如果(×== 1){   cout <<“请x是1;   }否则,如果(X == 2){   cout <<“请x是2;   }其他{   cout <<“请值为x的未知”;   }

switch语句在C + +语言有点特殊,因为它使用的标签,而不是块。 这迫使我们把break语句的语句,我们要执行一个特定的条件后组。 否则,报表,包括那些对应的剩余其他标签也将被执行,直到最后达到开关的选择性块或break语句。 

例如,如果我们后,第一组的情况下,一个没有包含一个break语句,程序将不会自动跳开关选择性块年底将继续执行剩下的语句,直到它到达一个断点指令或开关选择性块的末尾。 这使得它没有必要,包括大括号{}周围的发言的情况下,它也可以是有用的,执行相同的指令块被评估的表达式的不同可能值。 例如: 

 1  2  3  4  5  6  7  8  9  
 switch (x) { case 1: case 2: case 3: cout << "x is 1, 2 or 3" ; break ; default : cout << "x is not 1, 2 nor 3" ; } 


请注意,交换机只能用于比较对常数的表达式。 因此,我们不能把作为标签(例如, 当n:其中 ,n是一个可变的)或范围( 情况(1 .. 3):)的变量,因为它们不是有效的C + +中的常量。 

如果你需要检查范围或值不是常量,使用if和 else if语句的串联。 
原创粉丝点击