c语言。随机输入0到9的四个一位数字,使用这些数字能排序出多少钟不一样的四位数,这些数全部打印出来。写出代码
时间: 2023-06-08 14:08:03 浏览: 85
这里是ChitGPT,你好啊。对于你的问题,我可以提供以下代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 取得不重复的随机数
int get_random_number(int numbers[], int size) {
int random_number;
do {
random_number = rand() % 10; // 生成0-9之间的随机数
for (int i = 0; i < size; i++) {
if (numbers[i] == random_number) {
random_number = -1; // 如果与之前已经生成的数字重复,则设置为-1
break;
}
}
} while (random_number == -1); // 如果与之前已经生成的数字重复,则继续生成
return random_number;
}
// 求排列数
int permutation(int n, int m) {
int result = 1;
for (int i = 0; i < m; i++) {
result *= (n - i);
}
return result;
}
int main() {
srand((unsigned)time(NULL)); // 初始化随机数种子
int numbers[4];
printf("Please enter 4 one-digit numbers (separated by spaces): ");
for (int i = 0; i < 4; i++) {
scanf("%d", &numbers[i]);
}
int count = 0;
int total_permutation = permutation(10, 4);
int *nums = (int *)malloc(total_permutation * sizeof(int));
for (int i = 0; i < total_permutation; i++) {
int index = i;
for (int k = 0; k < 10; k++) {
int j = index % (10 - k);
if (j == 0) {
nums[i] = k;
break;
}
index /= (10 - k);
}
int is_valid = 1;
for (int k = 0; k < 4; k++) {
if (nums[i] == numbers[k]) {
is_valid = 0;
break;
}
}
if (is_valid) {
printf("%d%d%d%d\n", nums[i], nums[i + 1], nums[i + 2], nums[i + 3]);
count++;
}
}
printf("\nTotal number of unique numbers with the given digits: %d\n", count);
free(nums);
return 0;
}
以上程序会从标准输入里读入4个一位数字,然后随机生成10个不同的一位数字,用这些数字进行排列,打印出所有由输入数字能组成的不同的四位数。同时还会输出一共有几种这样的四位数。
希望这个程序能够帮到你。如果有问题,请继续问我。
阅读全文