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
热门推荐
迪丽热巴、尼格买提、叶赫那拉……少数民族的名字到底啥意思?
无锡太湖学院是公办还是民办大学?
内分泌紊乱症状及检查方法全解析
因感情问题离婚财产怎么分
劳动工资争议的解决路径与法律保障
真三国无双系列中,最好玩的是哪部作品?
大拇脚趾甲内污垢好臭?医生教你7步轻松解决
宋江为何三打祝家庄?——从水浒传看梁山好汉的恩怨情仇
世界瞬息万变,你的知识“更新”了吗?
金字塔买法:正金字塔与倒金字塔的投资策略详解
【科普】洗菜有技巧,不同蔬菜这样洗干净又放心!
古人为何重视嫡长子继承制,这要从西周宗法谈起
铜价暴涨的原因是什么?如何应对铜价波动带来的投资风险?
怎样提升电动车用户使用充电桩的安全意识
万宁旅游景点全解析:必去的自然风光与文化胜地
will是什么词 有哪些用法
菊粉可以长期服用吗?菊粉的正确服用方法全解析
登高望远,杜甫的人文情怀与诗歌艺术
破解技术:深入探讨密码学原理与算法
光学指纹与超声波指纹:谁更胜一筹?
电热毯:工作原理、使用方法及安全注意事项
自动化科学技术的发展史
终南文化的创造性转化:需要全社会的共同努力和智慧
男生最基本的护肤产品种类
柴胡桂枝汤原文用法用量与原方组成注解
婚礼花墙布置:打造浪漫氛围的美丽背景
电动车与机动车相撞后的处理指南
健脾、除湿、补气的“千古良方”,四味中药,还你一个健康的脾胃
政策解读:详解三支一扶服务期内考公务员的注意事项
老年人吃什么对血管好!对心脏好