思路:假设有集合中有3个元素,则该集合的幂集有23=8个子集
元素 : 1 2 3
二进制:0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
若二进制数组中对应的是1 ,则输出该元素;
若二进制数组中对应的是0 ,则不输出。
程序如下:
1 #include "stdio.h" 2 3 void main() 4 { 5 int i,j,k; 6 int a[3]={1,2,3}; 7 int b[3]={0,0,0}; 8 for(j=0;j<8;j++) 9 { 10 printf("第%d个幂集是\n{ ",j+1); 11 for(i=0;i<3;i++) 12 { 13 if(b[i]==1) printf("%d ",a[i]); 14 } 15 printf("}\n"); 16 for(k=2;k>=0;k--) 17 { 18 if(b[k]==0) {b[k]=1;break;} 19 else b[k]=0; 20 } 21 } 22 scanf("%d",&i); 23 }