ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

5.循环语句

5.循环语句 一、为什么需要循环语句生活里存在大量重复工作场景老师给全班 50 个学生挨个登记成绩每天闹钟重复响 3 次打印 100 份相同的通知游戏持续接收玩家操作直到用户选择退出。计算机默认从上到下顺序执行代码。如果没有循环结构想要重复执行一段逻辑只能复制粘贴大量重复代码。1.1 无循环代码的弊端需求屏幕依次输出数字 110。如果不使用循环只能重复写多条打印语句printf(1\n); printf(2\n); printf(3\n); printf(4\n); printf(5\n); printf(6\n); printf(7\n); printf(8\n); printf(9\n); printf(10\n);明显缺点代码冗长编写耗时如果改为输出 11000需要写大量重复代码不现实修改输出格式时每一行都要手动改动容易漏改产生 bug代码冗余可读性差后期维护成本高。循环语句就是用来解决重复代码问题。一段逻辑只需编写一次设置循环规则就可以让计算机自动重复运行。二、三种基础循环语法循环通常包含三个关键部分初始条件循环开始前设置变量初始值循环判断条件条件成立时继续执行循环体更新条件每轮循环后修改循环变量让循环有机会结束。如果缺少更新条件或者判断条件永远成立就可能造成死循环。2.1 while 循环先判断后执行基础语法// 1.初始条件定义在循环外 int i 初始数值; while (循环判断条件) { 循环体语句; // 重复执行的逻辑 更新条件语句; // 修改循环变量控制循环结束 }注意while()括号后面不能直接加分号否则可能导致循环体执行异常或死循环。示例输出 15#include stdio.h int main() { int i 1; // 初始条件循环变量 i 从 1 开始 while (i 5) // 循环条件i 小于等于 5 时继续循环 { printf(%d , i); // 循环体打印当前数字 i; // 更新条件变量自增避免死循环 } return 0; }运行结果1 2 3 4 5执行流程第一次i 1满足i 5进入循环输出 1然后i变成 2再次判断i 5条件成立输出 2i变成 3重复执行判断、输出、自增当i 5时输出 5然后i变成 6再次判断6 5不成立循环结束。2.2 do while 循环先执行后判断基础语法do { 循环体语句; 更新条件语句; } while (循环判断条件);注意do while语句末尾必须加分号这是语法要求。核心特点do while先执行一次循环体再判断条件是否成立。因此无论条件一开始是否成立循环体至少执行一次。示例输出 15#include stdio.h int main() { int i 1; do { printf(%d , i); i; } while (i 5); return 0; }运行结果1 2 3 4 5典型适用场景do while适合 “先执行一次再决定是否继续” 的场景。例如菜单程序先显示一次菜单再根据用户输入判断是否退出。do { printf(1. 查看成绩\n); printf(2. 修改成绩\n); printf(3. 退出\n); printf(请选择); scanf(%d, choice); // 根据选择执行对应功能 } while (choice ! 3);2.3 for 循环三要素集中适合已知循环次数基础语法for (表达式1; 循环条件; 表达式3) { 循环体语句; }说明表达式1循环变量初始化通常只执行一次循环条件条件成立时执行循环体表达式3每轮循环结束后更新循环变量。三个部分之间用分号分隔。示例输出 15#include stdio.h int main() { for (int i 1; i 5; i) { printf(%d , i); } return 0; }运行结果1 2 3 4 5for 循环的标准写法说明上面代码中for (int i 1; i 5; i)这种在for循环内部定义变量i的写法属于C99 及以后标准。如果编译器较老可能会报错。此时可以改写成int i; for (i 1; i 5; i) { printf(%d , i); }注意for()括号后面不要随意加分号否则循环体可能变成空语句。2.4 三种循环核心区别表格循环执行特点适用场景while先判断后执行条件不成立时一次都不执行循环次数不固定先检查条件再运行do while先执行后判断循环体至少执行一次菜单、输入确认等先执行一次的场景for初始化、判断、更新集中在一行循环次数明确如计数、遍历三、自增与自减运算符表示自增--表示自减。它们都有两种写法后置i、i--前置i、--i3.1 后置自增i先使用变量当前值使用结束后再加 1。int i 1; printf(%d, i);输出结果1执行过程先输出i的当前值 1输出完成后i再加 1变成 2。3.2 前置自增i变量先加 1再使用更新后的值。int i 1; printf(%d, i);输出结果2执行过程i先加 1变成 2再输出i的值 2。3.3 自减运算符自减运算符--的规则与自增类似。后置自减i--int i 5; printf(%d, i--);输出结果5执行结束后i的值为 4。前置自减--iint i 5; printf(%d, --i);输出结果43.4 复合赋值运算符循环中经常需要修改变量的值可以使用复合赋值运算符简化代码。表格符号作用等价写法自加赋值i 1等价于i i 1-自减赋值i - 1等价于i i - 1*自乘赋值i * 2等价于i i * 2/自除赋值i / 2等价于i i / 2%自取余赋值i % 4等价于i i % 4四、死循环如果循环条件永远成立并且循环变量没有被更新程序就会一直重复执行形成死循环。死循环示例int i 1; while (i 5) { printf(%d , i); // 缺少 ii 永远是 1 }这个循环中i的值始终是 1条件i 5永远成立所以会一直输出1。避免死循环的方法写循环时一定要检查循环变量是否有初始值循环条件是否合理循环变量是否会被更新更新后是否有机会让条件不成立。五、循环控制关键字break 与 continuebreak和continue可以改变循环的执行流程。break直接结束整个循环continue跳过当前轮剩余语句进入下一轮循环判断。5.1 break 示例需求输出 15当数字等于 3 时终止全部循环。#include stdio.h int main() { for (int i 1; i 5; i) { if (i 3) { break; } printf(当前数字%d\n, i); } printf(循环已经完全结束\n); return 0; }运行结果当前数字1 当前数字2 循环已经完全结束说明当i等于 3 时break立即结束整个循环所以数字 4 和 5 不会输出。5.2 continue 示例需求输出 15跳过数字 3其余数字正常输出。#include stdio.h int main() { for (int i 1; i 5; i) { if (i 3) { continue; } printf(当前数字%d\n, i); } printf(循环正常走完了\n); return 0; }运行结果当前数字1 当前数字2 当前数字4 当前数字5 循环正常走完了说明当i等于 3 时continue跳过本轮printf但循环不会结束。i会继续更新为 4、5循环正常执行完。5.3 速记口诀break直接结束全部循环continue跳过本轮循环接着走。六、C 语言常用运算符与符号汇总6.1 算术运算符表格符号名称作用示例加号加法、表示正数3 5、6-减号减法、表示负数9 - 2、-4*乘号乘法2 * 3/除号除法7 / 2%取余求两个整数相除的余数7 % 2自增变量值加 1i、i--自减变量值减 1i--、--i注意整数除法会舍弃小数部分所以7 / 2的结果是3如果运算中包含浮点数结果通常是小数例如7.0 / 2的结果是3.5取余运算符%只能用于整数。6.2 关系运算符关系运算符常用于if、while、for的条件判断。表格符号含义示例大于a 10小于a 5大于等于score 60小于等于age 18等于num 1!不等于select ! 4重点区分是赋值运算符才是相等判断运算符。二者不能混用。6.3 逻辑运算符表格符号名称规则示例逻辑与所有条件同时成立结果才为真age 10 age 20||逻辑或任意一个条件成立结果就为真score 90 || score 100!逻辑非对结果取反!(num 0)简单优先级!优先级最高优先级高于||。例如a 10 b 20 || c 0先判断再判断||。为了避免混淆建议复杂条件加括号(a 10 b 20) || c 06.4 复合赋值运算符表格符号作用等价写法基础赋值a 10自加赋值a 2等价于a a 2-自减赋值a - 3等价于a a - 3*自乘赋值a * 5等价于a a * 5/自除赋值a / 2等价于a a / 2%自取余赋值a % 4等价于a a % 46.5 输入输出与地址符号表格符号作用示例取地址符scanf(%d, a); 双引号包裹字符串如hello 单引号包裹单个字符如A%格式控制符%d、%f、%c等常用格式控制符表格符号含义%d整型%ffloat类型小数%lfdouble类型小数%c单个字符%lld长长整型6.6 括号符号表格符号作用示例()条件括号、提高优先级if (a 10)、(2 3) * 4{}代码块函数、if、循环后的代码块[]数组下标int arr[10];6.7 分隔与结束符号表格符号作用示例;语句结束标志int a 10;,分隔变量或参数int a, b, c;6.8 常用转义字符表格符号作用\n换行\t水平制表产生一段空格\\输出一个反斜杠\输出双引号\输出单引号6.9 注释与预处理符号表格符号作用示例//单行注释// 这是注释/* */多行注释/* 多行注释 */#预处理标识#include、#define七、学习总结循环语句是 C 语言非常重要的基础结构。通过循环计算机可以重复执行同一组逻辑避免大量重复代码。三种循环中while适合先判断条件再执行do while适合至少执行一次的场景例如菜单for适合循环次数明确的场景。break和continue可以进一步控制循环流程break结束整个循环continue跳过当前轮进入下一轮。结合变量、输入输出、分支判断、循环和运算符已经可以解决很多基础编程问题。后续学习中还会接触循环嵌套、数组、函数等更复杂内容。
返回列表