C语言——选择结构

news2024/11/17 0:25:28

C语言——选择结构

  • 关系运算符及关系表达式
    • 关系运算符
    • 关系表达式
  • 逻辑运算符和逻辑表达式
    • 逻辑运算符
    • 逻辑表达式
  • 选择语句
    • if语句
    • 条件运算符
    • switch case语句

关系运算符及关系表达式

关系运算符

关系运算实际上是比较运算,C语言提供了六种关系运算符分别为:
在这里插入图片描述
这六种关系运算符的优先级:
(1) 种关系运算符(<,<=,>,>=)的优先级别相同,后 种也相同。前4高于后2种。例如,“>“优先于”==”。而">“与”<"优先级相同。
(2) 关系运算符的优先级低于算术运算符。
(3) 关系运算符的优先级高于赋值运算符。

关系表达式

关系表达式的定义:
用关系运算符将两个表达式(可以是算术表达式或关系表达式、逻辑表达式、赋值表达式、字符表达式)连接起来的式子 称关系表达式。
例如:a > b,(a + b) > (c + d),‘a’ < ‘b’,等等。

逻辑运算符和逻辑表达式

逻辑运算符

C语言提供种逻辑运算符:
(1) &&逻辑与,一假则假,同真才真;
(2) ||逻辑或,一真则真,同假才假;
(3) ! 逻辑非,!a若a为假则!a为真,反之为假;
逻辑运算符的优先级:
在这里插入图片描述

逻辑表达式

逻辑表达式的值是一个逻辑量“真”或“假”。C语言编译系统在表示逻辑运算结果时,以数值 代表“真”,以 代表“假”,但在判断一个量是否为“真”时,以代表“假“,以非 代表“真”,在C语言中用int来保存逻辑值。
在进行逻辑运算时要注意:

int a = 1;
int b = 0;
b = (a < 0) && (++a);
printf("a = %d b = %d\n", a, b);

如果(a < 0)这个表达式为假时整个表达式九尾假,不会继续执行后面的语句,即逻辑与的短路特性,最后程序输出 1 1。

int a = 1;
int b = 0;
b = (a > 0) || (++a);
printf("a = %d b = %d\n", a, b);

如果(a > 0)这个表达式为真则整个表达式为真,不会继续执行后面的语句,即逻辑或的短路特性,最后程序输出1 1。

选择语句

if语句

if语句总有三种形式:

1、if(表达式) 语句,用于处理一种情况的单分支结构;
例如:

if(a > b)
	printf("a\n", a);

需要注意的是当if后只跟一条语句时可以不用加{}号,如果if后的语句为复合语句必须要加上{};

2、if( 表达式)语句1 else 语句2,其中的语句1和2可以是一条语句或者是多条语句,用于处理两种情况的双分支结构,常见例子如下:

输入两个数输出两个数中的最大值;

#include <stdio.h>

int main()
{
	int a, b;
	printf("请输入两个数:\n");
	scanf("%d %d", &a, &b);
	
	if(a > b)//如果a大于b就输出a
	{
		printf("最大值为:%d\n", a);
	}
	else//否则就输出b
	{
		printf("最大值为:%d\n", b);
	}

	return 0;
}

3、if( 表达式 1) 语句1
else if( 表达式 2) 语旬2
else if( 表达式 3) 语句3
else if( 表达式 4) 语句4
.
.
.
else 语句n
,用于处理多种情况的多分支结构,常见例子如下:

输入三个数输出三个数中的最大值:

#include <stdio.h>

int main()
{
	int num1, num2, num3, max;
	printf("输入三个数:\n");
	scanf("%d %d %d", &num1, &num2, &num3);

	if(num1 > num2)
	{
		max = num1;
	}
	else
	{
		max = num2;
	}

	if(max < num3)
	{
		max = num3;
	}

	printf("max = %d\n", max);

	return 0;
}

将分数转换为ABCDE等级制:

#include <stdio.h>

int main(void)
{
	int score;
	printf("input your core:\n");
	scanf("%d", &score);

	if(score >= 0 && score <= 100)
	{
		if(score >= 90 && score <= 100)
		{
			printf("rank: A\n");
		}
		else if(score >= 80 && score <= 89)
		{
			printf("rank:B\n");
		}
		else if(score >= 70 && score <= 79)
		{
			printf("rank:C\n");
		}
		else if(score >= 60 && score <= 69)
		{
			printf("rank:D\n");
		}
		else 
		{
			printf("rank:E\n");
		}
	}
	else
	{
		printf("input error\n");
	}
	return 0;
}

上述代码可以直到if语句可以嵌套语句的,可以根据实际的需求去嵌套相应的if语句。

条件运算符

条件运算符要求有3个操作对象,称三目(元)运算符,它是C语言中唯一的一个三目运算符。条件表达式的一般形式为:
表达式 1? 表达式 2: 表达式3;
其实条件运算符相当于if else语句,条件运算符用法的例子如下:

输出两个数中的最大值:

#include <stdio.h>

int main (void)
{
	int num1, num2;
	int ret;
	printf("input num1 and num2:\n");
	scanf("%d %d", &num1, &num2);

	ret = num1 > num2 ? num1 : num2;

	printf("num1和num2中最大值为:%d\n", ret);

	return 0;
}

如果num1大于num2就把num1赋值给ret否则就把num2赋值给ret;

switch case语句

switch 语句是处理多分支的选择,它的一般形式如下:
switch( 表达式)
{
case 常量表达式 1:
语句1;
break;
case 常量表达式 2:
语句2;
break;
.
.
.
case 常量表达式 n:
语句n;
break;
default :
语句n + 1;
}
switch语句是利用表达式的结果与下面case后的常量表达式的结果进行匹配,如果匹配成功就执行相应的语句直到遇到了break或者遇到了switch语句中的"}"右括号就结束,每一个case后都跟着一个break的原因是只让case匹配一次,还有需要注意的是default的位置不一定是最后,default的意思是缺省如果没有相应的case匹配就和缺省匹配;

switch case语句的用法例子:

输入分数等级输出相应的数据范围:

#include <stdio.h>

int main(void)
{
	char grade;
	printf("input grade:\n");
	scanf("%c", &grade);

	switch(grade)
	{
	case 'A':
		printf("85 ~ 100\n");
		break;
	case 'B':
		printf("70 ~ 84\n");
		break;
	case 'C':
		printf("60 ~ 69\n");
		break;
	case 'D':
		printf("<60\n");
		break;
	default:
		printf("error\n");
		break;
	}

	return 0;
}

文章到此就结束啦!以后还会持续更新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1956219.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Go语言教程(一看就会)

全篇文章 7000 字左右&#xff0c; 建议阅读时长 1h 以上。 Go语言是一门开源的编程语言&#xff0c;目的在于降低构建简单、可靠、高效软件的门槛。Go平衡了底层系统语言的能力&#xff0c;以及在现代语言中所见到的高级特性。它是快速的、静态类型编译语言。 第一个GO程序…

一篇文章带你入门爬虫并编写自己的第一个爬虫程序

一、引言 目前我们处在一个信息快速迭代更新的时代&#xff0c;海量的数据以大爆炸的形式出现在网络之中&#xff0c;相比起过去那个通过广播无线电、书籍报刊等传统媒介获取信息的方式&#xff0c;我们现在通过网络使用搜索引擎几乎可以获得任何我们需要的信息资源。 但与此同…

Python3网络爬虫开发实战(7)JavaScript 动态渲染页面爬取

文章目录 一、Selenium1. 基本安装2. 基本使用3. 声明浏览器对象4. 访问页面5. 查找节点6. 节点交互7. 动作链8. 执行 JavaScript9. 获取节点信息10. 切换 Frame11. 延时等待12. 前进后退13. Cookies14. 选项卡管理15. 异常处理16. 反屏蔽17. 无头模式18. Pyppeteer&#xff0c…

《遥远的救世主》读后感

未完待续。。。。 未完待续。。。。 未完待续。。。。 【经典语录】 01. 我们这个民族总是以有文化自居&#xff0c;却忘了问一句&#xff1a;是有什么文化&#xff1f;是真理真相的文化还是弱势文化&#xff1f;是符合事物规律的文化还是违背事物规律的文化&#xff1f;任何…

shell脚本与sed基本语法

Day11 一、shell 基础 1、shell 概念 shell 英文翻译过来是外壳的意思&#xff0c;作为计算机语言来理解可以认为它是 操作系统的外壳。可以通过shell 命令来操作和控制操作系统&#xff0c;比如 Linux中的shell命令就包括 ls、cd、pwd 等等。 2、shell 在内核的基础上编写的…

第一个设计模式——单例模式

目录 一、特点&#xff1a; 二、实现单例模式步骤 三、饿汉式 四、懒汉式 五、双重检查锁 六、静态内部类 七、枚举 八、可能被反序列化和反射破坏什么意思&#xff1f; 九、如何解决呢&#xff1f; 一、特点&#xff1a; 唯一性&#xff0c;单例模式确保程序中只有一…

甘肃粉条:一口爽滑,满心欢喜

在甘肃的美食世界里&#xff0c;粉条是一道独具特色的存在&#xff0c;它以其爽滑的口感和多样的烹饪方式&#xff0c;赢得了无数人的喜爱。甘肃食家巷粉条&#xff0c;选用当地优质的土豆或红薯为原料&#xff0c;经过一系列精细的加工工艺&#xff0c;最终成就了这一根根晶莹…

SSRF (服务端请求伪造)

&#x1f3bc;个人主页&#xff1a;金灰 &#x1f60e;作者简介:一名简单的大一学生;易编橙终身成长社群的嘉宾.✨ 专注网络空间安全服务,期待与您的交流分享~ 感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持&#xff01;❤️ &#x1f34a;易编橙终身成长社群&#…

2-48 基于matlab的EM算法聚类可视化程序

基于matlab的EM算法聚类可视化程序&#xff0c;通过期望最大化算法&#xff08;EM&#xff09;优化类别间距&#xff0c;使得类别间距最大、类内间距最小。输出聚类前后结果及收敛曲线。程序已调通&#xff0c;可直接运行。 2-48 期望最大化算法&#xff08;EM&#xff09; 聚类…

6/9-axis imu sensor/姿态传感器 学习板/开发板 开源 MPU6500 QMC5883 加速度 陀螺仪 地磁传感器

1-应用领域&#xff1a; 游戏交互、3D模型控制、机器人、设备姿态检测、翻转状态检测、无人机、无人船、无人车、VR/AR、AHRS、姿态算法研究与分析&#xff0c;短距无效姿态测量、车辆调平系统&#xff0c;机器震动检测 2-产品硬件规格: 尺寸: 蓝牙:5.0 电池:默认150ma&…

TCP程序设计

TCP概述 建立连接 客户端和服务器端在建立连接时&#xff1a; 服务端是典型的监听接受连接的模式&#xff0c;就是ListenAccept 客户端是主动建立连接的模式&#xff0c;就是Dial Go语言中使用 net包实现网络的相关操作&#xff0c;包括我们TCP的操作。 用于建立连接的典型…

tusiart吐司艺术图像生成、LoRA 模型的使用和训练网站

文章目录 前言一、Tusiart&#xff08;吐司艺术&#xff09;是什么二、Tusiart&#xff08;吐司艺术&#xff09;主要功能三、Tusiart&#xff08;吐司艺术&#xff09; 网站图片四、Tusiart&#xff08;吐司艺术&#xff09; 相关地址总结 前言 每天分享一个关于AI项目或者网…

【系统架构设计师】二十、云原生架构设计理论与实践①

目录 一、云原生架构内涵 二、云原生的原则 三、主要架构模式 四、典型的云原生架构反模式 相关推荐 一、云原生架构内涵 云原生架构是基于云原生技术的一组架构原则和设计模式的集合&#xff0c;旨在将云应用中的非业务代码部分进行最大化的剥离&#xff0c;从而让云设施…

SQL Server索引碎片的基本知识(附Demo)

目录 前言1. 基本知识2. 检索碎片2.1 dm_db_index_physical_stats2.2 DBCC SHOWCONTIG 3. 修复和优化 前言 索引碎片太高本身会阻碍查询的效率&#xff0c;这个问题要重视 1. 基本知识 索引中的数据页不再连续&#xff0c;导致存储和检索数据时的效率降低 碎片通常发生在以…

虚拟机启动电脑蓝屏问题解决方案

1.查看CPU虚拟化是否开启&#xff0c;没有开启的可以按照教程开启 打开任务管理器&#xff0c;查看是否开启CUP虚拟化 如果没有开启,可以查看下面的链接&#xff0c;进入BIOS开启 win10如何开启虚拟化支持_win10开启cpu虚拟化的方法&#xff0d;系统城 2&#xff0c;控制面板…

C#中的同步编程和异步编程

1. 简单描述一下同步编程和异步编程 同步编程&#xff1a;按照代码的顺序一行一行执行&#xff0c;如果某个操作需要等待&#xff08;比如读取文件、网络请求、数据库操作等&#xff09;&#xff0c;那么当前的线程就会停下来&#xff0c;一直到这个操作完成了之后&#xff0c…

无坚不摧的Python重试机制:探索Tenacity库

无坚不摧的Python重试机制&#xff1a;探索Tenacity 库 背景&#xff1a;为何选择Tenacity&#xff1f; 在软件开发中&#xff0c;我们经常面临需要重试操作的场景&#xff0c;比如网络请求、数据库操作等。这些操作可能会因为各种原因暂时失败&#xff0c;但稍后可能会成功…

更换CentOS Stream 8镜像源

CentOS Stream 8替换阿里云镜像源 确认CentOS版本 hostnamectl备份当前配置 sudo cp -r /etc/yum.repos.d /etc/yum.repos.d.backup创建临时文件下载目录 mkdir -p /tmp/aliyun-repos cd /tmp/aliyun-repos下载 .repo 文件列表并解析链接 wget -r -np -nd -A ".repo&…

ssm框架整合,异常处理器和拦截器(纯注解开发)

目录 ssm框架整合 第一步&#xff1a;指定打包方式和导入所需要的依赖 打包方法&#xff1a;war springMVC所需依赖 解析json依赖 mybatis依赖 数据库驱动依赖 druid数据源依赖 junit依赖 第二步&#xff1a;导入tomcat插件 第三步&#xff1a;编写配置类 SpringCon…

C++知识点总结:2.类和对象(自用)

类和对象 1. 类和对象的关系2. 对象指针3. 在堆上创建对象4. 成员访问限定符5. 名字编码&#xff08;Name Mangling&#xff09;6.构造函数7.构造函数的重载8.初始化列表8. 成员变量初始化的顺序&#xff08;通过初始化列表&#xff09;9. 初始化 const 成员变量10. 析构函数11…