void swap(int a,int b)这样一个函数原型能交换两个数么?可以!!

昨天在指导别人指针的时候,突发奇想想到这么一道题,我觉得挺有意思的,发给大家看看,虽然不是什么很高级的技术,但是是个很有趣的思路.....

题目就是:

void swap(int a,int b)这个函数原型,不能用全局变量与静态变量的情况下,怎么实现交换两个数?

如果你有兴趣可以思考一下,如果没兴趣就直接看下面的答案吧。

--------------------------------------------------华丽的分割线------------------------------------------------------

#include "stdafx.h"
#include <iostream>

void swap(int a,int b)
{
	int c;
	c = *(int *)a;
	*(int *)a = *(int *)b;
	*(int *)b = c;
}

int main(int argc, char* argv[])
{
	int a = 2,b = 3;
	swap((int)&a,(int)&b);
	cout<<a<<b;
	system("pause");
	return 0;
}
时间: 2024-08-05 19:20:54

void swap(int a,int b)这样一个函数原型能交换两个数么?可以!!的相关文章

异或交换两个数;实现pow(int x, int y) ,即x的y次方

问题1:异或交换两个数 假设x=2:y=3,我们的目标是(没有蛀牙!!)交换x,y的值: 利用异或的特殊性:x^x=0 即两个相同数字异或后值为0: 解决: 令x=x^y=2^3 令y=x^y=x^y^y=2^3^3=2(此时x=x^y) 令x=x^y=x^y^2=2^3^2=3(此时x=x^y:y=2) 问题2:实现pow(int x, int y) ,即x的y次方 x的y次方就是有y个x连续乘机,代码如下: #include <stdio.h> #include <stdlib.h&

用swap 交换两个数

#include<stdio.h>main(){ void swap(int *p1,int *p2);//定义swap函数,用于交换.  int *p,*q; int a,b; //定义两个指针变量和两个数a和b  printf("请输入两个数:");  scanf("%d,%d",&a,&b);//输入两个数  p=&a; q=&b;//将p和q分别指向a和b的地址  swap(p,q);//调用swap函数对p和q执

编写一个程序,用户输入两个数,求出其加减乘除,并用消息框显示计算结果

编写一个程序,用户输入两个数,求出其加减乘除,并用消息框显示计算结果 import javax.swing.JOptionPane; public class Test{ public static void main(String[] args) { int n1=Integer.parseInt(JOptionPane.showInputDialog("Input number 1: ")); int n2=Integer.parseInt(JOptionPane.showInpu

给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。

描述 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target. 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标.注意这里下标的范围是 0 到 n-1. 你可以假设只有一组答案. 样例 Example1: 给出 numbers = [2, 7, 11, 15], target = 9, 返回 [0, 1]. Example2: 给出 numbers = [15, 2, 7, 11], target = 9, 返回 [1, 2]. 1 /** 2 *

一个数组,每隔两个数删除一个数,到数组末尾接着从头开始,一直循坏,得出最后删除的一个元素的下标

public class DeleteEveryTwo { public static void main(String[] args) { int index = getLastDeletedIndex(8); System.out.println("The last index deleted is " + index); } /** * * @param a *            数组长度 * @return 最后被删除的数的原始下标 */ public static int

一个组数中只有两个数只出现了一次,其他所有数都是成对出现的,找出这两个数

原题:给一组数,只有两个数只出现了一次,其他所有数都是成对出现的.怎么找出这两个数. 编写函数实现. 对于一组数中只有一个数只出现一次,其他所有数都是成对出现的,我们采用了对全部数组元素进行异或,经过分析发现异或全部数组的数所得到的数为整个数组中两个只出现一次数异或的结果先对所有的元素进行异或.可以通过将结果转换为二进制,在移位二进制数中的第一个1,然后根据这个1的判断条件将整个数组分为两组,分别对两个组的元素进行全部异或,则就找出两个不同的数. 例如:数组中的元素为下面这些数: 0000   

不用中间变量交换两个数 swap(a,b);

#include <iostream> using namespace std; int main () { int a = 3; int b = 5; cout<<"a="<<a<<",b="<<b<<endl; a = a+b; ///a=7 b = a-b; ///b=3; a = a-b; ///a=5 cout<<"a="<<a<<

编写一个程序,用户输入两个数,求其加减乘除,并用消息框显示计算结果。

代码: //an complex program import javax.swing.JOptionPane;//import class JOptionPane public class Complex { public static void main(String[] args) { // TODO 自动生成的方法存根 String firstNumber,     //first string entered by user secondNumber;    //second stri

python练习:编写一个函数isIn,接受两个字符串作为参数,如果一个字符串是另一个字符串的一部分,返回True,否则返回False。

重难点:定义函数的方法.使用str类型的find()函数,可以查找多个字符.第二种方法为把字符串转化为字符队列,然后遍历寻找,但是只可以寻找一个字符. 1 print("----------------------------") 2 def isIn(x,y):#def定义函数保留字 3 v=y.find(x) 4 if v>=0: 5 return True; 6 else: 7 return False; 8 print(isIn('sxc','azdsxcv'))#输出函