CSP-J 入门级 · CSP 2022 入门级第一轮 第 16 题

阅读程序 · 答案 AB · 考点:位运算

← 整套速查表 CSP-J 入门级 全部真题

题目

二、阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填 √,错误填 ⨉ ;除特殊说明外,判断题 1.5 分,选择题 3 分,共计 40 分)

(1)

01 #include <iostream>
02
03 using namespace std;
04
05 int main()
06 {
07     unsigned short x, y;
08     cin >> x >> y;
09     x = (x | x << 2)& 0x33;
10     x = (x | x << 1)& 0x55;
11     y = (y | y << 2)& 0x33;
12     y = (y | y << 1)& 0x55;
13     unsigned short z = x | y << 1;
14     cout << z << endl;
15     return 0;
16 }

假设输入的 $x,y$ 均是不超过 $15$ 的自然数,完成下面的判断题和单选题:

判断题

1. 删去第 $7$ 行与第 $13$ 行的 unsigned,程序行为不变。 2. 将第 $7$ 行与第 $13$ 行的 short 均改为 char,程序行为不变。 3. 程序总是输出一个整数“0”。 4. 当输入为 2 2 时,输出为 10。 5. 当输入为 2 2 时,输出为 59。

单选题

6. 当输入为 13 8 时,输出为( )。

答案:AB

考点

位运算 讲解 →位运算 真题汇总 →

解题思维

看到 x=(x|x<<2)&0x33 等式 → 先想 Bit Merge 位交错

常见错误

char 范围小易溢出;误以为展宽后全零

详细解析(节选)

考点:Bit Merge 位交错|溢出判断

程序在做什么

输入两个 4 位自然数,分别将其位展宽至 8 位偶数位和奇数位后交错合并输出。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断