前期我们介绍了while循环,将while循环的场景运用和各方面的具体案例总体的介绍一下,我们知道while循环的框架就是通过初始化、判断、递增循环进行,但是在实际的应用场景中,我们发现这样的语法并不是适用于所有的场景,那么我们再想有没有比较智能的结构将着三个重要的东西集成在一起呢?
for循环
那么就需要使用到for循环
for(表达式1; 表达式2; 表达式3) 循环语句;
这样一个语句就满足了初始化,判断和调整变量的功能,而且在实际的场景使用当中for循环也是经常被用到的。
表达式1:表达式1为初始化部分,用于初始化循环变量的。
表达式2:表达式2为条件判断部分,用于判断循环时候终止。
表达式3:表达式3为调整部分,用于循环条件的调整。
使用for循环打印1-10以内2的倍数
首先,根据题目的要求我们知道范围是1-10,需要找到2的倍数,那么也就是等同于递增变量与2是否可以整除,我们可以使用到取余操作符,作为条件。
#include <stdio.h> int main() { int i = 0; int num_1 = 0; int num_2 = 0; for (int i = 1; i <= 10; i++) //这里使用后++,是因为它是先赋值再去运算,这样才能调用初始化的值 //在for循环中一般都是使用的后++ { //printf("%d", i); if (i % 2 == 0) { printf("%d\n",i); ++num_1;//注意这里使用前++,是因为它是先运算再去赋值 } else { ++num_2; } } printf("一共有%d个2的倍数!",num_1); return 0; }
注意,这里的前++,后++在编程中我们虽然用的较少,但是考试和笔试过程中,我们遇到的大多是这样的考点。
for循环-continue和break
我们发现在for循环中也可以出现break和continue,他们的意义和在while循环中是一样的。但是还是有些差异:
#include <stdio.h> int main() { int i = 0; for (i = 1; i <= 10; i++) { if (i == 5) break; printf("%d ", i); } return 0; }
#include <stdio.h> int main() { int i = 0; for (i = 1; i <= 10; i++) { if (i == 5) continue; printf("%d ", i); } return 0; }
大体上,continue和break的思想是和while循环比较类似的,其中while循环的continue很有可能将循环弄成死循环,而for循环的continue是将其跳到for循环的调整部分。
for语句的循环控制变量
不可在for 循环体内修改循环变量,防止 for 循环失去控制。
建议for语句的循环控制变量的取值采用“前闭后开区间”写法。
int i = 0; //前闭后开的写法 for(i=0; i<10; i++) {} //两边都是闭区间 for(i=0; i<=9; i++) {}
前面的是执行10次,编码风格让人一目了然,后面的代码虽然也是执行10次,但是需要我们去理解这个代码才可以明白,所以在编程过程中,推荐使用第一种,前闭后开的风格进行书写。
关于for循环的一些案例
for (;;)
{
printf("王小王-123\n");
}
这里会出现死循环,因为没有判断条件,而且这样的代码在编程中很少会这样写,就算遇到也是在你的考试题目中出现。
int i = 0; int j = 0; int num = 0; //这里打印多少个王小王-123? for (i = 0; i < 10; i++) { for (j = 0; j < 10; j++) { printf("王小王-123\n"); num += 1; } } printf("一共打印了%d个王小王-123!\n",num);
这里是在循环中嵌套了一层循环,那么最终会打印多少次呢?10*10?
//如果省略掉初始化部分,这里打印多少个王小王-123? for (; i < 10; i++) { for (; j < 10; j++) { printf("王小王-123\n"); } }
为什么是10次呢?首先我们由于没有初始化i和j,那么导致第一次i进去也是0,j也是0,但是,这个时候j进入到了第二次的循环中,就在这个循环中打印了10次,当第二次进入循环时候,由于j没有被初始化,这个时候无法满足条件,所以就不能打印,最后就打印了10次!
int x, y; for (x = 0, y = 0; x < 2 && y < 5; ++x, y++) { printf("%d",y); printf("王小王-123\n"); }
使用多余一个变量控制循环
真题演练
//请问循环要循环多少次? #include <stdio.h> int main() { int i = 0; int k = 0; for (i = 0, k = 0; k = 0; i++, k++) k++; return 0; }
看到这个代码,首先我们应该分析的是,哪里是初始化,哪里是判断条件,哪里是调整部分!日条件都无法满足,所以也就没有循环次数!还要注意的是这里是=不是==!
do…while()循环
do
循环语句;
while(表达式);
它和while循环的区别在于,一个是至少执行一次,也就是说无论条件是否满足,都将要执行一次循环体的内容。
do while循环中的break和continue
在C语言中,我们前期编程的时候,一定要多尝试,一旦语句的位置不同,那么结果也会有千差万别!