摘要:
循环(Loops):
- for循环:使用计数器来控制循环次数,具有初始化、条件判断和增量表达式。
- while循环:通过在循环开始之前和循环内部进行条件测试来控制循环次数。 (1)break语句:用于跳出循环或switch语句,终止当前代码块的执行。 (2)continue语句:用于跳过当前循环的剩余代码,继续下一次循环迭代。
- do-while循环:循环体至少执行一次,然后通过条件测试来决定是否继续循环。
- 嵌套循环:在循环内部再嵌套一个或多个循环。
ps:如果内容不全就是因为还没学到
一、循环(Loops)
作为一个初学者,我最开始有点惊讶计算机只能对信息进行一条一条的运算(也可能是因为我没学到),对于那些很繁琐的运算,比如:
我们不可能说写一百种相似的代码来检测这100个数是否为奇数,所以出现了循环来帮助我们快速地解决问题。
1.for循环
首先for循环的基础格式是:
for (表达式1;表达式2;表达式3)
{
语句
}
表达式1 用于循环变量的初始化
表达式2 用于循环结束条件的判断
表达式3 用于循环变量的调整
重要的是:
for循环的执行流程是:
1.首先执行 表达式1 初始化循环变量(比如令循环变量i=0);
2.然后执行 表达式2 判断是否进行执行循环语句。若循环变量i不符合表达式2的条件,则循环结束;若符合条件,则执行循环语句;
3.最后执行 表达式3 调整循环变量,完成后重复 表达式2 的操作。
于是对于上面的题目,我们可以写出:
#include <stdio.h>
int main()
{
int i;
for (i = 1; i <= 100; i++)
{
if (i % 2 == 1)
printf("%d ", i);
}
return 0;
}
简练一点的操作流程就是:
表达式1→表达式2→语句→表达式3→表达式2→语句→······
个人认为for循环是相对难理解的
我个人的记忆(理解)方法是:
“for”有“对于”的意思,于是参照上面代码可以理解为:
对于“i=1”这件事,i此时满足了“小于100”的条件,然后执行语句的内容,最后由“i++”对i进行调整
2.while循环
while函数和for函数是非常相似的,这点我们最后再讨论。相对而言,while函数是比较好理解的
首先while函数的基础格式是:
while (表达式)
{
语句
}
while循环的执行流程为:
先执行 表达式 判断是否进行执行循环语句,若满足表达式的要求,则执行语句
先举个小例子:
我们要在屏幕上打印1-66的值
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 66)
{
printf("%d ", i);
i = i + 1;
}
return 0;
}
我们可以很轻易地得到结果:
我个人的理解方法是:
“while”的意思是“当”,就是说
当 i<66 时,表达语句
但是我们要注意,我们上面所说的“for循环”是可以由它自己来结束循环的(表达式2),但是在while函数中,有时如果我们不加以限制,计算机会不断地循环输出结果,例如:
int main()
{
int i;
scanf("%d", &i);
while (i == 1)
printf("666666666");
//while后边的条件满⾜,死循环的打印666666666
return 0;
}
在这里,i 的值是恒等于1的,所以while循环会不断循环输出
所以我们可能需要一些额外的工具来帮助我们准确的运用while循环
ps:注意并不是只有while函数可以使用break和continue
ps:注意并不是只有while函数可以使用break和continue
ps:注意并不是只有while函数可以使用break和continue
(1)break语句
我们很容易发现,有时候在循环语句中,我们需要提前结束循环
当break语句被执行时,程序会立即跳出当前循环,并继续执行循环之后的代码。
举个例子:
我们使用for循环打印从1到10的数字:
#include <stdio.h>
int main()
{
int i;
for (i = 1; i <= 10; i++) {
if (i == 5) {
break; // 当i等于5时跳出循环
}
printf("%d ", i);
}
printf("循环结束 ");
return 0;
}
如果没有break的话,输出结果将会是{1 2 3 4 5 6 7 8 9 10},但由于break的出现,导致党“i=5”时循环提前结束,所以运行结果为{1 2 3 4 循环结束}
(2)continue语句
break语句是直接停止整个循环,而continue语句则是更加“温和”一些当。continue语句被执行时,程序会立即跳过当前循环迭代中continue语句之后的代码,进入下一次循环的迭代。
接着举例子:
输入一个整数n,编写程序可以达到循环打印从1到n之间的奇数。
#include <stdio.h>
int main()
{
int n;
printf("请输入一个整数n:");
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
if (i % 2 == 0) {
continue; // 跳过偶数
}
printf("%d ", i);
}
return 0;
}
输入“i=50”后
原本输出的结果应该是从1-50的所有整数,但是由于continue的存在,所有偶数都被“continue”掉了,没有输出,所以输出结果只有1-49之间所有的奇数。
3.do-while循环
do-while循环是这三个循环中最不用的,我的理解是do-while循环就像是倒装句
for循环和while循环是先判断后运行的,而do-while循环是先运行一次,再进行判断是否继续循环的
首先do-while循环的基础格式是:
do
{
语句
} while (表达式);
所以我们可以很清楚的看出来,从上到下,我们先运行了语句,然后才是while的表达式
do-while循环的执行流程是:
先执行一次循环体中的语句,然后再检查 表达式 的条件是否满足,如果条件满足,则继续执行下一次循环迭代,否则结束循环。
继续举个例子:
使用do-while循环打印从1到5的数字
#include<stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i++;
} while (i <= 5);
return 0;
}
我们可以看到:do-while循环也是可以做到for循环一样的事情的;并且do-while循环适用于需要至少执行一次循环体的情况,因为它先执行循环体再判断条件。
注意while后面有个分号。
4.嵌套循环
嵌套循环就是把上述三种循环叠加在一起用,难度较大,有时这三种循环嵌套在一起才能更好的竭蹶问题。
举个例子:
打印一个带有星号的三角形图案:
#include<stdio.h>
int main()
{
int rows = 5;
for (int i = 1; i <= rows; i++)
{
for (int j = 1; j <= i; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
两个for循环叠加在一起,外层循环控制行数,内层循环控制每行输出的星号数量。外层循环从1到5遍历每一行,内层循环从1到当前行数遍历每一列。每次迭代,内层循环输出一个星号,并在星号之间添加一个空格。每行输出完成后,外层循环通过换行符进行换行,以绘制出具有逐渐增加星号数量的三角形图案。
所以输出结果就是: