用C语言写一个程序使四个数字随机排列
时间: 2023-03-29 08:03:11 浏览: 186
你好,以下是回答:
可以使用C语言的rand()函数生成随机数,再使用数组和循环语句实现四个数字的随机排列。具体代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int nums[4] = {1, 2, 3, 4}; // 定义一个包含四个数字的数组
int i, j, temp;
srand(time(NULL)); // 初始化随机数种子
// 随机交换数组中的元素
for (i = 3; i > ; i--)
{
j = rand() % (i + 1);
temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
// 输出随机排列后的数字
for (i = ; i < 4; i++)
{
printf("%d ", nums[i]);
}
return ;
}
相关问题
c语言。随机输入0到9的四个一位数字,使用这些数字能排序出多少钟不一样的四位数,这些数全部打印出来。写出代码
这里是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个不同的一位数字,用这些数字进行排列,打印出所有由输入数字能组成的不同的四位数。同时还会输出一共有几种这样的四位数。
希望这个程序能够帮到你。如果有问题,请继续问我。
阅读全文