用C语言写一个字符串的全排列
时间: 2023-12-02 22:03:00 浏览: 54
以下是一个使用递归方法实现字符串全排列的C语言代码:
```C
#include <stdio.h>
#include <string.h>
void swap(char *a, char *b) {
char temp = *a;
*a = *b;
*b = temp;
}
void permutation(char *str, int start, int end) {
if (start == end) {
printf("%s\n", str);
} else {
for (int i = start; i <= end; i++) {
swap(str + start, str + i);
permutation(str, start + 1, end);
swap(str + start, str + i);
}
}
}
int main() {
char str[100];
printf("Enter a string: ");
scanf("%s", str);
int length = strlen(str);
printf("All permutations of the string:\n");
permutation(str, 0, length - 1);
return 0;
}
```
在这个代码中,`swap`函数用于交换两个字符的位置。`permutation`函数是递归调用的主函数,它接收一个字符串、开始下标和结束下标为参数,用于计算所有可能的排列。当开始下标等于结束下标时,输出当前字符串。否则,将每个字符与开始字符交换位置,并递归调用`permutation`函数。最后,`main`函数获取用户输入的字符串,并调用`permutation`函数进行全排列。