//输入一个人的名字,对名字进行排列组合
//涉及到内存分配问题,处理防溢出
/*贾平凹
贾平凹
平贾凹
凹平贾
贾凹平
*/
#include <stdio.h>
#include <malloc.h>
#define MAX_SIZE 100
//将buf中第i,i+1与第j,j+1个位置的信息交换
void exchange(char buf[],int i,int j){
char temp[2];
temp[0]=buf[i];temp[1]=buf[i+1];
buf[i] = buf[j];buf[i+1] = buf[j+1];
buf[j] = temp[0];buf[j+1] = temp[1];
}
int main()
{
char *buf = NULL;
int i,len=0;
buf = (char*)malloc(MAX_SIZE);
for(i=0;i<MAX_SIZE;i++) buf[i]='\0';
scanf("%s",buf);
for(i=0;i<MAX_SIZE;i=i+2)
{
if (buf[i+1]=='\0')
break;
else
len++;
}
printf("\n%s\n",buf);
for(int k=0;k<len-1;k++)
{
int start=k*2;
for (int i = start+2; i < len*2; i+=2) {
exchange(buf,start,i);//交换
printf("%s\n",buf); //显示
exchange(buf,start,i); //交换回来
}
}
return 0;
}
C语言 汉字名字排列组合
猜你喜欢
转载自blog.csdn.net/laocooon/article/details/121724603
今日推荐
周排行