c语言。随机输入四个一位数字,使用这四个数字能排序出多少钟不一样的四位数,这些数全部打印出来。写出代码
时间: 2023-06-08 07:07:58 浏览: 119
好的,我明白了。对于你的问题,可以使用递归的方法进行求解。代码如下:
```c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 50
void swap(char *a, char *b)
{
char temp;
temp = *a;
*a = *b;
*b = temp;
}
void permute(char *arr, int left, int right, char (*result)[MAX], int *n)
{
int i;
if (left == right)
{
(*n)++;
strcpy(result[*n - 1], arr);
}
else
{
for (i = left; i <= right; i++)
{
swap((arr + left), (arr + i));
permute(arr, left + 1, right, result, n);
swap((arr + left), (arr + i));
}
}
}
int main()
{
int n = 0, i, j;
char num[5];
char result[MAX][MAX];
scanf("%s", num);
permute(num, 0, 3, result, &n);
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
if (i != j)
{
if (strcmp(result[i], result[j]) == 0)
{
break;
}
}
}
if (j == n)
{
printf("%s ", result[i]);
}
}
return 0;
}
```
输入四个数字后,程序会先进行全排列,然后再去重输出不重复的四位数字。
阅读全文