AI智能推荐题库-试题通 AI智能整理导入题库-试题通
×
首页 题库中心 c语言选择判断题库 题目详情
CA4E3A01C46000013755684012D01E55
c语言选择判断题库
379
单选题

1、第236题 (1.0分) 题号:209 若有以下程序段:int a=3,b=4; a=a^b;b=b^a;a=a^b;则执行以上 语句后,a和b的值分别是()。

A
 a=3,b=4
B
 a=4,b=3
C
 a=4,b=4
D
 a=3,b=3

答案解析

正确答案:B

解析:

这道题考查的是利用**异或运算(XOR)**交换两个变量值的经典算法。 ### 1. 核心知识点:异或运算的性质 异或运算符 `^` 具有以下重要性质: 1. **自反性**:任何数与自身异或,结果为 0。即 $x \oplus x = 0$。 2. **恒等性**:任何数与 0 异或,结果为其本身。即 $x \oplus 0 = x$。 3. **交换律和结合律**:$a \oplus b = b \oplus a$,$(a \oplus b) \oplus c = a \oplus (b \oplus c)$。 基于这些性质,可以通过以下三步实现两个整数变量的交换,且不需要引入第三个临时变量: 1. `a = a ^ b` 2. `b = b ^ a` (此时右边的 `a` 已经是第一步计算后的值) 3. `a = a ^ b` (此时右边的 `a` 和 `b` 都是更新后的值) ### 2. 逐步推导过程 初始状态:$a = 3$, $b = 4$ **第一步:执行 `a = a ^ b`** * 计算:$3 \oplus 4$ * $3$ 的二进制:`011` * $4$ 的二进制:`100` * 异或结果:`111` (即十进制的 7) * 此时变量状态:**$a = 7$**, $b = 4$ **第二步:执行 `b = b ^ a`** * 注意:这里的 `a` 是上一步更新后的值 7。 * 计算:$4 \oplus 7$ * $4$ 的二进制:`100` * $7$ 的二进制:`111` * 异或结果:`011` (即十进制的 3) * 此时变量状态:$a = 7$, **$b = 3$** * *解析:这一步实际上是将原始的 $a$ 值赋给了 $b$。因为 $b_{new} = b_{old} \oplus (a_{old} \oplus b_{old}) = a_{old}$。* **第三步:执行 `a = a ^ b`** * 注意:这里的 `a` 是 7,`b` 是上一步更新后的值 3。 * 计算:$7 \oplus 3$ * $7$ 的二进制:`111` * $3$ 的二进制:`011` * 异或结果:`100` (即十进制的 4) * 此时变量状态:**$a = 4$**, **$b = 3$** * *解析:这一步实际上是将原始的 $b$ 值赋给了 $a$。因为 $a_{new} = (a_{old} \oplus b_{old}) \oplus a_{old} = b_{old}$。* ### 3. 结论 执行完上述语句后: * $a$ 的值变为 4 * $b$ 的值变为 3 对比选项: A. a=3, b=4 B. a=4, b=3 C. a=4, b=4 D. a=3, b=3 故正确答案为 **B**。
题目纠错
c语言选择判断题库

扫码进入小程序
随时随地练习

关闭登录弹窗
专为自学备考人员打造
勾选图标
自助导入本地题库
勾选图标
多种刷题考试模式
勾选图标
本地离线答题搜题
勾选图标
扫码考试方便快捷
勾选图标
海量试题每日更新
波浪装饰图
欢迎登录试题通
可以使用以下方式扫码登陆
APP图标
使用APP登录
微信图标
使用微信登录
试题通小程序二维码
联系电话:
400-660-3606
试题通企业微信二维码