c语言输入一个字符串,输出字符串的全排列
时间: 2023-09-03 15:03:14 浏览: 277
要实现输出字符串的全排列,可以使用递归的方式来解决。以下是C语言实现的示例代码:
```C
#include <stdio.h>
#include <string.h>
void swap(char *a, char *b) {
char temp = *a;
*a = *b;
*b = temp;
}
void permute(char *str, int left, int right) {
if (left == right) {
printf("%s\n", str);
} else {
for (int i = left; i <= right; i++) {
swap((str + left), (str + i));
permute(str, left + 1, right);
swap((str + left), (str + i)); // 恢复原始的顺序
}
}
}
int main() {
char str[100];
printf("请输入字符串:");
scanf("%s", str);
int len = strlen(str);
printf("字符串的全排列:\n");
permute(str, 0, len - 1);
return 0;
}
```
以上代码中,我们定义了两个辅助函数 `swap` 和 `permute`。`swap` 函数用于交换两个字符的位置,`permute` 函数用于递归地生成全排列。
在 `main` 函数中,首先要求用户输入一个字符串,并利用 `strlen` 函数获取字符串的长度。然后调用 `permute` 函数生成字符串的全排列,其中的参数 `0` 和 `len - 1` 分别表示字符串的左边界和右边界。
运行以上代码,可以输出输入字符串的全排列。例如,输入字符串 "abc",则输出为:
abc
acb
bac
bca
cab
cba
阅读全文