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

8.若有以下程序段: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

解析:

这道题考查的是利用**异或运算符(^)**交换两个变量值的经典算法。 ### 1. 核心知识点:异或运算的性质 异或运算(XOR)具有以下重要性质,这是解题的关键: 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)$。 基于以上性质,可以推导出:**如果 $c = a \oplus b$,那么 $c \oplus a = b$ 且 $c \oplus b = a$。** ### 2. 逐步执行分析 初始状态: * $a = 3$ * $b = 4$ **第一步:`a = a ^ b;`** * 计算 $3 \oplus 4$。 * $3$ 的二进制:`011` * $4$ 的二进制:`100` * 异或结果:`111` (即十进制的 7) * 此时变量状态: * $a = 7$ (存储了 $3 \oplus 4$ 的结果) * $b = 4$ (保持不变) **第二步:`b = b ^ a;`** * 注意:此时的 $a$ 已经是 7 了。 * 计算 $b \oplus a$,即 $4 \oplus 7$。 * $4$ 的二进制:`100` * $7$ 的二进制:`111` * 异或结果:`011` (即十进制的 3) * **逻辑推导**:$b = b \oplus (a_{old} \oplus b_{old}) = a_{old}$。所以这一步实际上是将 $a$ 的原始值赋给了 $b$。 * 此时变量状态: * $a = 7$ (保持不变) * $b = 3$ (变成了 $a$ 的初始值) **第三步:`a = a ^ b;`** * 注意:此时的 $a$ 是 7,$b$ 是 3。 * 计算 $a \oplus b$,即 $7 \oplus 3$。 * $7$ 的二进制:`111` * $3$ 的二进制:`011` * 异或结果:`100` (即十进制的 4) * **逻辑推导**:$a = (a_{old} \oplus b_{old}) \oplus a_{old} = b_{old}$。所以这一步实际上是将 $b$ 的原始值赋给了 $a$。 * 此时变量状态: * $a = 4$ (变成了 $b$ 的初始值) * $b = 3$ (保持上一步的结果) ### 3. 最终结果 执行完所有语句后: * $a = 4$ * $b = 3$ 这与选项 **B** 相符。 ### 结论 该程序段实现了变量 $a$ 和 $b$ 值的交换,无需使用临时变量。 故正确答案为 **B**。
题目纠错
c语言选择判断题库

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

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