上数学课时,我们常常在用相同的方法重复不断的做一件事,根据之前的学习我们发现一些问题,重复某件事用C++代码该怎么表达的呢?总不能一句一句写,写道天荒地老。所以就有了循环的语句的设计;C++给我们提供了三种循环的语句:for循环、while循环、do while循环。
for循环:语法结构:for(初始表达式;循环条件;操作表达式)
对for循环的执行逻辑进行详细讲解。
第一步,初始化表达式确定初始条件
第二步,进入到循环条件,判断初始化的条件是否成立,如果成立,则执行内的语句;如果不成立就结束;
第三步,执行完{内的语句后,执行操作表达式,将条件改变;
第四步,改变条件后,再去执行循环条件,判断条件改变后是否成立,重复第二步;如此依次循环,直到条件不成立。
#include <iostream>
using namespace std;
//写一个累加1到n的和
int main()
{
int sum = 0, n;
cin >> n;
//初始我们定义一个i并且赋值为1,循环的条件是i小于
//等于n,如果调教满足我们就执行一次for循环里的语句;
//一次循环后在操作表达式中我们将i加上1
//在C++中语句++i; i++; i = i + 1; i += 1;是等效的;
//如果想结合到别的语句使用要需要自行查找上述4个表达式的不同。
for(int i = 1; i <= n; ++i)
{
sum = sum + i;
}
cout << sum << endl;
return 0;
}
接下来结合上一节课if来写一个例子:水仙花数
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。
#include <iostream>
using namespace std;
int main()
{
int num, a, b, c;//定义num表示此数字
cout << "水仙花数: \n";
for(num = 100; num <= 999; num++)//数字范围:[100, 999)
{
a = num % 10; //num的个位数字
b = num / 10 % 10; //num的十位数字
c = num / 100; //num的百位数字
if(num == (a * a * a + b * b * b + c * c * c)) //判定
cout << num << ' ';
}
cout << endl;
return 0;
}
循环与分支结构一样可以嵌套使用:
#include <iostream>
using namespace std;
int main()
{
for(int i = 0; i < 4; ++i)
{
cout << "问世间情为何物,直教人生死相许\n";
for(int j = 0; j < 3; ++j)
{
cout << "两情若是长久时, 又岂在朝朝暮暮\n";
}
}
return 0;
}
上述简单的对for使用做了样例,各种花里胡哨的使用方式课自行编写。