33,311
社区成员
发帖
与我相关
我的任务
分享
//当n=3时,表示有3个元素,其中第1,2个元素为基本元素,可标记为a,b,那么第3个元素为ab
//当n=7时,表示有7个元素,其中第1,2,4个元素为基本元素,标记为a,b,c,那么,第3个元素为ab,第5~7个元素依次为ac,bc,abc;
//当n=15时,基本元素为第1,2,4,8个元素,标记为a,b,c,d,第3个元素为ab,第5~7个元素为ac,bc,abc,第8个元素为d,第9~15个元素依次为:ad,bd,abd,cd,acd,bcd,abcd.
//能不能设计一个程序,当n不同时,把相应的元素列表生成出来。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXN 255
int i,n,v,L,j;
char b[17];
void out(int v) {
ltoa(v,b,2);
L=strlen(b);
for (j=0;j<L;j++) if (b[L-1-j]=='1') printf("%c",'a'+j);
printf(",");
}
int main() {
while (1) {
while (1) {
printf("\nInput n(1..65535,0 to exit):");
fflush(stdout);
rewind(stdin);
if (1==scanf("%d",&n)) {
if (1<=n && n<=65535) break;
if (0==n) return 0;
}
}
for (i=1;i<=n;i++) out(i);
}
return 0;
}
//
//Input n(1..65535,0 to exit):1
//a,
//Input n(1..65535,0 to exit):2
//a,b,
//Input n(1..65535,0 to exit):3
//a,b,ab,
//Input n(1..65535,0 to exit):4
//a,b,ab,c,
//Input n(1..65535,0 to exit):7
//a,b,ab,c,ac,bc,abc,
//Input n(1..65535,0 to exit):15
//a,b,ab,c,ac,bc,abc,d,ad,bd,abd,cd,acd,bcd,abcd,
//Input n(1..65535,0 to exit):23
//a,b,ab,c,ac,bc,abc,d,ad,bd,abd,cd,acd,bcd,abcd,e,ae,be,abe,ce,ace,bce,abce,
//Input n(1..65535,0 to exit):0
//