#include <iostream>template<typename T>
void exchangeTwoNumber(T &t1, T &t2);

void test();int main()
{int a = 10, b = 20;double q = 10.1, w = 20.2;char z = 'z', x = 'x';std::cout << "交换前的 a = " << a << ", b = " << b << std::endl;std::cout << "交换前的 q = " << q << ", w = " << w << std::endl;std::cout << "交换前的 z = " << z << ", x = " << x << std::endl;exchangeTwoNumber(a, b);exchangeTwoNumber(q, w);exchangeTwoNumber(z, x);test();std::cout << std::endl;std::cout << std::endl;std::cout << "交换后的    a = " << a << ",    b = " << b << std::endl;std::cout << "交换后的    q = " << q << ",    w = " << w << std::endl;std::cout << "交换后的    z = " << z << ",    z = " << x << std::endl;
}template<typename T>
void exchangeTwoNumber(T &t1, T &t2)   //通用的函数模板
{t1 = t1 + t2;t2 = t1 - t2;t1 = t1 - t2;
}void test()  //异或的方式,变形成函数模板,编译不通过
{int a = 1, b = 2;a ^= b;b ^= a;a ^= b;std::cout << "...a=" << a << ", b=" << b << std::endl;
}

转载于:https://www.cnblogs.com/azbane/p/11261698.html

C/C++ 交换两个数,不使用第三个变量, 函数模板来实现相关推荐

  1. 交换两个数不引入第三个变量

      哎! 这个问题我印象深刻啊,记得当时刚进实验室的时候,负责人问我们大一小学弟的题目,竟然没有人回答上来,现在想想当时得水到什么程度...  应该有很多种方法,我感觉只要是带相反性质的运算都可以,比 ...

  2. 用按位异或运算符交换两个数,不引入第三个变量

    2019独角兽企业重金招聘Python工程师标准>>> 用按位异或运算符交换两个数,不引入第三个变量 void swap(int &a , int &b) { a = ...

  3. 利用位运算和指针实现的交换两个数的程序

    位运算是C语言的一大特色,利用异或运算可以实现交换两个数,原理是一个整数与另外一个数进行两次异或运算仍然是其本身,基本原理用式子表达如下: (1) A ^ A = 0; (2) A = A ^B; ( ...

  4. c语言用指针两个字母交换,c语言指针基础之用指针交换两个数(代码实例)

    用指针交换两个数: void swap(int *p,int *q) { int temp; temp = *p; *p = *q; *q = temp; } int main() { int a = ...

  5. 使用java交换两个数——CSDN博客

    /*** * @Title: test_exchange* @Description: 该方法的主要作用:交换两个数* @param 设定文件 * @return 返回类型:void * @throw ...

  6. 【java】java 如何不使用第三个变量来交换两个数的值

    文章目录 1.概述 2.方案 2.1 算术运算 2.2 位运算 1.概述 今天是一个悲伤的一天,我的悲伤逆流成河.非常非常的悲伤.主要是有这个一个面试题.如何不使用第三个变量来交换两个数的值. 考官说 ...

  7. 不允许创建临时变量,交换两个数的内容

    不允许创建临时变量,交换两个数的内容 #include <stdio.h> int main(int argc, char *argv[]) { int a = 10, b = 100; ...

  8. C语言拆分一个三位数。以及交换两个数(常规法复习加指针法学习)

    给一个三位数,要求拆分出百位十位,个位.然后输出. 以前我们在水仙花那次求水仙花数 提到过经典的取法 我们再次展示一下: #include<stdio.h> int main() {int ...

  9. C语言实现交换两个数

    方法一:最普通方法--建立临时变量 思路分析:建立一个临时变量,通过temp=a,a=b,b=temp来实现交换. 缺点:这只是一种假交换,由于这只是在函数内部临时变量间的交换,所以当函数退出,函数栈 ...

  10. 【Java语言】交换两个数的数值

    package com.njwbhz.path;public class Test18 {/*** @author FairyKunKun* @since 2022/2/16*/public stat ...

最新文章

  1. OpenCV求逆(伪逆)矩阵函数
  2. DHCP Server 故障转移实现 (结合H3C交换机)
  3. “懒惰”Linux 管理员的 10 个关键技巧
  4. vc 获取月份的天数_「青少年编程」课程:输入年份与月份,得到该月有多少天...
  5. windows下自制动画层引擎 - 放两个demo
  6. linux shell ls -l,linux之ls -l|grep ^-|wc -l命令 Shell 中常見的日志統計方法
  7. codeforces 1073E
  8. SQL 查询笔记:子查询,分组查询,左连接查询。。。。。
  9. Mysql8.0安装+navicat for Mysql安装+navicat for Mysql。
  10. 【SQLServer】将Job运行结果发送电子邮件通知用户
  11. 在页面加载后执行任务
  12. HTML5+CSS——个人在线简历
  13. Bootstrap vs Foundation vs Bulma vs Semantic vs UIkit
  14. IntelliJ IDEA 社区版使用指南
  15. 月薪2300深圳流水线女工,逆袭为年薪80万谷歌工程师,又因疫情失业:我绝不轻易认输...
  16. C#关于日期 月 天数 和一年有多少周及根据某年某周获取时间段的相关计算
  17. 手撕coreML之yolov2 object detection物体检测(含源代码)
  18. Rais.vim 配置问题
  19. 如何解决苹果公司开发者账号重设手机号的问题
  20. RHEL5 Oracle 11G R2 RAC 静默安装 (三) rdbms安装 dbca 建库

热门文章

  1. ORM(四)应用.脚本管理工具
  2. java面向对象语言_Java到底是不是一种纯面向对象语言?
  3. linux交叉编译无法识别gcc编译器
  4. 后端技术:Java编程中忽略这些细节,Bug肯定少不了
  5. 聊聊 HTTPS 和 SSL/TLS 协议
  6. Visual Studio 2017 的重大功能回顾和针对 .NET 开发者的更新
  7. word2010添加b5纸张大小_纸张幅面规格尺寸你了解吗?
  8. oracle數據庫any,Oracle权限集合全集
  9. socket 网络 编程
  10. 树形结构数据汇总查询解决方案+优化求助