C++编个小小的程序,大侠们别说不会啊!
来源:百度知道 编辑:UC知道 时间:2024/05/31 13:28:07
输出1,2,3
2,1,3
3,2,1
2,3,1
1,3,2
3,1,2
3,1,2
刚刚问题说得不是很明确。1、数组是自己输入的。2、用递归。
新写的代码,用了递归,输入用的是参数表。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
static void arrange(char *s, int start, int end);
int main(int argc, char **argv)
{
if (argc != 2) {
printf("usage: ./allrange <string>\n");
exit(EXIT_FAILURE);
}
arrange(argv[1], 0, strlen(argv[1]));
exit(EXIT_SUCCESS);
}
static void arrange(char *s, int start, int end)
{
int i;
char tmp;
if (start == end) {
printf("%s\n", s);
} else {
for (i = start; i < end; i++) {
tmp = s[start]; s[start] = s[i]; s[i] = tmp;
arrange(s, start + 1, end);
tmp = s[start]; s[start] = s[i]; s[i] = tmp;
}
}
}
这个题目是需要考虑输入 1,1,2 的情况,如果这样,输出的应该是<