为一个总数为N的有序号数组中r个数随机赋值为1,其余赋值为2的C语言代码
时间: 2023-03-05 14:36:19 浏览: 147
C语言产生随机数的代码
5星 · 资源好评率100%
以下是一个C语言代码示例,将一个长度为N的有序整数数组中的r个数随机赋值为1,其余赋值为2:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void assign_values(int arr[], int n, int r) {
int i, j;
srand(time(NULL)); // 使用系统时间初始化随机数生成器
for (i = 0; i < n; i++) {
if (i < r) {
arr[i] = 1;
} else {
j = rand() % (n - i); // 在剩余未赋值的数中随机选择一个位置
arr[i] = arr[j];
arr[j] = 2; // 将选中的位置赋值为1,已赋值的位置为2
}
}
}
int main() {
int n = 10; // 数组长度为10
int r = 3; // 随机赋值1的元素个数为3
int arr[n];
assign_values(arr, n, r);
int i;
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
这个程序首先使用`srand`函数以当前系统时间初始化随机数生成器,然后使用循环遍历数组中的每个元素。如果元素的下标小于r,就将该元素赋值为1,否则就在剩余未赋值的元素中随机选择一个位置,将选中的位置赋值为1,已赋值的位置赋值为2。最后,主函数中的循环输出数组中的所有元素。
阅读全文