#include <stdio.h>
int main()
{
	int X[4] = {}, i, count = 0;
	int n = 4;
	for(X[4]=0;X[4]<2;X[4]++)
		for(X[3]=0;X[3]<2;X[3]++)
			for(X[2]=0;X[2]<2;X[2]++)
				for(X[1]=0;X[1]<2;X[1]++)
				{ 
					printf("{");
					for(i=1;i<=n;i++)
						if(X[i])
						{
							printf("%d",i);
						}
					printf("}\n");//换行一次表示一个子集打印结束,n个元素表示子集有2^n个子集 
					++count;
				}
	printf("共%d个子集", count);
	return 0;
}

========================================Talk is cheap, show me the code=======================================