用c语言编写一个能对数组进行乱序的程序。 编程要求 根据提示,在右侧编辑器补充代码,对数组进行乱序处理(洗牌算法)。 测试说明 平台会对你编写的代码进行测试: 测试输入:1,2,3,4,5; 预期某个输出:4,2,5,3,1;
时间: 2024-10-23 10:13:21 浏览: 64
要在C语言中编写一个数组乱序(洗牌)的程序,我们可以使用Fisher-Yates(也称Knuth)洗牌算法。这个算法通过随机交换数组元素达到打乱顺序的效果。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 数组大小
#define SIZE 5
void shuffle(int arr[], int n) {
srand(time(0)); // 设置随机数种子
for (int i = n - 1; i > 0; i--) {
int j = rand() % (i + 1); // 随机索引范围是 [0, i]
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
int main() {
int arr[SIZE] = {1, 2, 3, 4, 5};
printf("原始数组: ");
for (int i = 0; i < SIZE; i++) {
printf("%d ", arr[i]);
}
// 打乱数组
shuffle(arr, SIZE);
printf("\n打乱后的数组: ");
for (int i = 0; i < SIZE; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
在这个例子中,`shuffle()`函数接受一个整型数组和它的长度作为参数,然后用随机数替换每个位置的元素。`main()`函数中首先打印原始数组,然后调用`shuffle()`函数,最后再次打印打乱后的数组。
阅读全文