【C语言程序设计——选择结构程序设计】按从小到大排序三个数(头歌实践教学平台习题)【合集】
目录😋
任务描述
编程要求
相关知识
1. 选择结构
2. 主要语句类型
3. 比较操作
4. 交换操作
测试说明
通关代码
测试结果
任务描述
本关任务:从键盘上输入三个数,请按从小到大的顺序排序并打印输出排序后的结果。
编程要求
根据提示,在右侧编辑器 Begin-End 之间补充代码,计算并输出对应二次方程的根。
相关知识
为了完成本关任务,你需要掌握:
- 选择结构基本概念
- 选择结构主要语句类型
- 比较操作
- 交换操作
1. 选择结构
选择结构是程序设计中的一种基本结构,用于根据给定条件决定程序执行的不同分支路径。其核心在于对条件表达式进行求值判断,当条件满足特定要求时,程序执行相应的一组语句;若条件不满足,则可能执行其他分支语句或跳过当前代码块继续执行后续程序。
条件表达式通常由关系运算符(如大于、小于、等于等)、逻辑运算符(如与、或、非)以及其他能产生布尔值的表达式构成。例如,在判断一个数是否大于 10 的场景中,条件表达式为 “num> 10”,这里的 “num” 是程序中的变量,通过比较其值与 10 的大小关系来确定条件的真假。
常见的选择结构形式包括 if 语句、if - else 语句和 switch 语句。if 语句是最基础的形式,当条件为真时执行其内部的语句块;if - else 语句在 if 条件不成立时提供了另一个可执行的语句块,确保在两种不同条件结果下程序都有明确的执行路径;switch 语句则适用于针对一个表达式的多个固定值进行判断,根据表达式的值与各个 case 后的常量值匹配情况,执行相应 case 分支下的语句,直到遇到 break 语句跳出 switch 结构,若没有匹配值则执行 default 分支(可选)。选择结构使得程序能够模拟现实生活中的决策过程,对不同情况做出不同反应,从而实现复杂的逻辑和功能,增强程序的灵活性和适应性,广泛应用于各类编程场景,如数据处理、算法实现、用户交互逻辑处理等,是构建有效程序逻辑的关键组成部分。
2. 主要语句类型
条件语句(if、if-else、switch)
- if 语句:
if语句是 C 语言中用于实现条件判断和分支执行的基本结构之一。其核心在于根据给定的条件表达式的真假来决定是否执行特定的代码块。
- 条件表达式可以是任何能够得出布尔值(真或假)的表达式,例如比较运算(
>、<、>=、<=、==、!=)、逻辑运算(&&、||、!)以及函数调用(只要函数返回值能被隐式转换为布尔值)等的组合。例如:if (a > 10 && b < 20) { /* 执行语句 */ },这里只有当a大于10并且b小于20这两个条件同时满足时,花括号内的代码才会被执行。- 执行语句块可以是一条或多条语句,如果只有一条语句,花括号可以省略,但为了增强代码的可读性和可维护性,通常建议加上花括号。例如:
if (x == 5) printf("x is 5\n");这种写法在简单情况下可行,但如果后续需要添加更多语句,就容易出现错误,而写成if (x == 5) { printf("x is 5\n"); otherFunctionCall(); }则更加清晰和安全。
- if - else 语句:
if - else语句在if语句的基础上,为条件不成立的情况提供了另一个执行路径。当if后面的条件表达式为假时,就会执行else后面的语句块。
- 这种结构在很多实际场景中非常有用,比如前面提到的判断成绩是否及格的例子,它确保了程序在任何情况下都有明确的输出,避免了因条件不满足而导致的不确定性。再比如在一个判断数字正负性的程序中:
if (num > 0) { printf("正数\n"); } else if (num < 0) { printf("负数\n"); } else { printf("零\n"); },这里通过else if进一步细分了条件,对num的三种可能情况(大于0、小于0、等于0)都进行了相应的处理,使程序的逻辑更加严谨和完整。- 用于根据不同条件执行不同的代码块。
例如,判断一个数是奇数还是偶数:
int num; scanf("%d", &num); if (num % 2 == 0) {// 当num除以2的余数为0时,说明num是偶数printf("%d is even\n", num); } else {// 当num除以2的余数不为0时,说明num是奇数printf("%d is odd\n", num); }
- 通过
scanf函数从用户输入获取一个整数,并存储在num变量中。- 使用
if语句判断num是否为偶数。num % 2 == 0这个条件表达式利用了取模运算(%),当num除以2的余数为0时,条件为真,就会执行if语句块内的printf("%d is even\n", num);,输出num是偶数的信息。- 如果
num除以2的余数不为0,即条件为假,那么就会执行else语句块内的printf("%d is odd\n", num);,输出num是奇数的信息。
switch语句
switch语句主要用于处理多个固定的、离散的选项情况。它根据一个整型表达式(通常是一个变量)的值,与各个case常量进行匹配,一旦匹配成功,就执行对应的case分支下的语句,直到遇到break语句或者switch语句结束。- 当有多个固定的选项时,可以使用
switch语句。例如,在一个简单的菜单选择程序中:
int choice; scanf("%d", &choice); switch (choice) {case 1:printf("打开文件\n");break;case 2:printf("保存文件\n");break;case 3:printf("退出程序\n");break;default:printf("无效的选择,请重新输入\n"); }这里,
switch表达式choice的值会依次与case 1、case 2、case 3进行比较,如果choice等于1,就会执行printf("打开文件\n");,然后遇到break语句,跳出switch结构;如果choice的值与所有case常量都不匹配,就会执行default分支下的语句,提示用户输入无效。需要注意的是,
case常量的值必须是唯一的,且在同一个switch语句中不能重复;break语句的作用至关重要,如果遗漏break,程序将会继续执行下一个case分支的语句,这可能不是预期的行为,这种现象被称为 “case 穿透”,在某些特定情况下可以利用这一特性来简化代码,但在大多数情况下,需要谨慎使用break来确保程序的正确性。
3. 比较操作
比较操作通过
if语句及大于号(>)比较运算符实现,例如if(a > b)判断a与b大小,if(a > c)判断a与c大小,if(b > c)判断b与c大小,依结果决定是否执行后续代码。
4. 交换操作
交换操作借助临时变量
t,以if(a > b)为例,条件成立时,先t = a备份a值,再a = b将b值赋给a,最后b = t完成a、b交换,其他两次交换同理,通过比较与交换配合实现三个数从小到大排序并输出。
测试说明
平台会对你编写的代码进行测试:
测试输入:
6 10 2
预期输出:
从小到大排序为:2,6,10
测试输入:
12 -5 8
预期输出:
从小到大排序为:-5,8,12
开始你的任务吧,祝你成功!
通关代码
#include "stdio.h"
int main()
{int a,b,c,t;//printf("请输入三个数:");/*********Begin*********/scanf("%d %d %d",&a,&b,&c);if(a > b){t = a;a = b;b = t;}if (a > c){t = a;a = c;c = t;}if (b > c){t = b;b = c;c = t;}printf("从小到大排序为:%d,%d,%d",a,b,c);return 0;/*********End**********/
}
测试结果


相关文章:
【C语言程序设计——选择结构程序设计】按从小到大排序三个数(头歌实践教学平台习题)【合集】
目录😋 任务描述 编程要求 相关知识 1. 选择结构 2. 主要语句类型 3. 比较操作 4. 交换操作 测试说明 通关代码 测试结果 任务描述 本关任务:从键盘上输入三个数,请按从小到大的顺序排序并打印输出排序后的结果。 编程要求 根据提示…...
简洁安装配置在Windows环境下使用vscode开发pytorch
简洁安装配置在Windows环境下使用vscode开发pytorch 使用anaconda安装pytorch,通过vscode集成环境开发pytorch 下载 anaconda 下载网址,选择对应系统的版本 https://repo.anaconda.com/archive/ windows可以选择Anaconda3-2024.10-1-Windows-x86_64.e…...
conda安装及demo:SadTalker实现图片+音频生成高质量视频
1.安装conda 下载各个版本地址:https://repo.anaconda.com/archive/ win10版本: Anaconda3-2023.03-1-Windows-x86_64 linux版本: Anaconda3-2023.03-1-Linux-x86_64 Windows安装 环境变量 conda -V2.配置conda镜像源 安装pip conda…...
【面试】后端开发面试中常见数据结构及应用场景、原理总结
在后端开发面试中,常见的数据结构包括数组、链表、栈、队列、二叉树、平衡树、堆、图和哈希表等。以下是这些数据结构的总结,包括它们的应用场景、优缺点。 常见数据结构及其应用场景 数据结构应用场景数组存储固定大小的数据集合,如学生成…...
141.《mac m系列芯片安装mongodb详细教程》
文章目录 下载从官网下载安装包 下载后双击解压出文件夹安装文件名修改为 mongodb配置data存放位置和日志log的存放位置启动方式一方式二方式二:输入mongo报错以及解决办法 本人电脑 m2 pro,属于 arm 架构 下载 官网地址: mongodb官网 怎么查看自己电脑应该下载哪个版本,输入…...
Java 23 集合框架详解:ArrayList、LinkedList、Vector
📚 Java 23 集合框架详解:ArrayList、LinkedList、Vector 在 Java 集合框架中,ArrayList、LinkedList 和 Vector 是三种最常用的 List 接口实现类。它们都可以存储有序的、可重复的元素,但它们在 底层实现、性能 和 多线程安全 等…...
03、MySQL安全管理和特性解析(DBA运维专用)
03、MySQL安全管理和特性解析 本节主要讲MySQL的安全管理、角色使用、特定场景下的数据库对象、各版本特性以及存储引擎 目录 03、MySQL安全管理和特性解析 1、 用户和权限管理 2、 MySQL角色管理 3、 MySQL密码管理 4、 用户资源限制 5、 忘记root密码处理办法 6、 SQ…...
创建型模式5.单例模式
创建型模式 工厂方法模式(Factory Method Pattern)抽象工厂模式(Abstract Factory Pattern)建造者模式(Builder Pattern)原型模式(Prototype Pattern)单例模式(Singleto…...
用户界面软件02
基于表单的用户界面 在“基于表单的用户界面”里面,用户开始时选中某个业务处理(模块),然后应用程序就使用一系列的表单来引导用户完成整个处理过程。大型机系统上的大部分用户界面都是这样子的。[Cok97]中有更为详细的讨论。 面…...
VTK 鼠标+键盘重构
1、鼠标事件 如果有鼠标事件处理等相应的需求,可以重写该事件。 void OnMouseMove() override; //鼠标移动事件 void OnLeftButtonDown() override;//左键按下事件 void OnLeftButtonUp() override;//左键抬起事件 void OnMiddleButtonDown() override;//滚轮按下事件 …...
go语言处理JSON数据详解
一、结构体与json之间的转换 Go语言处理JSON数据通常涉及到将JSON数据解析成Go结构体,或者将Go结构体序列化为JSON格式。Go提供了内置的encoding/json包来实现这些操作。下面详细介绍如何在Go中处理JSON数据。 1. Go结构体与JSON映射 Go语言的encoding/json包可以将JSON数据…...
基于gin一个还算比较优雅的controller实现
看了两天时间的go,对于go的编码风格还不是很了解,但是了解到go并未有Java那样成体系的编码风格规范,所以自己浅尝试了一下,风格无对错,欢迎交流讨论~ controller层: package …...
PDFMathTranslate: Star13.8k,一款基于AI的PDF文档全文双语翻译PDF文档全文双语翻译,保留格式神器,你应该需要它
嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 PDFMathTranslate是一个开源项目,旨在为用户提供便捷的PDF科学论文翻译解决方案。它不仅能够翻译文本,还能保留公式、图表、目…...
Python编程实例-特征向量与特征值编程实现
特征向量与特征值编程实现 文章目录 特征向量与特征值编程实现1、什么是特征向量2、特征向量背后的直觉3、为什么特征向量很重要?4、如何计算特征向量?4、特征向量Python实现5、可视化特征向量6、总结线性代数是许多高级数学概念的基石,广泛应用于数据科学、机器学习、计算机…...
Vue3-跨层组件通信Provide/Inject机制详解
Vue 3 中的 Provide 和 Inject 机制是专为跨层级传递数据而设计的,适用于祖先组件和后代组件之间的通信。与props 和 emits 不同,Provide/Inject 可以跨越多个层级进行数据传递,而不需要逐层传递。 1. Provide provide 是一个在祖先组件中提…...
Linux Jar包定时重启脚本,按最新时间的Jar包启动
Linux Jar包定时重启脚本,按最新时间的Jar包启动 jar包按时间顺序命名如下: park-system-1.1.0-SNAPSHOT_20210101.jar park-system-1.1.0-SNAPSHOT_20210402.jar park-system-1.1.0-SNAPSHOT_20220520.jar 则该脚本默认启动时间最大的一个:park-system-1.1.0-SNAPSHOT_2022…...
HTML5实现好看的博客网站、通用大作业网页模板源码
HTML5实现好看的博客网站、通用大作业网页模板源码 前言一、设计来源1.1 主界面1.2 列表界面1.3 文章界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好看的博客网站、通用大作业网页模板源码,博客网站源码,HTML模板源码࿰…...
掌握RabbitMQ:全面知识点汇总与实践指南
前言 RabbitMQ 是基于 AMQP 高级消息队列协议的消息队列技术。 特点:它通过发布/订阅模型,实现了服务间的高度解耦。因为消费者不需要确保提供者的存在。 作用:服务间异步通信;顺序消费;定时任务;请求削…...
go如何从入门进阶到高级
针对Go语言的学习,不同阶段应采取不同的学习方式,以达到最佳效果.本文将Go的学习分为入门、实战、进阶三个阶段,下面分别详细介绍 一、社区 Go语言中文网 作为专注于Go语言学习与推广的平台,Go语言中文网为开发者提供了丰富的中…...
在环境冲突情况下调整优先级以解决ROS Catkin构建中缺少模块的问题【ubuntu20.04】
在机器人操作系统(ROS)的开发过程中,构建工作空间时遇到各种依赖性问题是常见的挑战之一。尤其是在多Python环境共存的情况下,环境变量的冲突往往导致诸如缺少empy模块等错误。本文将详细介绍在ROS Noetic与Anaconda Python环境共…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...
Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...
沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...
Pydantic + Function Calling的结合
1、Pydantic Pydantic 是一个 Python 库,用于数据验证和设置管理,通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发(如 FastAPI)、配置管理和数据解析,核心功能包括: 数据验证:通过…...
RabbitMQ 各类交换机
为什么要用交换机? 交换机用来路由消息。如果直发队列,这个消息就被处理消失了,那别的队列也需要这个消息怎么办?那就要用到交换机 交换机类型 1,fanout:广播 特点 广播所有消息:将消息…...
大模型真的像人一样“思考”和“理解”吗?
Yann LeCun 新研究的核心探讨:大语言模型(LLM)的“理解”和“思考”方式与人类认知的根本差异。 核心问题:大模型真的像人一样“思考”和“理解”吗? 人类的思考方式: 你的大脑是个超级整理师。面对海量信…...
【JavaEE】万字详解HTTP协议
HTTP是什么?-----互联网的“快递小哥” 想象我们正在网上购物:打开淘宝APP,搜索“蓝牙耳机”,点击商品图片,然后下单付款。这一系列操作背后,其实有一个看不见的“快递小哥”在帮我们传递信息,…...
Modbus转Ethernet IP深度解析:磨粉设备效率跃升的底层技术密码
在建材矿粉磨系统中,开疆智能Modbus转Ethernet IP网关KJ-EIP-101的应用案例是一个重要的技术革新。这个转换过程涉及到两种主要的通信协议:Modbus和Ethernet IP。Modbus是一种串行通信协议,广泛应用于工业控制系统中。它简单、易于部署和维护…...
