一起学 c++(六)循环语句、转移语句

问一道小学的题,1+2+3….+99+100的结果是多少,我想这个对于我们来说很easy的,5050,但是如果在程序中,我们怎么实现呢,难道真要一个一个加吗,显然太麻烦了,这个时候我们需要循环语句来帮我们解决这个问题

1.       for语句

for语句的表达式是:

for(表达式1;表达式2;表达式3)

{

           语句;

}

表达式1:通常用于给循环变量赋初值,一般是赋值表达式,如果在for循环外已经赋初值了,可以省略表达式1

表达式2:用于设立循环条件,一般为关系表达式或逻辑表达式

表达式3:修改循环变量的值,一般也是赋值语句

3个表达式根据不同的情况,均可省略。它的执行顺序是:

1)         先计算表达式1的值

2)         计算表达式2的值,若为真则执行循环体一次,否则跳出循环

3)         计算表达式3的值,返回2)

在整个循环过程中,表达式1只计算一次,表达式23则可能计算多次,循环体可能执行多次,或者一次也没执行

那我们就来计算一下1100的和吧:

#include <iostream>

using namespace std;

void main()

{

     int num=0,s=0;

     for (num=0;num<=100;num++)

     {

         s=s+num;

     }

     cout<<s<<endl;

}

因为我们之前对num已经赋初值了,所以for的第一个表达式可以省略:

#include <iostream>

using namespace std;

void main()

{

     int num=0,s=0;

     for (;num<=100;num++)

     {

         s=s+num;

     }

     cout<<s<<endl;

}

特别要注意的是:如果我们遇到for(;;)这个就是无限循环

2.       while语句

while语句的表达式:

while(表达式)

{

           语句;

}

当条件为真的时候,while语句会反复执行语句。我们继续来用1100加法来做:

#include <iostream>

using namespace std;

void main()

{

     int num=0,s=0;

     while(num<=100)

     {

         s=s+num;

         num++;

     }

     cout<<s<<endl;

}

 

3.       do…while语句

do…while语句的形式:

do

{

           语句

}

While(表达式);

它的语义是:先执行循环语句一次,再判断表达式的值,若为真则继续循环,否则终止循环。

do…whilewhile的区别就在于do…while先执行后判断,所以它至少要执行一次循环,而while是先判断后执行,如果条件不满足则一次循环体剧也不执行。

例如:

         #include <iostream>

using namespace std;

void main()

{

     int num=0,s=0;

     do

     {

         s=s+num;

         num++;

     } while (num<=100);

     cout<<s<<endl;

}

 

我们还要注意以下几点:

         if语句,while语句中,条件表达式后面都不能加分好,而在do..while语句的条件表达式后面则必须加分号。

         Do…while语句也可以组成多重循环,而且可以和while语句相互嵌套。

         dowhile之间的循环体由多个语句组成时,必须用大括号括起来组成一个复合语句。

         Do…whilewhile可以相互替换,但要注意修改循环条件。

 

 

在循环语句的程序运行时,经常需要中断循环。

C++提供了4中转移语句:

         returnbreakcontinuegoto

其中return语句只能出现在被调函数中,用于函数返回,我们会在函数部分讲。

那么来看看其他3个转移语句

1.       break语句

break语句只能用在switch或循环语句中,其作用是跳出本层循环,去执行后面的程序。

我们继续拿前面1加到100的例子,这回我还要用上面的循环,但是只想在加到50就断,只算150的和,那么我们改成这样:

#include <iostream>

using namespace std;

void main()

{

     int num,s=0;

     for (num=0;num<=100;num++)

     {

         s=s+num;

         if (num ==50)

              break;

     }

     cout<<s<<endl;

}

2.       continue语句

continue的意思是:结束本次循环,不再执行循环中continue语句后的语句,转入下一个判断和执行。与break相比,break是跳出循环,continue是跳过本次循环,所以要分清。

这回我们还是来看1加到100,这回我们算1加到100,但是不加50这个数,所以我们应该这么写:

#include <iostream>

using namespace std;

void main()

{

     int num,s=0;

     for (num=0;num<=100;num++)

     {

         if (num ==50)

              continue;

         s=s+num;

        

     }

     cout<<s<<endl;

}

 

3.       goto语句

goto也叫无条件转移语句,它比较特殊的地方是有个标识语句,形式如下:

goto 语句标号;

语句标号就是标识符规定书写的符号,放在某一句前,后面加,然后goto的会自动转移去执行语句标号后面的内容。

我们继续拿break的例子来说,我们循环不变,但是只想得到150 的和,可以这么写:

#include <iostream>

using namespace std;

void main()

{

     int num,s=0;

 

     for (num=0;num<=100;num++)

     {

        

         s=s+num;

         if (num ==50)

              goto Jieguo;

     }

Jieguo:

     cout<<s<<endl;

}

 

 

 

个人网站http://www.ravedonut.com/

原文地址:https://www.cnblogs.com/panjiangfy/p/cxuexi6.html