面试题2—交换a和b

来源:互联网 发布:汽车资源软件下载 编辑:程序博客网 时间:2024/05/22 10:31

题目:将a,b的值进行交换,并且不适用任何中间变量

思路:异或运算

c语言:

// Change.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include<stdio.h>void change(int a, int b){a = a ^ b;b = a ^ b;a = a ^ b;printf("%d\n",a);printf("%d\n",b);}int main(int argc, char* argv[]){    change(3,4);return 0;}

Java:

public class App {public static void change(int a, int b){a =  a^ b;b = a ^ b;a = a ^ b;System.out.println("a="+a);System.out.println("b="+b);}public static void main(String[] args) {change(4, 2);}


Python:

def change(a,b):    a = a ^ b    b = a ^ b    a = a ^ b    print a ,bif __name__ == "__main__":    change(2,4)


另外一种解题思路是用和运算,但是如果a 和b 是两个很大的数值,a+b会越界

#include "stdafx.h"#include<stdio.h>void change(int a, int b){a = a + b;b = a - b;a = a - b;printf("%d\n",a);printf("%d\n",b);}int main(int argc, char* argv[]){    change(3,4);return 0;}


阅读全文
0 0
原创粉丝点击