C语言从键盘输入任意一个非空集合,求集合的幂集,直接给出代码
时间: 2024-04-11 15:27:38 浏览: 154
当然,我可以给你一个示例的C语言代码来实现输入集合并求解幂集。以下是一个简单的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void printSubset(int *set, int size, int *subset, int subsetSize) {
printf("{");
for (int i = 0; i < subsetSize; i++) {
printf("%d", set[subset[i]]);
if (i < subsetSize - 1) {
printf(",");
}
}
printf("}");
}
void generatePowerSet(int *set, int size) {
int subsetSize = 0;
int *subset = malloc(size * sizeof(int));
int powerSetSize = pow(2, size);
for (int i = 0; i < powerSetSize; i++) {
subsetSize = 0;
for (int j = 0; j < size; j++) {
if (i & (1 << j)) {
subset[subsetSize++] = j;
}
}
printSubset(set, size, subset, subsetSize);
printf("\n");
}
free(subset);
}
int main() {
int size;
printf("请输入集合的大小:");
scanf("%d", &size);
int *set = malloc(size * sizeof(int));
printf("请输入集合的元素:");
for (int i = 0; i < size; i++) {
scanf("%d", &set[i]);
}
generatePowerSet(set, size);
free(set);
return 0;
}
```
这个代码会先要求输入集合的大小,然后逐个输入集合的元素。接着,它会生成并输出集合的幂集。例如,如果输入集合大小为3,元素为1、2、3,则输出的幂集为:
{}, {1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3}。
希望这个代码对你有所帮助!
阅读全文