c语言随机排列n个元素
时间: 2024-05-01 10:17:59 浏览: 48
要随机排列n个元素,可以使用数组存储这些元素,并且使用随机数来随机选择数组中的位置交换元素,代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void random_permutation(int arr[], int n) {
srand(time(NULL)); // 初始化随机数种子
for (int i = n - 1; i > 0; i--) {
int j = rand() % (i + 1); // 随机选择一个位置 j
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp; // 交换元素
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
random_permutation(arr, n);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
这段代码可以随机排列数组 {1, 2, 3, 4, 5},输出结果可能是 5 1 2 3 4 或者 2 5 1 4 3 等等。
相关问题
C语言随机输入10个数字,输出这10数字大小顺序排列。
在C语言中,你可以使用标准库函数`srand()`和`rand()`生成随机数,然后结合数组和循环结构对数字进行排序。下面是一个简单的示例,展示了如何实现这个功能:
```c
#include <stdio.h>
#include <stdlib.h> // 包含rand()和srand()
#include <time.h> // 包含time()获取当前时间
// 函数声明,用于冒泡排序
void bubble_sort(int arr[], int n);
int main() {
int numbers[10];
srand(time(0)); // 设置随机数种子,使用当前时间以保证每次运行结果不同
// 随机填充数组
for (int i = 0; i < 10; ++i) {
numbers[i] = rand() % 100; // 生成0到99之间的随机整数
printf("Input number %d: %d\n", i+1, numbers[i]);
}
// 排序并输出
bubble_sort(numbers, 10);
printf("\nSorted numbers:\n");
for (int i = 0; i < 10; ++i) {
printf("%d ", numbers[i]);
}
printf("\n");
return 0;
}
// 冒泡排序函数
void bubble_sort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// 交换元素
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
```
在这个程序中,我们首先生成10个随机数并打印出来,然后使用冒泡排序算法对它们进行排序,并将结果输出。
随机生成n个成绩,从低到高排序c语言
在C语言中,要随机生成指定数量(n)的成绩并按照升序排列,你可以使用头文件<stdlib.h>中的rand()函数以及time()函数来初始化随机数种子,并结合数组操作。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM_SCORES 5 // 指定生成的成绩数量
void sort_scores(int scores[], int n) {
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (scores[j] > scores[j + 1]) { // 交换如果当前元素大于下一个元素
int temp = scores[j];
scores[j] = scores[j + 1];
scores[j + 1] = temp;
}
}
}
}
int main() {
srand(time(0)); // 设置随机数种子,使其每次运行都不同
int scores[NUM_SCORES]; // 定义一个包含成绩的数组
for (int i = 0; i < NUM_SCORES; i++) {
scores[i] = rand() % 100 + 1; // 随机生成0到100之间的整数作为成绩
}
printf("原始成绩:\n");
for (int i = 0; i < NUM_SCORES; i++) {
printf("%d ", scores[i]);
}
sort_scores(scores, NUM_SCORES);
printf("\n排序后的成绩:\n");
for (int i = 0; i < NUM_SCORES; i++) {
printf("%d ", scores[i]);
}
return 0;
}
```
阅读全文