C语言基础:分支结构(条件判断 & 用if语句实现分支结构)
创作时间:
作者:
@小白创作中心
C语言基础:分支结构(条件判断 & 用if语句实现分支结构)
引用
CSDN
1.
https://m.blog.csdn.net/2402_88621999/article/details/145702356
本文将详细介绍C语言中的分支结构,包括条件判断、关系运算、逻辑运算以及使用if语句实现的单分支、双分支和多分支结构。通过详细的理论解释和多个代码案例,帮助读者理解如何在C语言中实现分支结构。
分支结构
在程序设计中,我们经常会遇到需要根据某个条件的结果来选择下一步操作的情况。例如,下面的函数计算:
$$
y = \begin{cases}
1/x & \text{当 } x \neq 0 \
10000 & \text{当 } x = 0
\end{cases}
$$
这种算法上的分支结构在C语言中主要通过if语句来实现。
条件判断
条件判断是根据某个条件成立与否,决定是否执行指定的任务(操作)。条件判断的结果是逻辑值(布尔类型值),在程序中用真(1)和假(0)来表示。
关系运算及其表达式
关系运算符及其优先级次序
C语言中提供了6种关系运算符:
在C语言中,用1(非0)表示关系表达式的值为真(条件成立),0表示关系表达式的值为假(条件不成立)。
逻辑运算及其表达式
逻辑运算符及其优先级
C语言中提供了3种逻辑运算符:
- 逻辑非(!)
- 逻辑与(&&)
- 逻辑或(||)
逻辑表达式中各种运算符的优先级顺序如下:
- 逻辑非(!)
- 算术运算符(+、-、*、/、%)
- 关系运算符(>、<、>=、<=、==、!=)
- 逻辑与(&&)
- 逻辑或(||)
- 赋值运算符(=、+=、-=、/=、%=)
用if语句实现分支结构
单分支:if
语法:
// 语法1:可以舍弃{}
if (条件表达式)
单语句;
// 语法2:必须保留{}
if(条件表达式)
{
单语句或者复合语句;
}
功能:
- 若表达式值为真(非0),则执行表达式后面的语句,执行完该语句后继续执行if语句后的代码。
- 若表达式值为假(0),则不执行表达式后面的语句而直接执行if语句后面的语句。
案例
计算并输出下列分段函数的值:
$$
y = \begin{cases}
-2 & \text{当 } x < 0 \
2 & \text{当 } x \geq 0
\end{cases}
$$
代码:
#include <stdio.h>
int main(int argc, char *argv[])
{
double x, y = -2;
printf("请输入一个数,作为x的值:\n");
scanf("%lf", &x);
if (x >= 0) y = 2;
printf("x=%lf,y=%lf\n", x, y);
return 0;
}
双分支:if...else
语法:
// 语法1:舍弃{}
if(条件表达式)
单语句1;
else
单语句2;
// 语法2:保留{}
if(条件表达式)
{
单语句1或者复合语句1;
}
else
{
单语句2或者复合语句2;
}
功能:
- 若表达式的值为1,则执行语句1;否则执行语句2。
- 不管条件表达式成不成立都要执行一个语句。
- 语句1和语句2都可以是单语句或者复合语句。
案例
计算并输出下列分段函数的值:
$$
y = \begin{cases}
-2 & \text{当 } x < 0 \
2 & \text{当 } x \geq 0
\end{cases}
$$
代码:
#include <stdio.h>
int main(int argc, char *argv[])
{
int x, y;
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[])
{
int x, y;
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) 语句1;
else
if (表达式2) 语句2;
else
...
else
if (表达式n) 语句n;
else 语句n+1;
// 写法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>
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");
}
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语句的嵌套
语法:
if(..)
if(..) 语句1;
else 语句2;
else
if(..) 语句3;
else 语句4;
注意:
- else总是与前面最近的未配对的if配对使用
- 可通过增加{}来确定配对关系
- 只要if中包含if,都属于是if语句的嵌套
案例
#include <stdio.h>
int if_test1()
{
int score;
printf("请输入一个整数:\n");
scanf("%d", &score);
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");
}
}
}
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
热门推荐
脂溢性皮炎用什么洗发水
从《清明上河图》看北宋歇山顶的流行
固态硬盘怎么安装?详细安装教程来了!
如何把项目文档整理成册
微信上被骗钱,如何有效应对?
债券指数知多少:分类、作用与投资指南
公务员也有“工作服”,6部门开始统一,网友表示羡慕!
口气清新茶有哪些?这8道茶饮,帮助口气清新!
长期口臭喝什么茶效果好
午时茶能不能长期喝?专家解读饮用注意事项
下雨天如何安全驾驶
雨天湿滑路面如何更加安全驾驶?
前端如何跳转文件夹里面
文件夹管理器:如何高效组织和管理你的文件?
模具设计一般用什么软件最好啊
女生有喉结是甲状腺出现了问题吗
吃蚕蛹为什么过敏呢
PMP认证的有效期及续期流程详解
告别低效:10款时间管理软件让你成为时间的主人
MBTI:人格评估工具的原理、作用、批评、价值及相关思考
天津15大特色美食:从煎饼果子到狗不理包子,每一道都藏着天津人的智慧
中医:怕冷,阳虚调理难?一篇文章教会你阳虚调理思路!
JS eval函数的替代方案
GTA5联机失败怎么办?三种实用解决方案帮你轻松联机
我国七大水系及其水利部派出机构管理范围详解
红果短剧如何获得授权
李白《立冬》诗赏析:霜重水冷雁南归,正是梧桐叶落时
Excel导出清晰PDF文件的完整指南
海参蒸蛋制作教程:鲜嫩又营养,简单几步就能做出美味佳肴
数据治理专家岗位的能力模型