前言
有的时候,我们可能需要多次执行同一块代码。
一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。
编程语言提供了更为复杂执行路径的多种控制结构。
循环语句则允许我们多次执行一个语句或语句组。
1. for循环
1.1 语法
for(表达式1;表达式2;表达式3) 循环语句;
表达式1为初始化部分,用于初始化循环变量的。
表达式2为条件判断部分,用于判断循环时候终止。
表达式3为调整部分,用于循环条件的调整。
如果判断部分省略,意味着判断恒真。
实例:使用for循环在屏幕上打印1-10的数字
#include<stdio.h> int main() { int i; for (i = 1; i <= 10; i++) { printf("%d ", i); } return 0; }
for循环的执行流程图:
for语句只控制一条语句,控制多条语句要加{}。
1.2 break和continue在for循环中
//break 代码实例 #include<stdio.h> int main() { int i; for (i = 1; i <= 10; i++) { if (i == 9) break; printf("%d ", i); } return 0; }
输出结果:
为什么到8就结束了?
break在for循环中的作用:
其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。
所以:for中的break是用于永久终止循环的。
//continue 代码示例 #include<stdio.h> int main() { int i; for (i = 1; i <= 10; i++) { if (i == 9) continue; printf("%d ", i); } return 0; }
这段代码的输出结果又会是什么?
continue在for循环中的作用:
continue是用于终止本次循坏的,也就是本次循环中continue后边的优码不会再执行,
而是直接跳转到for语句的判断部分。进行下一次循环的入口判断。
1.3 for语句的循环控制变量
//前闭后开 int i=0; for(i=1;i<11;i++) {} //两边都是闭区间 int i=0; for(i=1;i<=10;i++) {}
1.不可在for循环体内修改循环变量,防止for循环失去控制;
2.建议for语句的循环控制变量的取值采用”前闭后开区间写法。
1.4 一些for循环的变种
//代码1 for(;;) { printf("hh\n");//无限循环打印hh } //for循环中的初始化部分、判断部分、调整部分可以省略。 //初始化和调整部分的省略就是啥都不做 //判断部分省略了,意味着判断是恒为真的 //建议不要随便省略 //代码2 int i=0; int j=0; for(i=0;i<10;i++) { for(j=0;j<10;j++); { printf("hh\n");//打印10个hh } } //代码3 int i=0; int j=0; for(;i<10;i++) { for(;j<10;j++) { printf("hh\n");//同代码2 } } //代码4-使用多于一个变量控制循环 int x, y; for (x = 0, y = 0; x < 2 && y < 5; ++x, y++) { printf("hh\n");//打印两个hh }
下面这段代码会打印多少个hh?
#include<stdio.h> int main() { int i = 0; int j = 0; //i=0 1 for (i=0; i < 4; i++) { for (j=0; j < 4; j++) { printf("hehe\n"); } } return 0; }
1.5 练习
请问循环要循环多少次?
#include<stdio.h> int main() { int i = 0; int k = 0; for (i = 0, k = 0; k = 0; i++, k++) { k++; printf("hh"); } return 0; }
for循环可以嵌套使用:
2. while循环
2.1 语法
while(表达式) 循环结构;
while语句执行的流程:
实例:使用while循环在屏幕上打印1-10的数字
#include<stdio.h> int main() { int i = 1;//初始化 while (i <= 10)//判断 { printf("%d ", i); i++;//调整 } return 0; }
2.2 break介绍
#include<stdio.h> int main() { int i = 1; while (i <= 10) { if (i == 5) break;//(跳出)终止循环 printf("%d ", i); i = i + 1;//i++; } return 0; }