C语言分支与循环语句详解:从入门到精通

📅 2026/7/27 6:12:15
C语言分支与循环语句详解:从入门到精通
1. 引言C语言作为一门经典的结构化编程语言其流程控制语句是构建程序逻辑的基石。分支和循环语句共同构成了程序的控制流使程序能够根据条件执行不同的代码路径或者重复执行特定的任务。掌握这些语句是学习C语言编程的关键一步。本文将系统讲解C语言中的分支语句if、if-else、switch和循环语句while、do-while、for通过丰富的代码示例帮助读者深入理解其语法、执行流程和实际应用场景。2. 分支语句分支语句允许程序根据条件表达式的真假值选择执行不同的代码块实现决策逻辑。2.1 if 语句if语句是最基本的分支结构当条件为真时执行指定的代码块。语法if(condition){// 条件为真时执行的语句}示例判断一个数是否为正数#includestdio.hintmain(){intnum10;if(num0){printf(%d 是正数。\n,num);}return0;}2.2 if-else 语句if-else语句在条件为真时执行一个代码块为假时执行另一个代码块。语法if(condition){// 条件为真时执行的语句}else{// 条件为假时执行的语句}示例判断奇偶数#includestdio.hintmain(){intnum7;if(num%20){printf(%d 是偶数。\n,num);}else{printf(%d 是奇数。\n,num);}return0;}2.3 else-if 阶梯当需要判断多个条件时可以使用else if构建多分支结构。语法if(condition1){// 条件1为真时执行}elseif(condition2){// 条件2为真时执行}elseif(condition3){// 条件3为真时执行}else{// 所有条件都为假时执行}示例成绩等级评定#includestdio.hintmain(){intscore85;if(score90){printf(成绩等级A\n);}elseif(score80){printf(成绩等级B\n);}elseif(score70){printf(成绩等级C\n);}elseif(score60){printf(成绩等级D\n);}else{printf(成绩等级F不及格\n);}return0;}2.4 switch 语句switch语句根据表达式的值跳转到匹配的case标签处执行适用于多路分支选择。语法switch(expression){caseconstant1:// 语句break;caseconstant2:// 语句break;// 更多 case...default:// 默认语句}重要规则expression必须是整型或字符型表达式case后的常量必须是整型常量或字符常量break语句用于跳出switch否则会“穿透”执行下一个casedefault是可选的当没有匹配的case时执行示例根据星期数输出星期名称#includestdio.hintmain(){intday3;switch(day){case1:printf(星期一\n);break;case2:printf(星期二\n);break;case3:printf(星期三\n);break;case4:printf(星期四\n);break;case5:printf(星期五\n);break;case6:printf(星期六\n);break;case7:printf(星期日\n);break;default:printf(无效的星期数\n);}return0;}case 穿透示例#includestdio.hintmain(){intmonth2;intdays0;switch(month){case1:case3:case5:case7:case8:case10:case12:days31;break;case4:case6:case9:case11:days30;break;case2:days28;// 不考虑闰年break;default:printf(无效的月份\n);return1;}printf(%d 月有 %d 天\n,month,days);return0;}3. 循环语句循环语句用于重复执行一段代码直到满足特定条件为止。3.1 while 循环while循环在条件为真时重复执行循环体先判断条件后执行。语法while(condition){// 循环体语句}// while 死循环模板while(1){// 循环体// 需要使用 break 语句退出循环}**示例计算1到10的和**c#includestdio.hintmain(){inti1;intsum0;while(i10){sumi;i;// 不要忘记更新循环变量否则会导致无限循环}printf(1到10的和为%d\n,sum);return0;}3.2 do-while 循环do-while循环先执行一次循环体然后判断条件条件为真则继续循环。至少执行一次。语法do{// 循环体语句}while(condition);// do-while 死循环模板do{// 循环体// 需要使用 break 语句退出循环}while(1);**示例用户输入验证**c#includestdio.hintmain(){intnumber;do{printf(请输入一个正数);scanf(%d,number);if(number0){printf(输入错误请重新输入\n);}}while(number0);printf(您输入的正数是%d\n,number);return0;}3.3 for 循环for循环是最常用的循环结构将初始化、条件判断和更新三个部分集中在一行。语法for(initialization;condition;update){// 循环体语句}// for 死循环模板for(;;){// 循环体// 需要使用 break 语句退出循环}执行流程执行初始化表达式只执行一次检查条件表达式如果为假则退出循环执行循环体执行更新表达式返回第2步示例打印乘法表#includestdio.hintmain(){printf(九九乘法表\n);for(inti1;i9;i){for(intj1;ji;j){printf(%d×%d%-2d ,j,i,i*j);}printf(\n);}return0;}for 循环的变体// 多个初始化或更新表达式for(inti0,j10;ij;i,j--){printf(i%d, j%d\n,i,j);}4. 循环控制语句4.1 break 语句break语句用于立即终止所在的最内层循环或switch语句。示例在数组中查找元素#includestdio.hintmain(){intnumbers[]{2,4,6,8,10,12,14,16,18,20};inttarget12;intfound0;for(inti0;i10;i){if(numbers[i]target){printf(找到目标值 %d索引为 %d\n,target,i);found1;break;// 找到后立即退出循环}}if(!found){printf(未找到目标值 %d\n,target);}return0;}4.2 continue 语句continue语句跳过当前循环的剩余部分直接进入下一次循环的条件判断。示例打印1-10中的奇数#includestdio.hintmain(){for(inti1;i10;i){if(i%20){continue;// 如果是偶数跳过本次循环}printf(%d ,i);}printf(\n);return0;}5. 嵌套结构分支和循环语句可以相互嵌套构建复杂的程序逻辑。5.1 嵌套分支示例判断闰年#includestdio.hintmain(){intyear;printf(请输入年份);scanf(%d,year);if(year%40){if(year%1000){if(year%4000){printf(%d 年是闰年。\n,year);}else{printf(%d 年不是闰年。\n,year);}}else{printf(%d 年是闰年。\n,year);}}else{printf(%d 年不是闰年。\n,year);}return0;}5.2 嵌套循环示例打印金字塔图案#includestdio.hintmain(){introws5;for(inti1;irows;i){// 打印空格for(intj1;jrows-i;j){printf( );}// 打印星号for(intk1;k(2*i-1);k){printf(*);}printf(\n);}return0;}6. 常见应用场景**示例菜单驱动程序#includestdio.hintmain(){intchoice;do{printf(\n 学生管理系统 \n);printf(1. 添加学生\n);printf(2. 删除学生\n);printf(3. 查询学生\n);printf(4. 退出系统\n);printf(请选择操作);scanf(%d,choice);switch(choice){case1:printf(执行添加学生功能...\n);break;case2:printf(执行删除学生功能...\n);break;case3:printf(执行查询学生功能...\n);break;case4:printf(感谢使用再见\n);break;default:printf(无效选择请重新输入\n);}}while(choice!4);return0;}7. 最佳实践与注意事项7.1 代码可读性使用恰当的缩进和空格添加必要的注释避免过深的嵌套一般不超过3层使用有意义的变量名7.2 常见错误忘记更新循环变量导致无限循环误用赋值运算符if (x 5)而不是if (x 5)缺少 break 语句在switch中导致 case 穿透循环条件错误for (int i 0; i 10; i--)导致无限循环浮点数相等比较避免if (x 0.1)应使用if (fabs(x - 0.1) 0.00001)7.3 性能考虑将不变的计算移到循环外减少循环内的函数调用使用i代替i对于内置类型无区别但对自定义类型有性能差异8. 总结C语言的分支和循环语句是构建程序逻辑的核心工具分支语句if、if-else、switch让程序能够根据条件做出决策循环语句while、do-while、for让程序能够重复执行任务控制语句break、continue提供了更精细的流程控制掌握这些语句的语法、执行流程和适用场景是编写高效、可读C程序的基础。建议读者通过大量练习来巩固这些概念从简单的示例开始逐步构建更复杂的程序逻辑。在实际编程中应根据具体需求选择最合适的控制结构并始终注意代码的可读性和维护性。