Linux基础25-C语言之分支结构Ⅱ【入门级】
- 创业
- 2025-08-27 12:21:02

用if语句实现分支结构 单分支:if…
语法:
//语法1:舍弃{} if(条件表达式); 单语句; //语法2:必须保留{} if(条件表达式) { 单语句或者复合语句; }流程图
功能
若表达式值为真(非0),则执行表达式后面的语句,执行完该语句后继续执行if语句后的代码。若表达式值为假(0)则不执行表达式后面的语句而直接执行if后面的语句。说明:
如果表达式后面的是复合语句,则要用一对花括号{}括起来,单语句可有可无。案例:
要求:计算并输出下列分段函数的值:
流程图:
代码:
#include <stdio.h> int main(int argc,char *argv[]) { // 创建两个变量,用来存储两个操作数 double x,y = -2; // 从控制台输入x printf("请输入一个数,作为x的值:\n"); scanf("%lf",&x); // 校验 if (x >= 0) y = 2; printf("x=%lf,y=%lf\n",x,y); return 0; }运行结果:
案例:
需求:有a,b,c三个数,要求从控制台输入,并求出最大值
分析:
1.通过控制台输入a,b,c的值
2.创建一个变量max,用来存放a,b,c中得最大值,默认a是最大值(这样可以减少一次判断)
3.让b,c和max进行比较,将最大值存入max
代码:
#include <stdio.h> int main(int argc,char *argv[]) { // 创建四个变量a,b,c,max int a,b,c,max; // 通过键盘录入数据给a,b,c printf("请输入三个整数:\n"); scanf("%d%d%d",&a,&b,&c); // 默认a是最大值 max = a; // 让最大值分别和b和c比较 if (max < b) max = b; // b是a,b中的最大值 if (max < c) max = c; // 其实就是a,b中的最大值和c比较,得到三者中的最大值 printf("%d,%d,%d中的最大值是%d\n",a,b,c,max); return 0; }运行结果:
有可能产生的问题:
①scanf()同时输入多个变量时,默认使用空格、tab、回车键进行区分。
②在变量赋值前使用变量,导致运算结果错误(变量为赋值,系统会给变量分配随机数)
双分支if…else…语法:
//语法1:舍弃{} if(表达式) 单语句1; else 单语句2; //语法2:保留{} if(条件表达式) { 单语句1或者复合语句1; } else { 单语句2或者复合语句2; }注意:else语句本身不能单独使用,必须和if配合使用
流程图:
功能:
若表达式的值为1,则执行语句1;否则执行语句2。不管条件表达式成不成立都需要执行一个语句,其次需要注意的是,语句1和语句2都可以是单语句或者复合语句。
说明:
if…else…结构可以实现双分支选择结构。C语言允许if…else…结构嵌套。即在语句1与语句2中有可以包含完整的if语句或者if…else…结构,并且这种嵌套可以多层(为了保证程序的执行效率,建议不超过4层)。利用if…else…结构的嵌套,可以实现多分支选择结构
案例:
需求:计算并输出下列分段函数的值:流程图
代码:
#include <stdio.h> int main(int argc,char *argv[]) { // 创建两个变量存储x,y int x,y; // 通过键盘录入x printf("请输入一个整数:\n"); scanf("%d",&x); // 校验 if (x < 0) y = -2; else y = 2; // 打印输出测试结果 printf("x=%d,y=%d\n",x,y); return 0; }运行结果:
注意:对于单语句的双分支,我们可以使用三目(三元)运算符的写法简化
三目运算符语法:
表达式1?表达式2:表达式3;说明:
①如果表达式1的结果为真,就执行表达式2,否则就执行表达式3
②三目运算符的写法实际上就是单语句的双分支语句的缩略写法
案例:
需求:将上面双分支的案例改造为三目运算符得写法
代码:
#include <stdio.h> int main(int argc,char *argv[]) { // 创建两个变量存储x,y int x,y; // 通过键盘录入x printf("请输入一个整数:\n"); scanf("%d",&x); // 校验 y = x < 0 ? -2 : 2; // 打印输出测试结果 printf("x=%d,y=%d\n",x,y); return 0; }运行结果:
多分支:if…else if…else语法:
//写法1:嵌套if...else(不推荐) if(表达式)语句1; else if(表达式2)语句2; else ... else if(表达式n)语句n; else 语句; //写法2:并列if...else if...else...(推荐) if(表达式1)语句1; else if(表达式2)语句2; ... [else if(表达式n)语句n;] [else 语句n+1;]//else是可选的,写不写由我们的最终需求决定流程图:
注意:多分支中,同一时刻只能满足一个分支。
案例:
需求:根据学生得成绩,对学生进行分级:
成绩>=90 A成绩>=80 B成绩>=60 C成绩<60 D代码:
#include <stdio.h> // 方式1:借助于执行顺序,减少判断条件 int if_test1() { // 创建一个变量,用来存储输入的成绩 int score; // 通过键盘录入成绩 printf("请输入一个整数:\n"); scanf("%d",&score); // 校验 if (score >= 90) printf("A\n"); else if (score >= 80) printf("B\n"); else if (score >= 60) printf("C\n"); else printf("D\n"); } // 方式2:不借助执行顺序,做更精确的判断 int if_test2() { // 创建一个变量,用来存储输入的成绩 int score; // 通过键盘录入成绩 printf("请输入一个整数:\n"); scanf("%d",&score); // 校验 if (score >= 60 && score < 80) printf("C\n"); else if (score >= 80 && score < 90) printf("B\n"); else if (score >= 90) printf("A\n"); else printf("D\n"); } int main(int argc,char *argv[]) { if_test1(); if_test2(); return 0; } if…else结构注意点if…else结构中的语句1和语句2都可以是复合语句。
在if…else结构中,语句1和语句2都可以是空语句。
if语句的嵌套语法:
if (..) if (..) 语句1; else 语句2; else if (..) 语句3; else 语句4;流程图:
注意:
①else总是与前面最近的未配对的if配对使用
②可通过增加{}来确定配对关系
③只要if中包含if,都属于是if语句的嵌套
案例:
#include <stdio.h> // 方式1:借助于执行顺序,减少判断的条件 int if_test1() { // 创建一个变量,用来存放输入的成绩 int score; // 通过控制台输入一个成绩 printf("请输入一个整数:\n"); scanf("%d",&score); // 校验,分级 95 if(score < 0 || score > 100) { printf("您的输入不合法!\n"); } else { if(score >= 90) { printf("A\n"); } else if(score >= 80) { printf("B\n"); } else if(score >= 60) { printf("C\n"); } else { printf("D\n"); } } } // 方式2:不借助于执行顺序,做更精准的判断 int if_test2() { // 创建一个变量,用来存放输入的成绩 int score; // 通过控制台输入一个成绩 printf("请输入一个整数:\n"); scanf("%d",&score); // 校验,分级 if(score < 0 || score > 100) { printf("您的输入不合法!\n"); } else if(score >= 60 && score < 80) { printf("C\n"); } else if(score >= 80 && score < 90) { printf("B\n"); } else if(score >= 90) { printf("A\n"); } else { printf("D\n"); } } int if_test3() { // 需求:判断一个数是奇数还是偶数 int num; printf("请输入一个整数:\n"); scanf("%d",&num); // 校验 if(num == 0) { printf("0既不是偶数也不是奇数!"); } else { if(num % 2 == 0) { printf("%d是偶数!\n",num); } else { printf("%d是奇数!\n",num); } } } int main(int argc,char *argv[]) { if_test1(); if_test2(); if_test3(); return 0; }小贴士:
如何拆出一个三位数中的每一位:
实现:123,
个位:123%10=3
十位:123%100/10=2
百位:123/100=1
经典面试题:求水仙花数
解释:一个n位数的各个数字的n次方等于这个数本身,符合这种规则的数叫做水仙花数
Linux基础25-C语言之分支结构Ⅱ【入门级】由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Linux基础25-C语言之分支结构Ⅱ【入门级】”