帝国cms怎样做网站迁移个人免费开发网站
题目:
给定两个不同的整数 a 和 b,请交换它们两个的值。(不要定义函数来实现,直接在main函数里实现)
关键点
异或: 相同为0,不同为1
`异或运算(XOR) 的以下特性:
a ^ a = 0(任何数和自己异或结果为 0)
a ^ 0 = a(任何数和 0 异或结果不变)
异或运算满足交换律和结合律(即 a ^ b ^ a = b)
分析:
注意细节 :在 printf 语句中:缺少逗号 分隔格式字符串和变量参数
代码
//方法一: 利用位运算,完成两个元素之间的交换
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>int main(void) {int a = 5, b = 8;//利用异或运算 b=a^b^aa = a ^ b; // a=13,b=8b = a ^ b; // a=13,b=5a = a ^ b; // a=8,b=5//int tmp = a; //利用临时变量的思想,交换两个元素//a = b;//b = tmp;printf("a = %d,b = %d\n", a, b);return 0;
}
//方法二
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>int main(void) {int a = 100, b = 200;int tmp = a; //利用临时变量的思想,交换两个元素a = b;b = tmp;printf("a = %d,b = %d\n", a, b);return 0;
}
解决方案总结:
1 ) & 运算符不能放在字符串外面,应该用 %d 占位符来格式化输出。
2) 语法错误 在 printf 语句中:缺少逗号 分隔格式字符串和变量参数。