www.pudn.com > gc.rar > GC_8_11.C
# include# include # define N 20 char w[N]; void perm(int n,char *s) { char s1[N]; int i; if(n < 1) printf("%s\n",w); /*一个排列生成输出*/ else { /*设定本层次字符,并递归调用生成更深层次字符*/ strcpy(s1,s); /*保存本层次可用的字符*/ for(i = 0; *(s1 + i); i++) { /*依次选本层次可用字符*/ *(w+n-1) = *(s1+i); /*选用字符填入正生成的字符排列中*/ *(s1+i) = *s1; *s1 = *(w+n-1); perm(n-1,s1+1); /*递归*/ } } } void main() { char s[20]; int n; printf("输入要排列的字符串\n"); scanf("%s",&s); printf("你想生成有几个字符组成的字符排列\n"); scanf("%d",&n); perm(n,s); //perm(3,"abcdefghi"); }