int a = 1,b = 10
int temp = a // 将a的值先赋值给中间变量temp
a = b //然后把b的值赋值给a
b = temp //最后再把temp中存的a的值赋值给b
System.out.println(a+" "+b)
这种交换过程就像一个圆环,圆环上有三个值,顺时针或逆时针的将值赋给前(后)的变量。从而实现数据的交换,许多排序方法也是通过中间变量来达到小的数值放前面,大的数值放后面。
不使用中间变量,通过加减运算符实现两个变量之间的数据交换。
int a = 10, b = 20
a = a+b //此时的a=30
b = a-b //b=30-20=10,a=30不变
a = a-b //a=30-10=20,a改变
System.out.println(a+" "+b)
不使用中间变量,通过位运算符实现两个变量之间的数据交换。
int a = 11, b = 14 //二进制:a=8 —— 1011,b=14 —— 1110
a = a^b // a^b,异或运算,只有对应位数的值相等时才能返回1,否则返回0
// 所以a=a^b=1011^1110=1010
b = a^b // b=a^b=1010^1110=1011,即b=原本a的值
a = a^b // a=a^b=1010^1011=1110,即a=原本b的值
System.out.println(a+" "+b)
/*编写c语言程序,实现交换两个变量值的 *** 作。
要求:使用形参为指针的函数swap完成交换功能。
主函数中,使用整型指针从键盘输入两个整数,通过调用swap完成交换
输出交换前后的变量值进行比较。
输入输出示例:
Input two number:3 4
Before change:a=3,b=4
After change:a=4,b=3
*/
//File: swap.c
#include <stdio.h>
#include <stdlib.h>
void swap(int *a, int *b)
{
int tmp
tmp=*a
*a=*b
*b=tmp
}
int main()
{
int *a=NULL,*b=NULL
a=(int *)calloc(1,sizeof(int))
if(!a)
{
perror("calloc a err.")
}
b=(int *)calloc(1,sizeof(int))
if(!b)
{
perror("calloc b err.")
}
printf("Input two number:")
scanf("%d %d",a,b)
printf("Before change:a=%d,b=%d\n",*a,*b)
swap(a,b)
printf("After change:a=%d,b=%d\n",*a,*b)
return 0
}
C:\mypro>gcc -g -Wall swap.c -o swap
C:\mypro>swap
Input two number:3 4
Before change:a=3,b=4
After change:a=4,b=3
C:\mypro>
程序已调好,直接运行即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)