方法一:运用中间变量
#include<stdio.h>
int main(){
int a = 0;
int b = 0;
int tmp = 0;
scanf("%d %d",&a,&b);
printf("交换前:\n");
printf("a = %d,b = %d\n",a,b);
tmp = a;
a = b;
b = tmp;
printf("交换后:\n");
printf("a = %d,b = %d\n",a,b);
return 0;
}
方法二:运用自定义函数:
#include <stdio.h>
void swap(int* a, int* b) {
int tmp = 0;
tmp = *a;
*a = *b;
*b = tmp;
}
int main() {
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
printf("交换前:\n");
printf("a = %d,b = %d\n",a,b);
swap(&a, &b);
printf("交换后:\n");
printf("a = %d,b = %d\n",a,b);
return 0;
}
方法三:异或运算:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
printf("交换前:\n");
printf("a = %d ,b = %d\n", a, b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("交换后:\n");
printf("a = %d ,b = %d\n", a, b);
return 0;
}
方法四:位运算:
#include<stdio.h>
int main()
{
int a,b,temp;
scanf("%d %d",&a,&b);
printf("交换前:\n");
printf("a = %d,b = %d\n",a,b);
a = a<<8;
a = a+b;
b = a>>8;
a = a&0xff;
printf("交换后:\n");
printf("a = %d,b = %d\n",a,b);
return 0;
}
代码分析:
一:异或运算以及位运算的可读性较低。
二:在实际操作中采用方法二(自定义函数)能够实现模块化的要求。
三:采用异或运算以及位运算主要是为了让我们更好的掌握这两种运算,运用这两种方法解决这题并没有很大的意义。