龙听期货论坛's Archiver

龙听 发表于 2024-12-13 10:27

C++循环中continue 语句

C++ 中的 continue 语句有点像 break 语句。但它不是强迫终止,continue 会跳过当前循环中的代码,强迫开始下一次循环。

对于 for 循环,continue 语句会导致执行条件测试和循环增量部分。对于 while 和 do...while 循环,continue 语句会导致程序控制回到条件测试上。

语法

[img]http://p.algo2.net/2024/1213/4563d3618d179.jpg[/img]

流程图

[img]http://p.algo2.net/2024/0311/1378f5559c60f.jpg[/img][code]
#include <iostream>
using namespace std;

int main ()
{
   // 局部变量声明
   int a = 10;

   // do 循环执行
   do
   {
       if( a == 15)
       {
          // 跳过迭代
          a = a + 1;
          continue;
       }
       cout << "a 的值:" << a << endl;
       a = a + 1;
   }while( a < 20 );

   return 0;
}
[/code]当上面的代码被编译和执行时,它会产生下列结果:[code]
a 的值: 10
a 的值: 11
a 的值: 12
a 的值: 13
a 的值: 14
a 的值: 16
a 的值: 17
a 的值: 18
a 的值: 19
[/code]

龙听 发表于 2024-12-13 10:29

continue 语句

有时候可能想要保持循环,但又想让当前迭代立即结束,这时可以通过 continue 语句来完成。

当遇到 continue 时,出现在它之后的循环体中的所有语句都被忽略,循环准备下一次迭代。在 while 循环中,这意味着程序跳转到循环顶部的测试表达式。如果表达式仍然为 true,则下一次迭代开始,否则,循环退出。在 do-while 循环中,程序跳转到循环底部的测试表达式,它决定下一次迭代是否开始。在 for 循环中,continue 会导致更新表达式被执行,然后测试表达式被评估。

以下程序段表示在 while 循环中使用 continue:[code]
int testVal = 0;
while (testVal < 10)
{
    testVal++;
    if (testVal) == 4
        continue; //终止循环的该次迭代
    cout << testVal << " ";
}
[/code]这个循环看起来像是要显示整数 1〜10。但是,其实际输出如下:

1 2 3 5 6 7 8 9 10

请注意,数字未不打印。这是因为当 testVal 等于 4 时,continue 语句会导致循环跳过 cout 语句并开始下一次迭代。

注意,与 break 语句一样,continue 语句违反了结构化编程规则,使得代码难以理解、调试和维护。因此,应该谨慎使用 continue。

当然,continue 语句有一些实际用途,下面的程序说明了其中的一个应用。该程序计算 DVD 租赁的费用,current releases 版本费用为 3.50 美元,所有其他版本费用为 2.50 美元。如果一个客户租了几张 DVD,每 3 张有 1 张是免费的。continue 语句用于跳过计算每个第 3 张 DVD 费用的循环部分。[code]
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    int numDVDs;    // Number of DVDs being rented
    double total = 0.0; // Accumulates total charges for all DVDs
    char current; // Current release? (Y/N)
   
    // Get number of DVDs rented
    cout << "How many DVDs are being rented?";
    cin >> numDVDs;
   
    //Determine the charges
    for (int dvdCount = 1; dvdCount <= numDVDs; dvdCount++)
    {
        if (dvdCount % 3 == 0)// If it's a 3rd DVD itT s free
        {
            cout <<" DVD #" << dvdCount << " is free! \n";
            continue;
        }
        cout << "Is DVD #" << dvdCount << " a current release (Y/N) ? ";
        cin » current;
        if ( (current == 'Y') || (current == 'y'))
            total += 3.50;
        else
            total += 2.50;
    }
    //Display the total charges
    cout << fixed << showpoint << setprecision(2);
    cout << "The total is $" << total << endl;
    return 0;
}
[/code]程序输出结果:

How many DVDs are being rented? 6
Is DVD #1 a current release (Y/N) ? y
Is DVD #2 a current release (Y/N) ? n
DVD #3 is free!
Is DVD #4 a current release (Y/N)? n
Is DVD #5 a current release (Y/N)? y
DVD #6 is free!
The total is $12.00

页: [1]