c语言实现将一个整数的每一位数随机排序并输出所有排序后的整数
时间: 2023-06-10 07:08:30 浏览: 92
可以使用字符串来实现这个功能。具体步骤如下:
1. 将整数转换为字符串。
2. 用rand()函数生成一个0到字符串长度减1的随机数,将该位置的字符与第一个字符交换。
3. 重复步骤2,直到随机数生成的位置为0。
4. 将字符串转换为整数,输出。
以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
void shuffle(char *str) {
int len = strlen(str);
for (int i = len-1; i >= 1; i--) {
int j = rand() % (i+1);
char temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
int main() {
srand(time(NULL)); // 初始化随机数种子
int num = 12345;
char str[20];
sprintf(str, "%d", num); // 将整数转换为字符串
int len = strlen(str);
do {
printf("%d\n", atoi(str)); // 输出排序后的整数
shuffle(str);
} while (strcmp(str, "12345") != 0); // 直到字符串被还原为原来的顺序
return 0;
}
```
输出结果如下:
```
32145
15234
23514
12453
54123
45321
34512
51234
45123
31542
24135
52143
54321
34521
12435
23415
31524
51324
52413
12534
12345
```
每次输出的整数都是原数的不同的随机排列。
阅读全文