生活中我们总是要重复做一些事情,比如我们每天都要上学,每天都要吃饭,每天都要睡觉….在C++中,把重复做某些事情叫做“循环”。循环是非常重要的语言结构,正是有了它才让我们从枯燥的重复性工作中解脱出来。首先,我们学习最常用的循环结构——for循环:
for (初始化; 循环条件; 更新)
{
// 循环体
}
让我来解释一下:
初始化:这是循环开始前要做的事情,通常是设置一个变量,并对这个变量赋值。这部分代码只执行一次。
条件:是一个逻辑表达式,如果最后的结果为真(true),循环就会继续;否则,循环立即结束。
更新:这是每次循环结束后要做的事情,通常是改变循环变量的值。
循环体:这里存放的就是要重复的工作。
假设你是一名酷爱跑步的学生,每天都要在操场上跑10圈。我们可以用一个for循环来模拟这个过程:
初始化部分就像是你开始跑步前的准备动作。你可以想象成你站在起跑线上,准备开始第一圈,手腕上带了一个计数器用来记录你跑了几圈。在C++中,通常设置一个计数器变量,比如int i =0,i用来表示跑完了几圈,i=0说明你还没开始跑。
条件部分是你决定是否继续跑步的标准。当你每跑完一圈时,都会检查一下自己是否已经跑完了10圈。如果还没有跑完10圈,你就继续跑下一圈;如果跑够了10圈就立刻停下来休息。在C++中,通常在这里写一个条件表达式,比如i <10,表示只要计数器变量i小于10,就要继续跑(继续循环)。
更新部分是你每跑完一圈后要做的事情。在这个例子中,你可以想象成你每跑完一圈,都会按一下手腕上的计数器,告诉自己已经完成了第几圈。在C++中,我们通常在这里更新计数器变量,比如i++,表示每完成一次循环,计数器变量i就增加1。
循环体部分是你在跑每一圈时要做的事情。在这个例子中,你可以想象你边跑边喊:“我已经跑完X圈了!”。在编程中,我们通常在这里写需要重复执行的代码,比如打印出当前跑的是第几圈。
for (int i = 0; i <10; i++)
{
cout << “我已经跑完” << i << “圈了!” << endl;
}
当你运行这段代码时,一共会输出10行内容:
我已经跑完0圈了!
我已经跑完1圈了!
我已经跑完2圈了!
我已经跑完3圈了!
我已经跑完4圈了!
我已经跑完5圈了!
我已经跑完6圈了!
我已经跑完7圈了!
我已经跑完8圈了!
我已经跑完9圈了!
理解了这个例子以后,我们试着解决下面几个问题:
问题1 输出1-10所有的整数,每个整数一行。参考代码:
for (int i = 1; i <= 10; i++)
{
cout << i << endl;
}
问题2 输出10-1所有的整数,每个整数一行。参考代码:
for (int i = 10; i >=1; i--)
{
cout << i << endl;
}
问题3 输出下面的序列:1 3 5 7 …..99,每个整数一行。参考代码:
for (int i = 1; i <= 99; i = i + 2)
{
cout << i << endl;
}
问题4 计算1+2+3+…+100的和。参考代码:
int sum = 0;
for (int i = 1; i <= 100; i++)
{
sum = sum + i;
}
cout << sum << endl;
问题5 输入一个整数n,求该整数各个位上的和。比如输入一个整数123,那么各个位上的和就是1+2+3等于6。这个问题主要的难度在于不知道这个整数是几位。但是我们可以巧妙利用两个整数相除得到商的特性。参考代码:
int n, sum = 0;
cin>>n;
for (; n ; )
{
sum = sum + n % 10;
n = n / 10;
}
cout << sum << endl;
我们可以看到for()循环中,只有两个分号是必须得,其他部分可以为空。上面的代码也可以写成:
int n, sum = 0;
cin>>n;
for (; n ; n = n / 10)
{
sum = sum + n % 10;
}
有的时候我们需要构建一个死循环(一定慎用!!!)。那么可以写成:
for(;;)
{
//循环体
}