栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

分支结构,你会了吗?(五千字超详细教程,带你快速复习)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

分支结构,你会了吗?(五千字超详细教程,带你快速复习)

本章目录
每篇前言
1.导语 2.目标 3.知识点

1,运算符or表达式
      1.1,关系运算符和关系表达式
         1.1.1,关系运算符
         1.1.2,关系表达式
         1.1.3,关系运算实例
      1.2,逻辑运算符和逻辑表达式
         1.2.1, 逻辑运算符
         1.2.2,逻辑表达式
         1.2.3,逻辑运算实例
      1.3,条件运算符和条件表达式
         1.3.1, 条件运算符
         1.3.2,条件表达式
         1.3.3,条件运算实例
2,if-else实现分支结构
      2.1,if-else语句
         2.1.1,单分支if语句
         2.1.2,双分支if分支语句
         2.1.3,多分支if语句
      2.2,if语句的嵌套
3,switch实现分支结构
     3.1,全部语句后加break
     3.2.部分语句加break
     3.3. default子句

4.结语
每篇前言

博客主页:小杨爱编程☆

作者简介:2022年博客萌新

作者专栏:小杨带你玩转C语言

作者格言:有志者立长志,无志者常立志!

作者请求:由于博主水平有限,难免会有错误和不准之处,希望各位小伙伴能够在留言区批评斧正。


导语

小杨把C语言中的分支结构做了一个总结,希望在方便自己复习的同时也能够帮助到大家。希望大家真的能够从中收获到很多,并巩固知识!


目标

了解和掌握C语言的分支结构知识,对分支结构有全新的认识和理解。


知识点
1,运算符or表达式 1.1,关系运算符和关系表达式 1.1.1,关系运算符

关系运算符:常用于判断两个操作数的大小关系

运算符运算符释
>大于
>=大于等于
<小于
<=小于等于
==等于
!=不等于

注意:

(1)关系运算符都是双目运算符,其结合方式是向左结合。

(2)关系运算符的优先级低于算术运算符,但高于赋值运算符。

(3)关系运算符中,< ,>,<=,>=的优先级相同,==,!=的优先级相同,前者的优先级高于后者的。


1.1.2,关系表达式

关系表达式:用关系运算符将两个表达式连接起来的表达式。

1,格式:表达式1 关系运算符 表达式2

2,功能:比较两个表达式的大小,返回一个逻辑值

3,关系表达式中允许出现嵌套的情况

​ 示例:“a>(b>c)” “a!=(c==b)”

注意:

(1)注意区分运算符“ = ”与“ == ”。"=“为赋值运算符,”=="则为关系运算符。

(2)对实数进行相等判断可能得不到正确结果,例如:"1.0/3*3.0==1"的结果是1。

(3)关系表达式中可以出现赋值运算符,如:a>(b=0),但不能写成"a>b=0"的形式。

(4)关系表达式主要用于分支结构中的条件判断。关系表达式的结果是一个逻辑值"真"(1)和"假"(0)。


1.1.3,关系运算实例

实例代码:

//关系运算
#include 
int main()
{
	char c = 'm';
	int i = 10;
	int j = 20;
	int k = 30;
	float x = 13e+5;
	float y = 10.85;
	printf("%d %dn", '5' + 5 < c, -i - 2 * j >= k + 1);
	printf("%d %dn", i < j < 5, x - 2.22 <= x + y);
	printf("%d %dn", i + j + k == -2, k == j == i + 5);
	return 0;
}

输出结果:


1.2,逻辑运算符和逻辑表达式 1.2.1,逻辑运算符

逻辑运算符:将若干个关系表达式连接起来描述某一关系。

运算符名称结合性优先级
逻辑非右结合
&&逻辑与左结合
||逻辑或左结合

注意:

  • 非运算符!是单目运算符
  • 与运算符&&和或运算符||都是双目运算符。

1.2.2,逻辑表达式

逻辑表达式:用逻辑运算符将两个表达式连接起来的式子。

  • 格式:表达式1 逻辑运算符 表达式2 或者 逻辑运算符 表达式1
  • 逻辑表达式的结果是一个逻辑值"真"或"假",即为"1"或"0"。
  • 逻辑运算的真假值示意图:
xy!xx&&yx||y
00100
0非0101
非00001
非0非0011

  注意:

  • 参与逻辑运算的数据可以是1和0,也可以是非零值和0,还可以是任何类型的数据类型,但最终都是以非0和0来判断真假。
  • 在逻辑表达式中可以用赋值运算符,如"a&&(b=0)",但不能写成"a&&b=0"的形式,若写成,该表达式则相当于(a&&b)=0,程序报错。
  • C语言规定:只对决定整个表达式值所需要的最少数目的子表达式进行运算。(即:在逻辑表达式中,从左向右进行计算,当计算出一个子表达式的值就确定整个逻辑表达式的值,就不需要计算右边剩余的子表达式的值,这种情况也被称为”短路“。)
    • 对于逻辑与 (&&)运算,若”&&“左边的表达式的值为假,则可以得出整个表达式的值为假,那么"&&"右边的就不需要计算;只有当左边表达式为真时,才需要计算右边表达式的值。
    • 对于逻辑或(||)运算,若”||“左边的表达式的值为真,则可以得出整个表达式的值为真,那么"||"右边的就不需要计算;只有当左边表达式为假时,才需要计算右边表达式的值。

各种运算符的优先级列表:

运算符结合性优先级
右结合
算术运算符左结合较高
关系运算符左结合
&&和||左结合较低
赋值运算符右结合

1.2.3,逻辑运算实例

实例代码:

//逻辑运算
#include
int main()
{
	int a = 3;
	int b = 3;
	int c = 2;
	printf("%dn", !a && !b && c);// 0&&0&&2
	printf("%dn", !a || !b || c);// 0||0||2
	printf("%dn", a >= b && b > c);// 1&&1
	int d = c-- || (b = 6) && a++;// c=1||1
	printf("a=%d b=%d c=%d d=%d",a,b,c,d);
	return 0;
}

代码输出:


1.3,条件运算符和条件表达式 1.3.1,条件运算符

条件运算符:由"?“和”:"两个符号组成,用于条件求值。

  • 条件运算符为三目运算符,需要三个操作数。
  • 条件运算符的优先级低于逻辑运算符却高于赋值运算符,结合性为右结合。

1.3.2,条件表达式

条件表达式:由条件运算符将3个表达式连接起来的式子。

  • 格式:表达式1?表达式2:表达式3
  • 分析:条件表达式的执行流程为先计算表达式1的值,若值为非0,表示条件为真,则将表达式2的值作为整个条件表达式的值,否则将表达式3的值作为整个条件表达式的值。

  注意:

1. 条件表达式中表达式1的类型可以与表达式2和表达式3不同,表达式2和表达式3的类型也可以不同,此时系统会自动转换,结果为表达式2和表达式3中级别类型较高的,并将其作为条件表达式的类型。
2. 条件表达式中表达式2和表达式3不仅可以是数值表达式也可以是赋值表达式或者是函数表达式。
3. 条件表达式中允许嵌套。


1.3.3,条件运算实例

实例代码:

//条件运算
#include
int main()
{
	int a = 0;
	int b = 0;
	printf("请输入两个整数:");
	scanf("%d %d", &a, &b);
	printf("两个数的最大数:%d", a > b ? a : b);
	return 0;
}

代码输出:


由此返回目录

2,if - else 实现分支结构 2.1,if - else语句 2.1.1, 单分支if语句
  • 格式:

  • 单分支if语句流程图:


单分支if语句实例:

//单分支if语句
#include
int main()
{
	float x = 0.0f;
	scanf("%f", &x);
	if (x < 0)
	{
		x = -x;
	}
	printf("%.2f", x);
	return 0;
}

代码输出:


2.2.2,双分支if 语句
  • 格式:

  • 双分支if语句流程图:


双分支if实例:

//双分支if语句
#include
int main()
{
	int a = 0;
	int b = 0;
	printf("请输入两个整数:");
	scanf("%d %d", &a, &b);
	if (a > b)
		printf("两个整数中的最大值为:%dn", a);
	else 
		printf("两个整数中的最大值为:%dn", b);
	return 0;
}

实例输出


2.2.3,多分支if语句
  • 格式:

  • if多分支语句的流程图:


多分支if语句实例:

//多分支if语句
#include 
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("少年n");
	}
	else if (age >= 18 && age < 30)
	{
		printf("青年n");
	}
	else if (age >= 30 && age < 50)
	{

		printf("中年n");
	}
	else if (age >= 50 && age < 80)
	{
		printf("老年n");
	}
	else
	{
		printf("老寿星n");
	}
	return 0;
}

实例输出:


2.2,if语句的嵌套
  • 格式:

  • if语句嵌套执行流程图:


if嵌套执行实例:

//if语句嵌套
#include
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	int max = 0;
	scanf("%d %d %d", &a, &b, &c);
	if (a > b)
	{
		if (a > c)
		{
			max = a;
		}
		else
		{
			max = c;
		}
	}
	else
	{
		if (b > c)
		{
			max = b;
		}
		else
		{
			max = c;
		}
	}
	printf("Max=%d", max);
	return 0;
}

实例输出:


由此返回目录

3,switch 实现分支结构
  • switch多分支执行流程图:

注意:

1,switch后的表达式可以是任何表达式,其值只能为整型,字符型,枚举型之一。
2,每个case后面的常量表达式的值互不相同,否则就会出现相互矛盾的现象。
3,各个case和default的出现次序不影响执行结果。
4,可以让多个case共用一组执行语句。
5,switch语句允许嵌套使用。


3.1,全部语句后加break

实例:

//switch语句
#include 
int main()
{
    int day = 0;
    switch(day)
   {
        case 1:
            printf("星期一n");
            break;
        case 2:
            printf("星期二n");
            break;
        case 3:
            printf("星期三n");
            break;    
        case 4:
            printf("星期四n");
            break;    
        case 5:
            printf("星期五n");
            break;
        case 6:
            printf("星期六n");
            break;
        case 7:
            printf("星期天n");    
            break;
      	default:
			printf("输入错误n");
			break;      
   }
    return 0; }

实例输出:


3.2,部分语句后加break

实例:

//switch语句
#include
int main()
{
	int day =0;
	scanf("%d", &day);
	switch (day)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("工作日n");
		break;
	case 6:
	case 7:
		printf("休息日n");
		break;
	default:
		printf("输入错误n");
		break;
	}
	return 0;
}

实例输出:


3.3,default子句
  • 写在任何一个 case 标签可以出现的位置。
  • 当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。
  • 每个switch语句中只能出现一条default子句。
  • 可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。

由此返回目录

结语

各位小伙伴们,分支结构就介绍到这里,下期给各位小伙伴们总结循环结构内容。敬请期待!!!

如果各位小伙伴们感觉写的不错,或者阅读后有些许收获的话,麻烦小伙伴们动动你们的小手,给个三连呗(✌关注,✌点赞,✌评论),多多支持一下!!
小伙伴们,切记!这些示例代码一定要记得自己实际操作一下,这样才能加深对这些知识的理解!

最后,感谢每一位小伙伴的阅读,让我们一起努力,一起加油,一起进步!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/887647.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号