c语言abc的顺序排列怎么排列,C语言每日小练(三)——abc排列问题

例:

用户输入:a,b,c

输出: a,b,c,ab,ac,bc,abc

解:此程序应不仅适用于3个字符的情况~运用递归即可解决:

法1:

#include

#include

#define MAX 100

int top = 0;//缓冲区指针。

int count = 1;//统计组合数。

void search(char *a, char *b, int start)//a:待组合的字符串;b:缓冲区数组;start:当前开始位置。

{

int i, len = strlen(a);

for(i = start; i < len; i++)

{

b[top++] = a[i];//将选出的字符存入缓冲区。

printf("Line: %2d%s\n", count++, b);//将缓冲区中选出的字符输出。

if(i < len-1) search(a, b, i+1);//若能继续选择字符,则递归。

b[--top] = '\0';//将缓冲区中最后一个字符弹出,缓冲区指针前移一个单位。

}

}

int main()

{

char a[MAX], b[MAX];

int n;

memset(a, '\0', sizeof(a));

memset(b, '\0', sizeof(b));

printf("请输入待组合字符串:");

scanf("%s", a);

search(a, b, 0);

return 0;

}运行结果:

c语言abc的顺序排列怎么排列,C语言每日小练(三)——abc排列问题_第1张图片

法2:

#include

#include

int main()

{

int i, j, n;

char str[100];

scanf("%s", str);

n = strlen(str);

for (i = 1; i < 1<

{

for (j = 0; j <= n-1; ++j)//依次输出符合条件的字符。

if (1<

puts("");

}

return 0;

}结果:

c语言abc的顺序排列怎么排列,C语言每日小练(三)——abc排列问题_第2张图片

c语言abc的顺序排列怎么排列,C语言每日小练(三)——abc排列问题_第3张图片

你可能感兴趣的:(c语言abc的顺序排列怎么排列)