C语言分支循环语句(上-分支) 为什么需要分支语句 想象一下你出门前要看天气如果下雨就带伞如果没下雨就不带。程序也是一样它不能只会“一条路走到黑”必须学会根据情况做决定。这就是分支语句的作用。if 语句1. 语法①单语句if包含的是下一语句如果要执行多条语句就需用到{},如②if(条件)条件成立时执行的语句②多语句(当然单语句也可{}起来)if(条件){语句1语句2------}2.判断条件在 C 语言中判断条件的依据非常简单粗暴0代表假。非 0比如 1, -5, 100都代表真。只要括号里的表达式计算结果不是 0程序就会执行对应的代码。示例判断一个数是否为正数。intn85;//n -4 就打印不了正数if(n0){printf(正数\n);}else与if连着用语法①(二选一)if(条件){语句// 条件成立}else{语句// 条件不成立}示例判断奇偶数。intn9;if(n%20){printf(偶数\n);}else{printf(奇数\n);}② 多选一if(条件){语句}elseif(条件){语句}else----示例成绩等级判断。intscore75;if(score90){printf(优秀\n);}elseif(score80){printf(良好\n);}elseif(score60){printf(及格\n);}else7③ 嵌套 if条件里套条件intmain(){inta0;intb2;if(a1)if(b2)printf(hehe\n);elseprintf(haha\n);return0;}上面代码不打印,因为else总是与接近的if匹配,if(a 1)不与else匹配,if(b 2)与else匹配。“易错点”漏写大括号{}如果if后面只有一行代码可以省略{}。但为了养成好习惯**建议永远加上{}。错误示范混淆和这是最经典的 Bug。是赋值才是判断相等。错误示范if (num 5)这把 num 变成了 5且条件永远为真。正确写法if (num 5)。(可以写成if (5 num),因为如果错写成if (5 num)系统会报错,错写成if (num 5)会把5赋值给num而不会报错,这样写更容易找到错误)在if后面加分号if (a b);这行代码意味着如果 ab则执行“空语句”什么都不做然后程序继续往下走。这会导致后面的代码块失去判断作用。switch 语句如果说if-else是一条蜿蜒曲折的乡间小路允许你在任何地方拐弯那么switch就是一座拥有多个出口的高速立交桥。当你面临“多选一”的局面且选项都是明确的整数值时switch往往比一连串繁琐的else if更加优雅、高效。1. 语法switch(表达式){case常量1:// 代码块1break;case常量2:// 代码块2break;// ... 可以有任意数量的 casedefault:// 如果上面的 case 都不匹配执行这里}①break(switch 具有“穿透性”,需要break停止代码)一旦程序找到了匹配的case它就会进入并执行代码。但是如果没有遇到break程序不会在下一个case处停止而是会无视条件继续向下执行下一个case的代码直到遇到break或者 switch 结束。如:intday1;switch(day){case1:printf(星期一\n);// 忘记写 break 了case2:printf(星期二\n);}// 输出结果// 星期一// 星期二intday1;switch(day){case1:printf(星期一\n);break;// 遇到 break跳出整个 switchcase2:printf(星期二\n);break;default:printf(输入错误\n);}// 输出结果// 星期一②表达式通常是一个变量C语言中要求必须是整数类型char,short,int,long,enum等。注意不能是浮点数float/double或字符串。③case后面必须跟一个常量具体的数如1、a不能是变量。④default相当于else当所有 case 都不匹配时执行。2. 巧妙利用“穿透性”合并选项有时候穿透不是 Bug而是特性。比如我们要判断周末intday6;// 假设 6 是周六7 是周日switch(day){case6:case7:printf(今天是周末好好休息\n);break;// 6 和 7 共用这一段代码default:printf(今天是工作日加油搬砖\n);}这里当day是 6 时没有代码执行也没有 break直接穿透到 case 7 的代码块执行非常巧妙。什么时候用 if什么时候用 switch这是一个面试常问的问题记住这个原则用 switch当你的条件是离散的整数值比如菜单选项、星期几、成绩等级 A/B/C时switch 结构更清晰。用 if-else当你的条件是范围判断比如score 60、浮点数比较、或者复杂的逻辑组合比如a 5 b 10时只能用 if-else。