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
热门推荐
农村妇女在家干什么活挣钱?轻松赚钱的项目分享
闪电与雷声的奥秘:为何总是先见光后听声?
含氟牙膏的主要作用是什么?预防蛀牙保护牙齿,大人小孩都能用
水饮市场呈健康化趋势,专家教你如何选择饮用水
小麦药剂拌种的注意事项:确保健康生长的关键步骤
两部手机能把工作生活分开吗?
怀疑得了甲亢,需要做哪些检查?
“不吃早餐危害大”有科学依据吗?研究人员这样说
线性代数:初等变换与初等矩阵
揭秘儿童夜惊症:科学应对有妙招
如何用AI提升工业设计效率?让设计更智能更有趣!
手术后十大禁忌发物(术后不能食用饮食清单参考)
人民日报全国党媒信息公共平台:“平台+智库”为行业深度融合发展赋能
海钓四大要素:时机、位置、鱼饵与逗钓技巧详解
自闭症儿童如厕技能训练的前提和阶段:帮助自闭症儿童逐渐掌握如厕技能
胃部“逆行者”——浅谈胃食管反流病
韩国登腾纯钛种植牙质量怎么样?五年使用体验告诉你答案
手机电池寿命的秘密:如何延长你的设备续航
法律沟通是什么?从概念到技巧的全面解析
含笑花——幸福与希望的象征(用微笑开启美好生活的钥匙)
俄罗斯方块大揭秘:掌握这些技巧,享受游戏乐趣,轻松提升胜率!
欧阳修笔下的田园之乐:《归田园四时乐春夏二首(其二)》赏析
世界睡眠日:健康睡眠 远离“困”扰
汽车玻璃膜撕除攻略:步骤、工具与注意事项
牛沉大海蛇太子与三个生肖随从马羊鸡的象征意义及全面解释落实
美国人早餐吃什么?从经典到健康,一文详解美式早餐文化
近年来自动驾驶行业就业与企业需求情况
无尽夏日,被这波绣球硬控了
人最大的劣根性:笑人无,恨人有,嫌人穷,怨人富
项目文件夹如何分类管理