阅读程序(第一题):统计二进制位数与 1 的个数

sd251538 组合题 共 个子题

以下问题均假定输入的 n 为不超过 2^31 − 1 的非负整数。

#include <iostream>
using namespace std;
int main() {
  int n;
  cin >> n;
  int x = 1, y = 1;
  while (n > 0) {
    if (n % 2 == 0) {
      ++x;
    } else {
      ++x;
      ++y;
    }
    n = n / 2;
  }
  cout << x << ' ' << y << endl;
  return 0;
}

子题 判断题

当输入为 3 时,程序输出为 3 3。( )

A

正确

B

错误

子题 判断题

将第 11 行的 ++x; 删除后,程序输出的两个数一定相等。( )

A

正确

B

错误

子题 判断题

假设输入为非负整数,则程序输出的第一个数一定不小于第二个数。( )

A

正确

B

错误

子题 单选题

将第 7 行的 while (n > 0) 改为 while (n >= 0) 后,程序可能出现的问题是( )

A

陷入死循环

B

输出结果比原来大

C

输出结果比原来小

D

输出结果不受影响

子题 单选题

当输入为 6 时,输出为( )

A

3 3

B

4 2

C

4 3

D

5 2

子题 单选题

若输入 n 依次取遍 0、1、2、…、2^31 − 1 中的所有整数,则程序输出的第二个数恰好为 2 的次数为( )

A

16

B

30

C

31

D

32

正在加载题目数据…
已答 /
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析
讨论
发布
登录后参与讨论 立即登录
发布讨论需先绑定并验证手机号 去绑定手机号
加载中…
我
我
回复 @
回复 @
发送
还没有人讨论,来发表第一条吧