问一道小学的题,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只计算一次,表达式2、3则可能计算多次,循环体可能执行多次,或者一次也没执行
那我们就来计算一下1到100的和吧:
#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语句会反复执行语句。我们继续来用1到100加法来做:
#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…while和while的区别就在于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语句相互嵌套。
当do和while之间的循环体由多个语句组成时,必须用大括号括起来组成一个复合语句。
Do…while和while可以相互替换,但要注意修改循环条件。
在循环语句的程序运行时,经常需要中断循环。
C++提供了4中转移语句:
return,break,continue,goto
其中return语句只能出现在被调函数中,用于函数返回,我们会在函数部分讲。
那么来看看其他3个转移语句
1. break语句
break语句只能用在switch或循环语句中,其作用是跳出本层循环,去执行后面的程序。
我们继续拿前面1加到100的例子,这回我还要用上面的循环,但是只想在加到50就断,只算1到50的和,那么我们改成这样:
#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的例子来说,我们循环不变,但是只想得到1到50 的和,可以这么写:
#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;
}
来源:https://www.cnblogs.com/panjiangfy/archive/2011/08/02/cxuexi6.html