#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<conio.h>
main()
{
FILE *p;
int a,e,h,g,i,d,f,j,k,l,m,n,o,q,r,s,t;
char b[129];
char c;
p=fopen ("d:\\pailie.dat","w+");
printf("输入排列位数\n");
scanf("%d",&a);//a为排列位数
printf("\n");
c=getchar();//字符c吸收回车符,不然就必须先输入字符串再输入数字
if (a>8||a<1){
printf("只有1到8位的情况");
return 0;}
printf("输入可能组成排列的数字字母和符号,要求不重复输入并且不以空格分隔(空格是符号)\n");
gets (b);//b这个字符串为可能构成排列的数字字母和符号,129是ascii字符集的127(从0到127)加2个
printf("\n");
e=strlen (b);//e为可能构成排列的数字字母和符号的个数
if (a==3)
{
for(h=0;h<e;h++)
{
for(g=0;g<e;g++)
{
for(i=0;i<e;i++)
{
putchar (b[h]);
fputc (b[h],p);
putchar(b[g]);
fputc (b[g],p);
putchar (b[i]);
fputc (b[i],p);
printf("\n");
fputc ('\n',p);
}
}
}
}
if (a==2)
{
for(h=0;h<e;h++)
{
for(g=0;g<e;g++)
{
putchar (b[h]);
fputc (b[h],p);
putchar(b[g]);
fputc (b[g],p);
printf("\n");
fputc ('\n',p);
}
}
}
if (a==1)
{
for(h=0;h<e;h++)
{
putchar (b[h]);
fputc (b[h],p);
printf("\n");
fputc ('\n',p);
}
}
if (a==4)
{
for(h=0;h<e;h++)
{
for(g=0;g<e;g++)
{
for(i=0;i<e;i++)
{
for(d=0;d<e;d++)
{
putchar (b[h]);
fputc (b[h],p);
putchar(b[g]);
fputc (b[g],p);
putchar (b[i]);
fputc (b[i],p);
putchar (b[d]);
fputc (b[d],p);
printf("\n");
fputc ('\n',p);
}
}
}
}
}
if (a==5)
{
for(h=0;h<e;h++)
{
for(g=0;g<e;g++)
{
for(i=0;i<e;i++)
{
for(d=0;d<e;d++)
{
for(f=0;f<e;f++)
{
putchar (b[h]);
fputc (b[h],p);
putchar(b[g]);
fputc (b[g],p);
putchar (b[i]);
fputc (b[i],p);
putchar (b[d]);
fputc (b[d],p);
putchar (b[f]);
fputc (b[f],p);
printf("\n");
fputc ('\n',p);
}
}
}
}
}
}
if (a==6)
{
for(h=0;h<e;h++)
{
for(g=0;g<e;g++)
{
for(i=0;i<e;i++)
{
for(d=0;d<e;d++)
{
for(f=0;f<e;f++)
{
for(j=0;j<e;j++)
{
putchar (b[h]);
fputc (b[h],p);
putchar(b[g]);
fputc (b[g],p);
putchar (b[i]);
fputc (b[i],p);
putchar (b[d]);
fputc (b[d],p);
putchar (b[f]);
fputc (b[f],p);
putchar (b[j]);
fputc (b[j],p);
printf("\n");
fputc ('\n',p);
}
}
}
}
}
}
}
if (a==7)
{
for(h=0;h<e;h++)
{
for(g=0;g<e;g++)
{
for(i=0;i<e;i++)
{
for(d=0;d<e;d++)
{
for(f=0;f<e;f++)
{
for(j=0;j<e;j++)
{
for(k=0;k<e;k++)
{
putchar (b[h]);
fputc (b[h],p);
putchar(b[g]);
fputc (b[g],p);
putchar (b[i]);
fputc (b[i],p);
putchar (b[d]);
fputc (b[d],p);
putchar (b[f]);
fputc (b[f],p);
putchar (b[j]);
fputc (b[j],p);
putchar (b[k]);
fputc (b[k],p);
printf("\n");
fputc ('\n',p);
}
}
}
}
}
}
}
}
if (a==8)
{
for(h=0;h<e;h++)
{
for(g=0;g<e;g++)
{
for(i=0;i<e;i++)
{
for(d=0;d<e;d++)
{
for(f=0;f<e;f++)
{
for(j=0;j<e;j++)
{
for(k=0;k<e;k++)
{
for(l=0;l<e;l++)
{
putchar (b[h]);
fputc (b[h],p);
putchar(b[g]);
fputc (b[g],p);
putchar (b[i]);
fputc (b[i],p);
putchar (b[d]);
fputc (b[d],p);
putchar (b[f]);
fputc (b[f],p);
putchar (b[j]);
fputc (b[j],p);
putchar (b[k]);
fputc (b[k],p);
putchar (b[l]);
fputc (b[l],p);
printf("\n");
fputc ('\n',p);
}
}
}
}
}
}
}
}
}
}
结果做成这样了。。。虽然可以用但是感觉不好呀。。。。。。有种输掉什么的感觉