三个整数排序

描述

给定三个整数,请将它们按从小到大的顺序输出。

输入

输入为一行,包含三个整数,用空格分隔。

输出

输出为一行,包含三个整数,用空格分隔,表示排序后的结果。

输入样例 1 

9 3 7

输出样例 1

3 7 9

代码一(如下):最普通的方法

#include <iostream>
using namespace std;
int main()
{int a, b, c;cin >> a >> b >> c;int t;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;}cout << a << " " << b << " " << c;return 0;
}

代码二(如下):指针法

#include <iostream>
using namespace std;
void exchange(int*, int*);
int main()
{int a, b, c;cin >> a >> b >> c;int* p1 = &a, * p2 = &b, * p3 = &c;if (a > b)exchange(p1, p2);if (a > c)exchange(p1, p3);if (b > c)exchange(p2, p3);cout << a << " " << b << " " << c;return 0;
}
void exchange(int* a, int* b)
{int t = *a;*a = *b;*b = t;
}

代码三(如下):返回值有两个

#include <iostream>
#include <utility>
using namespace std;
pair<int, int>exchange(int a,int b)
{int t = a;a = b;b = t;pair<int, int>result;result = make_pair(a, b);return result;
}
int main()
{int a, b, c;cin >> a >> b >> c;if (a > b){pair<int, int>result = exchange(a, b);a = result.first;b = result.second;}if (a > c){pair<int, int>result = exchange(a, c);a = result.first;c = result.second;}if (b > c){pair<int, int>result = exchange(b, c);b = result.first;c = result.second;}cout << a << " " << b << " " << c;return 0;
}

代码四(如下):引用法

#include <iostream>
using namespace std;
void exchange(int&, int&);
int main()
{int a, b, c;cin >> a >> b >> c;if (a > b)exchange(a, b);   //实参为整型变量if (a > c)exchange(a, c);if (b > c)exchange(b, c);cout << a << " " << b << " " << c;return 0;
}
void exchange(int& x, int& y)    //形参是“引用”
{int t = x;x = y;y = t;
}

问题点:

①:引用

对一个数据可以建立一个“引用”,它的作用是为一个变量起一个别名。这是C++对C的一个重要扩充。

// 假如有一个变量啊,想给它起一个别名b,可以这样写:

int a;                       //定义a是整型变量

int &b=a;                //声明b是a的“引用”

// 以上声明了b是a的引用,即b是a的别名。经过这样的声明后,使用a或b的作用相同,都代表同一变量。如果a的值是20,则b的值也是20。

 &是引用声明符,并不代表地址。不得理解为“把a的值赋给b的地址”。在数据类型名后面出现的&是引用声明符,在其他场合出现的都是地址符。

注意:

1)引用不是一种独立的数据类型。对引用只有声明,没有定义。必须先定义一个变量,然后声明对该变量建立一个引用(别名)。

2)声明一个引用时,必须同时使之初始化,即声明它代表哪一个变量。当引用作为函数形参时不必在声明中初始化,它的初始化是在函数调用时的虚实结合实现的,即作为形参的引用是实参的别名。

3)在声明一个引用后,不能再使之作为另一变量的引用。

4)不能建立引用数组。如:

int a[5];

int &b[5]=a;           // 错误,不能建立引用数组

int &b=a[0];           // 错误,不能作为数组元素的别名

5)不能建立引用的引用。也没有引用的指针。

int a=3;

int &b=a;               //声明b是a的别名,正确

int &c=b;               //试图建立引用的引用,错误

int*p=b;                 //不能建立指向引用的指针

6)可以取引用的地址。如已声明b是a的引用,则&b就是变量a的地址&a。

int *pt;

pt=&b;                //把变量a的地址&a赋给指针变量pt

7)区别引用声明符&和地址运算符&。

int &b=a;               //声明b是a的引用

cout<<&b<<endl;             //输出b的地址,此处&b不是引用

在声明了引用后,在使用它时不带&,而只用引用的名字(如b,而不是&b)。

关于引用的性质:如果在程序中声明了b是变量a的引用,实际上在内存中为b开辟了一个指针型的存储单元,在其中存放变量a的地址,输出引用b时,就输出b所指向的变量a值,相当于输出*b。引用其实就是一个指针常量,它的指向不能改变,只能指向一个指定的变量。所以,引用的本质还是指针,所有引用的功能都可以由指针实现。

C++之所以增加引用机制,主要是把它作为函数参数,以扩充函数传递数据的功能。

以引用作为形参,实参不是地址而是整型变量名,由于形参是引用,系统会自动将实参的地址传递给形参。注意:此时传送的是实参变量的地址而不是实参变量的值。

将变量名作为实参和形参的函数调用 以及 使用指针变量作形参的函数调用(实参是地址,传递的是地址,故仍然是传值方式,不要误以为是传址方式)都是传值方式;以引用作为形参的函数调用(实参是变量名,而传递的是变量的地址)时传址方式

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

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

相关文章

基于熵权法对Topsis模型的修正

由于层次分析法的最大缺点为&#xff1a;主观性太强&#xff0c;影响判断&#xff0c;对结果有很大影响&#xff0c;所以提出了熵权法修正。 变异程度方差/标准差。 如何度量信息量的大小&#xff1a; 把不可能的事情变成可能&#xff0c;这里面就有很多信息量。 概率越大&…

基于facenet+faiss开发构建人脸识别系统

facenet是一款非常经典的神经网络模型&#xff0c;它可以直接学习从人脸图像到欧几里德空间的映射(直接将人脸映射到欧几里得空间)。在欧几里德空间中&#xff0c;距离直接对应于人脸相似性的度量。一旦这个空间产生&#xff0c;使用标准技术&#xff0c;将FaceNet嵌入作为特征…

二、 根据用户行为数据创建ALS模型并召回商品

二 根据用户行为数据创建ALS模型并召回商品 2.0 用户行为数据拆分 方便练习可以对数据做拆分处理 pandas的数据分批读取 chunk 厚厚的一块 相当大的数量或部分 import pandas as pd reader pd.read_csv(behavior_log.csv,chunksize100,iteratorTrue) count 0; for chunk in …

【Python机器学习】实验08 决策树

文章目录 决策树1 创建数据2 定义香农信息熵3 条件熵4 信息增益5 计算所有特征的信息增益&#xff0c;选择最优最大信息增益的特征返回6 利用ID3算法生成决策树7 利用数据构造一颗决策树Scikit-learn实例决策树分类决策树回归Scikit-learn 的决策树参数决策树调参 实验1 通过sk…

双网卡单独设置内外网教程

# -p add 表示永久 #打印所有的路由 route print 先删除所有的路由信息 route delete 0.0.0.0 #先所有的走无线网络 2表示优先级&#xff0c;数字越小表示优先级越靠前 #假设10.98.40.7是上外网的网关。如果上不了网&#xff0c;请重新禁用网卡然后启动一下 route –p add 0…

gen_image1

算子gen_image1创建一个Width*Height大小的图像。 PixelPointer中的像素按线顺序存储。 给定像素的类型&#xff08;PixelPointer&#xff09;必须对应于Type&#xff08;请参阅gen_image_const以获取更详细的像素类型描述&#xff09;。 新图像的存储是由HALCON新创建的。 因此…

vue3 基础响应式和传值问题

1.ref reactive 需要响应式的情况下&#xff0c;使用ref reactive&#xff08;proxy&#xff09; &#xff08;1&#xff09; 基本数据类型一般用ref &#xff0c;例如数字、布尔、字符串&#xff0c;利用.value调用 &#xff08;2&#xff09; reactive 的值必须是引用类型的…

js2-js中的数据结构

1、什么是数据结构 数据结构是计算机存储、组织数据的方式。 数据结构意味着接口或封装&#xff0c;一个数据结构可被视为两个函数之间的接口&#xff0c;或者是由数据类型联合组成的存储内容的访问方法封装。 每天的编码中都会用到数据结构&#xff0c;其中数组是最简单的内存…

FFmpeg安装和使用

sudo apt install ffmpeg sudo apt-get install libavfilter-devcmakelist模板 CMakeLists.txt cmake_minimum_required(VERSION 3.16) project(ffmpeg_demo)# 设置ffmpeg依赖库及头文件所在目录&#xff0c;并存进指定变量 set(ffmpeg_libs_DIR /usr/lib/x86_64-linux-gnu) …

MySQL到Oracle快速上手

第一次做Oracle项目的时候对一些语法区别不太清楚&#xff0c;这里列出一些开发中发现的与MYSQL不同的点 一个用户相当于一个数据库 表空间 表空间是用于存储表、索引和其他数据库对象的逻辑存储结构。每个表空间由一个或多个数据文件组成&#xff0c;这些文件可以位于不同的物…

SpringBoot下使用自定义监听事件

事件机制是Spring的一个功能&#xff0c;目前我们使用了SpringBoot框架&#xff0c;所以记录下事件机制在SpringBoot框架下的使用&#xff0c;同时实现异步处理。事件机制其实就是使用了观察者模式(发布-订阅模式)。 Spring的事件机制经过如下流程&#xff1a; 1、自定义事件…

Ventoy 设置VTOY_MAX_SEARCH_LEVEL = 0只扫描U盘根目录 不扫码子目录

在镜像分区/media/yeqiang/Ventoy创建目录ventory&#xff0c;目录内创建文件ventoy.json&#xff0c;内容如下 {"control":[{ "VTOY_MAX_SEARCH_LEVEL": "0" }] }采用系统默认的utf-8编码。 参考&#xff1a; search path . Ventoy Plugin.e…

2023河南萌新联赛第(五)场:郑州轻工业大学 I - 双指针

2023河南萌新联赛第&#xff08;五&#xff09;场&#xff1a;郑州轻工业大学 I - 双指针 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld 题目描述 给定一个数组 a a a 和数组 b …

【GO】 33.go-zero 示例

1. 获取go-zero库 go get -u github.com/zeromicro/go-zero 2. 安装goctl brew install goctlgoctl -v #goctl version 1.5.4 darwin/amd64 3. 创建.api文件&#xff0c; greet.api goctl api -o greet.api syntax "v1"info (title: // TODO: add titledesc: //…

axios如何取消请求,其原理是什么?

axios 可以通过创建一个 CancelToken 来取消一个请求,基本原理是: 创建一个 CancelToken 的实例,它有一个 executor 函数,可以通过调用 executor 参数中的 cancel 函数来取消请求。在 axios 请求配置中指定 cancelToken 属性,将 CancelToken 实例传递进去。当我们需要取消请求…

如何使用appuploader制作apple证书​

转载&#xff1a;如何使用appuploader制作apple证书​ 如何使用appuploader制作apple证书​ 一.证书管理​ 点击首页的证书管理 二.新建证书​ 点击“添加”&#xff0c;新建一个证书文件 免费账号制作证书只有7天有效期&#xff0c;没有推送消息功能&#xff0c;推送证书…

UNet Model

论文地址 第一阶段 conv2d(33) first conv&#xff1a;5725721 → 57057064 second conv&#xff1a;57057064 → 56856864 代码 # first 33 convolutional layer self.first nn.Conv2d(in_channels, out_channels, kernel_size3, padding1) self.act1 nn.ReLU() # Seco…

浏览器无法连接网络问题

问题描述 电脑其他程序都能正常联网&#xff0c;但是所有的浏览器都无法联网&#xff0c;同时外部网站都能ping通 问题诊断 查看电脑Internet连接的问题报告显示&#xff1a;该设备或资源(Web 代理)未设置为接受端口"7890"上的连接。 解决方案 经过检查发现不是IP地址…

React Hooks 详细使用介绍

useState 状态管理 useState 是 React 中的一个基础 Hook&#xff0c;允许你在不使用 class 组件的情况下管理组件状态。 参数 初始值 你可以直接传递状态的初始值给 useState&#xff1a; const [name, setName] useState("John");使用函数设置初始值 当初始…

若依vue -【 100 ~ 更 】

100 主子表代码生成详解 1 新建数据库表结构&#xff08;主子表&#xff09; -- ---------------------------- -- 客户表 -- ---------------------------- drop table if exists sys_customer; create table sys_customer (customer_id bigint(20) not null…