【C 语言入门】分支与循环核心语法全解析
在 C 语言编程中分支结构与循环结构是构建程序逻辑的核心几乎所有实用程序都离不开这两种结构的组合。小白基于 C 语言基础教程详细拆解 if/switch 分支、关系与逻辑运算符、三种循环语句的核心用法搭配实例代码与避坑指南助力像我一样的初学者快速掌握结构化编程思维。一、C 语言的三种基本结构C 语言作为结构化程序设计语言支持三大核心结构顺序结构代码按书写顺序依次执行是程序的基础选择结构分支结构通过条件判断决定执行路径核心语法为if语句与switch语句循环结构重复执行特定代码块核心语法为while、for、do-while循环。这三种结构可组合实现任意复杂逻辑如同搭积木般构建程序框架。二、分支结构让程序学会 “做选择”一if 语句灵活的条件判断if 语句是最常用的分支语法支持单分支、双分支、多分支及嵌套形式核心规则为 “非 0 为真0 为假”。1.单分支 if 语句语法if (表达式) 语句;示例判断整数是否为奇数#include stdio.h int main() { int num 0; scanf(%d, num); if(num % 2 1) printf(%d 是奇数\n, num); return 0; }2.双分支 if-else 语句语法if (表达式) 语句1; else 语句2;示例判断成年 / 未成年#include stdio.h int main() { int age 0; scanf(%d, age); if(age18) printf(成年\n); else printf(未成年\n); return 0; }3.多分支嵌套 if-else if-else用于多重条件判断示例年龄分段判断#include stdio.h int main() { int age 0; scanf(%d, age); if(age18) printf(少年\n); else if(age44) printf(青年\n); else if(age59) printf(中老年\n); else if(age89) printf(老年\n); else printf(老寿星\n); return 0; }4.避坑指南悬空 else 问题else 默认与最近的 if 匹配而非视觉对齐的 if需用大括号明确代码块// 错误示范else与第二个if匹配 if(a 1) if(b 2) printf(hehe\n); else printf(haha\n); // 正确示范用大括号明确匹配关系 if(a 1) { if(b 2) printf(hehe\n); } else printf(haha\n);二switch 语句多值匹配的高效选择switch 语句适用于 “表达式为整型、多值判断” 场景比嵌套 if 更简洁。核心语法switch (整型表达式) { case 常量值1: 语句1; break; case 常量值2: 语句2; break; default: 语句3; break; }2.关键注意点case 后必须是整型常量break 用于跳出 switch否则会 “穿透执行”default 可处理所有不匹配的情况位置不固定但通常放最后。示例根据数字输出星期几#include stdio.h int main() { int day 0; scanf(%d, day); switch(day) { case 1: printf(星期一\n); break; case 2: printf(星期二\n); break; case 3: printf(星期三\n); break; case 4: printf(星期四\n); break; case 5: printf(星期五\n); break; case 6: printf(星期六\n); break; case 7: printf(星期天\n); break; default: printf(输入错误\n); break; } return 0; }三、支撑分支的核心运算符一关系运算符比较大小的 “工具”共 6 种、、、、相等、!不相等返回值为 0假或 1真。避坑勿混淆与赋值运算符建议将常量写在左侧如3 x避免误写为x 3。二逻辑运算符组合条件的 “桥梁”逻辑与两侧都为真才为真左侧为假时右侧短路||逻辑或至少一侧为真就为真左侧为真时右侧短路!逻辑非反转条件真假0 变 1非 0 变 0。示例判断闰年能被 4 整除且不被 100 整除或能被 400 整除#include stdio.h int main() { int year 0; scanf(%d, year); if((year%40 year%100!0) || (year%4000)) printf(是闰年\n); return 0; }三条件运算符简洁的三目表达式语法exp1 ? exp2 : exp3exp1 为真则执行 exp2否则执行 exp3示例找两个数的较大值#include stdio.h int main() { int a0, b0; scanf(%d %d, a, b); int m ab ? a : b; printf(较大值%d\n, m); return 0; }四、循环结构让程序 “重复工作”一while 循环先判断后执行语法while (表达式) { 循环体; }表达式为真时重复执行循环体。示例打印 1~10#include stdio.h int main() { int i 1; while(i10) { printf(%d , i); i; } return 0; }二for 循环最常用的循环语法语法for(表达式1; 表达式2; 表达式3) { 循环体; }表达式 1初始化循环变量仅执行 1 次表达式 2循环条件判断为真则执行循环体表达式 3循环变量调整。示例计算 1~100 中 3 的倍数之和#include stdio.h int main() { int sum 0; for(int i3; i100; i3) sum i; printf(总和%d\n, sum); return 0; }三do-while 循环先执行后判断语法do { 循环体; } while (表达式);循环体至少执行 1 次。示例统计正整数的位数#include stdio.h int main() { int n 0, cnt 0; scanf(%d, n); do { cnt; n / 10; } while (n); printf(位数%d\n, cnt); return 0; }四循环控制break 与 continuebreak立即终止当前循环跳出循环体continue跳过本次循环后续代码直接进入下一次判断。五、循环嵌套与 goto 语句一循环嵌套解决复杂重复逻辑示例打印 100~200 之间的素数#include stdio.h int main() { for(int i100; i200; i) { int flag 1; // 假设是素数 for(int j2; ji; j) { if(i%j 0) { flag 0; break; } } if(flag 1) printf(%d , i); } return 0; }二goto 语句谨慎使用的跳转工具goto 可在函数内跳转至指定标号适用于多层循环快速退出但滥用会破坏程序结构#include stdio.h int main() { for(;;) for(;;) if(/* 异常条件 */) goto error; // 直接跳出所有循环 error: printf(异常退出\n); return 0; }总结分支与循环是 C 语言结构化编程的基石if/switch 语句实现 “选择逻辑”while/for/do-while 实现 “重复逻辑”配合关系、逻辑运算符可构建复杂程序。掌握大括号的使用、避免悬空 else、理解 break 与 continue 的差异能大幅提升代码可读性与正确性。下一篇将通过实战案例猜数字游戏带你巩固分支与循环的综合应用