#include <iostream>
using namespace std;
int main() {
int n = 5, total = 0;
for (int mask = 0; mask < (1 << n); mask++) {
int bits = 0;
for (int i = 0; i < n; i++)
if (mask & (1 << i)) bits++;
if (bits == 2) total++;
}
cout << total << endl;
return 0;
}
- (1) 程序输出结果是______。(4 分)
- (2) 该程序实际统计的是______。(4 分)
- (3) 若将判断改为 if (bits == n),程序输出结果是______。(5 分)
答案解析
(1)统计恰好 2 个二进制位为 1 的掩码数 = C(5,2)=10,输出 10。(2)从 5 个元素中选取 2 个的组合数(子集枚举思想)。(3)bits==n 即 5 位全 1,只有 mask=31 一个,输出 1。