用C++写一个程序,实现“打印输出n元(n=1,2,3,4,5,6)集合的幂集的所有元素”
时间: 2024-05-11 20:17:19 浏览: 14
以下是使用C语言实现该功能的程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main() {
int n, i, j, k;
printf("请输入n的值(1-6):");
scanf("%d", &n);
if(n < 1 || n > 6) {
printf("输入不合法!");
exit(1);
}
int count = pow(2, n); // 幂集中元素的个数为2的n次方
int **power_set = (int **)malloc(count * sizeof(int *)); // 动态申请二维数组
for(i = 0; i < count; i++) {
power_set[i] = (int *)malloc(n * sizeof(int));
}
for(i = 0; i < count; i++) {
for(j = 0; j < n; j++) {
k = 1 << j; // 用位运算计算出2的j次方
if(i & k) { // 判断i的二进制表示中第j位是否为1
power_set[i][j] = 1;
}
else {
power_set[i][j] = 0;
}
}
}
printf("集合的幂集的所有元素如下:\n");
for(i = 0; i < count; i++) {
printf("{ ");
for(j = 0; j < n; j++) {
if(power_set[i][j] == 1) {
printf("%d ", j+1);
}
}
printf("}\n");
}
for(i = 0; i < count; i++) { // 释放动态申请的内存
free(power_set[i]);
}
free(power_set);
return 0;
}
```
程序运行示例:
```
请输入n的值(1-6):4
集合的幂集的所有元素如下:
{ }
{ 1 }
{ 2 }
{ 1 2 }
{ 3 }
{ 1 3 }
{ 2 3 }
{ 1 2 3 }
{ 4 }
{ 1 4 }
{ 2 4 }
{ 1 2 4 }
{ 3 4 }
{ 1 3 4 }
{ 2 3 4 }
{ 1 2 3 4 }
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)