循环语句
在我们需要处理大量数据,或者要重复操作时,循环语句会是我们很好的帮手
本文会介绍c++里面最常用的三种循环语句
while循环
while语句的语法与if十分相似,大致如下:
while(bool值)
{
bool值为true时执行以下代码
}
bool为false时结束执行
举个简单的例子,当我们需要输入一个数,然后将他从最低位到最高位输出,我们就可以这样写:
int x;
cin>>x;
while(x!=0)
{
cout<<x%10;
x/=10;
}
在上面的代码里面,x!=0这个表达式在x不等于0的时候就会得到\(true\),所以x不等于0时会运行while里面的语句
即每次输出x%10,然后x变成x除以10的结果
为什么这样是把数字倒着输出?
首先看我们输出出来的x%10是什么?根据数学性质可知,x除以10得到的余数会是x的个位数,所以每次输出的是这个数的最后一位
那么同理,x除以10向下取整之后其实就是直接去掉最后一位数
所以我们每次进行的操作是输出最后一位数,然后去掉最后一位数,到0的时候结束,就做到了把数字倒着输出
dowhile循环
dowhile循环与while十分类似,语法如下
do
{
执行语句
}while(bool值,如果为true就再次执行,为false就结束);
dowhile语句最重要的就是搞清楚和while之间的区别,while是执行前判断bool值,而dowhile是执行结束之后才判断,所以dowhile最少会执行一遍
例如
do
{
cout<<"Hello!World";
}while(0);
就会输出Hello!World,但是
while(0)
{
cout<<"Hello!World";
}
却什么都不会输出
for循环
for循环的基本语法如下:
for (初始化表达式(只在一开始执行); bool值; 更新表达式(每次判断bool值之前执行)) {
// 待执行的代码块(bool值为true的时候执行)
}
简单来说,在for循环的一开始,会执行初始化表达式,然后开始循环过程
循环过程第一步便是判断bool值是否为true,如果不是则结束,是就执行代码块
执行完代码块后,会执行更新表达式,然后重新开始判断bool值是否为true
用流程图描述大致如下

由于for循环的特性,其一般用于明确循环次数的时候
例如,我们要求1到一百的和时:
int sum=0;
for(int i=1;i<=100;i++)
{
sum+=i;
}
cout<<sum;
我们根据流程推一下
在循环开始前,我们执行了初始化表达式,就是定义整数i等于1
然后每次进入循环前会判断i是否小于等于100,小于等于进入循环,否则结束
然后执行sum加上i
最后结束的时候执行更新表达式,就是变量i自增,即i变大1
显然,i每次自增1,直到101时循环结束,sum会加上每一个i,便加上了1到100,所以便求了1到100的和
注意,这个确定的循环次数并不一定是完全已知的数字,他也可以是n
例如,我们从求1到100的和变成求1到n的和,代码就会变成:
int n;
cin>>n;
int sum=0;
for(int i=1;i<=n;i++)
{
sum+=i;
}
cout<<sum;
而且也不一定非要从1开始,我们同样可以求出a到b之间所有数的和,例如:
int a,b;
cin>>a>>b;
int sum=0;
for(int i=a;i<=b;i++)
{
sum+=i;
}
cout<<sum;
continue和break语句
continue
continue语句在循环中充当的作用非常简单:
跳过本次循环剩余还要执行的代码块
一般在循环过程中某些特殊情况用不上的时候可以用continue语句跳过
例如,我们要求1到n的所有个位不是5的数字的和,就可以这样:
int n;
cin>>n;
int sum=0;
for(int i=1;i<=n;i++)
{
if(i%10==5)
{
continue;
}
sum+=i;
}
cout<<sum;
在上述代码中,当i的个位数为5时,会跳过sum+=i这一条,直接开始自增,然后下一次循环
所以sum并不会加上个位数为5的数字
break
break语句的功效与continue语句十分相似,都会跳过剩余所有的代码块
但是continue是只跳过当前的循环,后续还会继续进行,而break则是直接结束整个循环,后续不再进行
例如,求同样求和,如果和超过1000就停止:
int n;
cin>>n;
int sum=0;
for(int i=1;i<=n;i++)
{
if(sum>1000)
{
break;
}
sum+=i;
}
cout<<sum;
在上述代码中,当总和sum大于1000时我们直接break,跳出来整个循环,所以后续不会再有任何求和,所以和超过1000就会停止

浙公网安备 33010602011771号