// 输入四个字母实现全排列
#include <stdio.h>
#define MAX 30
typedef struct{
char a0,a1,a2,a3;
}string;//结构体类型
int main()
{
string str[MAX];
char ch,a0,a1,a2,a3,a[4];
int n=0,i=0,j,k,m,q,num=0,sign=0;
printf("please input 4 chars :/n");
while((ch=getchar())!='/n')
a[i++]=ch; //存放字符
printf("The result is :/n");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
for(k=0;k<4;k++)
for(m=0;m<4;m++)
{
if(i!=j&&i!=k&&i!=m&&j!=k&&j!=m&&k!=m) //保证不重复输出
{
str[n].a0=a[i];
str[n].a1=a[j];
str[n].a2=a[k];
str[n].a3=a[m]; //输出的组合保存到str[N]中
n++; //记数
for(q=0;q<n-1;q++)//注意是n-1
{
if(str[q].a0==a[i]&&str[q].a1==a[j]&&str[q].a2==a[k]&&str[q].a3==a[m] )
goto next;
}
printf("%c%c%c%c ",a[i],a[j],a[k],a[m]);
num++; //如果与前面不重复则输出
next:
;
}//if
} //for
printf("/nnum=%d ",num);
ch=getch();
return 0;
}