本文主要是介绍CSP 2023 提高级第一轮 CSP-S 2023初试题 程序阅读第一题解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、程序阅读
#include <iostream> using namespace std;unsigned short f(unsigned short x) {x ^= x << 6;x ^= x >> 8;return x; } int main() {unsigned short x;cin >> x;unsigned short y = f(x);cout << y << endl;return 0; }
二、题目分析
假设输入的 xx 是不超过 6553565535 的自然数,完成下面的判断题和单选题:
判断题
1. 当输入非零时,输出一定不为零。(对)
【输入非零,说明x的二进制形式中一定有一个1,原本最右边的1对应左移之后的那一位一定是0,所以执行第一次后一定还有1;第二次同理,执行完第一次的到的数,在右移之前最左边的1对应右移之后的那一位一定是0,所以执行完第二次之后依然有1,故大于0】
2. (2 分)将
f
函数的输入参数的类型改为unsigned int
,程序的输出不变。(错)【改成unsigned int 类型之后,执行第一步后本来应该消失的高位却移到后面参与运算,改变了第一次的结果;第二次右移8位时,第一次运算结果多余部分的前8位移了回来,参与了运算,直接改变了结果】
3. 当输入为
65535
时,输出为63
。(对)【直接计算,^表示异或运算】
4. 当输入为
1
时,输出为64
。(错)【答案是65】
单选题
1. 当输入为
512
时,输出为(B)。A.
33280
B.
33410
C.
33106
D.
33346
【
答案为33410】2. 当输入为
64
时,执行完第 55 行后x
的值为(C)。A.
8256
B.
4130
C.
4128
D.
4160
【
注意是执行完第 55 行】
这篇关于CSP 2023 提高级第一轮 CSP-S 2023初试题 程序阅读第一题解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!