分支与循环(下)
本篇目标学会while循环for循环do while循环一.while循环1.逻辑只要while条件成立就一直重复执行条件一旦变“假”它就停止。标准语法形式:while (条件表达式) { // 循环体条件为真时重复执行的代码 ... }2.解释1.(条件表达式)必须用圆括号包裹在 C 语言中只要表达式的值非 0即视为“真”True如果值为0则视为“假”False。2.{ 循环体 }如果循环体只有一行代码大括号可以省略但不建议容易出错。如果有多行代码必须使用大括号。3.逆序打印的例子#include stdio.h int main() { int num 12345; printf(原数字: %d\n, num); printf(逆序后: ); // 只要 num 不为 0就一直拆解 while (num 0) { int digit num % 10; // 取出最后一位取余数 printf(%d, digit); // 打印这最后一位 num num / 10; // 去掉最后一位整除 10 } printf(\n);//54321 return 0; }二.for循环1.特点代码更加紧凑和易读。语法形式for (初始化语句; 循环条件; 更新语句) { // 循环体条件为真时执行的代码 ... }2.解释初始化语句只在循环开始前执行一次通常用于定义计数器例如int i 0。循环条件每次循环开始前都会检查如果为真 (非0)执行循环体如果为假 (0)退出循环。更新语句每次循环体执行完之后立即执行通常用于改变计数器的值例如i。3.执行顺序先执行初始化再判断条件条件为假直接退出不执行循环体若为真执行循环体然后再执行更新语句回到第 2 步重新判断条件。例如#include stdio.h int main() { int sum 0; // 初始和为 0 // 从 1 循环到 100 for (int i 1; i 100; i) { // 判断 i 是否能被 3 整除 if (i % 3 0) { sum i; // 如果是 3 的倍数就加到 sum 里 } } printf(1-100之间3的倍数的总和是: %d\n, sum); return 0; }或者也可以这用写#include stdio.h int main() { int sum 0; // 从 3 开始步长换成 i 3 for (int i 3; i 100; i 3) { sum i; // 此时 i 每次循环必然是 3 的倍数所以不需要 if 判断了 } printf(1-100之间3的倍数的总和是: %d\n, sum); return 0; }三.do while循环逻辑先执行、再检查。语法形式do { // 循环体需要重复执行的代码 // ... // 更新变量 (如 i) } while (条件表达式); // --- 注意这里必须带分号解释直接进入大括号执行里面的代码执行完后来到底部的while处检查条件如果条件为真 (True)跳回顶部再次执行代码如果条件为假 (False)结束循环往下走所以do while循环体内的代码至少会被执行一次无论条件是否成立。例如依然是计算1—100之间的3的倍数的和#include stdio.h int main() { int sum 0; int i 3; // 从第一个 3 的倍数开始 do { sum i; // 先累加 i 3; // 再更新 } while (i 100); // 最后判断只要还没过 100就继续回去加 printf(总和是: %d\n, sum); return 0; }四.break与continue1.break彻底终止作用立即跳出当前的整个循环不再执行循环中剩余的任何代码。逻辑一旦条件满足执行到break循环彻底宣告结束程序去跑循环大括号之后的代码。例如#include stdio.h int main() { int i; printf(开始数数\n); for (i 1; i 10; i) { // 检查是否达到了停止条件 if (i 6) { printf(\n数到 6 了触发 break后面的不打印了\n); break; // 立即跳出整个 for 循环 } printf(%d , i);//只打印了12345 } return 0; }2.continue跳过本次过下一个作用是结束当前的这一次循环直接开始下一次循环的判断。逻辑一旦执行到continue本次循环剩下的代码被跳过直接去执行更新变量例如#include stdio.h int main() { int i; for (i 1; i 10; i) { // 如果 i 等于 5就执行 continue if (i 5) { continue; // 立即停止本次打印直接去跑下一轮的 i } printf(%d , i);//仅没有打印5 } printf(\n程序运行结束。\n); return 0; }五.循环的嵌套循环嵌套就是在一个循环体内部又包含了另一个循环。例如#include stdio.h int main() { //外层循环控制一共打印 3 行 for (int i 1; i 3; i) { //内层循环在每一行里打印 3 个星号 for (int j 1; j 3; j) { printf(* ); } //内层循环跑完打完 3 个星号后换行 printf(\n); } return 0; }