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
热门推荐
端午节假期:带着256G胃出发,贵州行美食美景导航
习惯的力量:看心理学家如何科学养成与改变习惯
为什么习惯总是难以坚持? 4 个步骤让你轻松建立新习惯
手机热点玩LOL,如何确保网络稳定与低延迟?
实地走访“宽带边疆”:5G网络如何重塑新疆人的生产生活?
手掌外侧出现麻木的原因是什么
小苏打去黑色染发剂:轻松恢复自然发色
紫云英与紫花苜蓿的区别
担保在什么情况下无效?有效期又是多久?
消防员的角色与职责
胃癌常用化疗及靶向药物一文整理!
锅炉原理、锅炉结构与流程
企业人才评估体系:评价中心与人才盘点的实践指南
煤矿工人工伤保险怎么买
“开学季”校园安全高频风险预警研究报告
秦都区教育局:强化师生安全意识 提高防范自救能力
经典爱情名句
决策树算法优化的常见方法有哪些?
命令与征服(红色警戒)自爆卡车的机制与应用
如何分析C语言程序的组成元素
《渔舟唱晚》:一首流传百年的古筝名曲
排水科普:雨水和生活污水如何"各行其道"?
“石头门前放,人旺财也旺”,究竟是什么石头?如何摆放?
派出所办案程序是怎样的?
帝俊为什么是妖皇?有什么方面的原因?
增程式电动车是什么意思?增程式电动汽车优缺点
Science Advances丨生酮饮食的双刃剑:减肥也能加速衰老?
专利的类型有哪些?企业如何申请发明专利,需满足哪些条件?
企业如何判断发明创造适合申请哪类专利?
六盘水茶叶品种综述:了解六盘水地区各种茶叶的特点、产地和冲泡方法