c语言中如何从存有1000数据的数组中,随机获取100个数据呢
时间: 2023-11-13 07:03:04 浏览: 55
您可以使用C语言中的rand()函数来生成一个随机数,然后使用该随机数访问数组中对应的数据,重复这个过程直到获取100个数据为止。具体实现方法可以参考以下代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int arr[1000];
int i, j, temp;
srand((unsigned)time(NULL));
//初始化数组
for (i = 0; i < 1000; i++)
{
arr[i] = i;
}
//将数组打乱
for (i = 999; i >= 1; i--)
{
j = rand() % (i + 1);
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
//获取100个随机数
for (i = 0; i < 100; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
```
相关问题
c语言中如何从存有1000数据的字符串数组中,随机获取100个数据呢
你可以使用随机数生成器来生成100个在0到999之间的随机数,然后通过这些随机数作为下标来访问字符串数组,从而得到100个随机数据。具体实现可参考下面的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_LEN 1000 // 字符串数组的最大长度
#define PICK_NUM 100 // 随机获取数据的个数
int main() {
char str_arr[MAX_LEN][20]; // 定义字符串数组
int i, j, rand_num, picked_num = 0;
int pick_arr[PICK_NUM] = {0}; // 标记已经选中的下标
srand((unsigned int)time(NULL)); // 初始化随机数种子
// 初始化字符串数组,本示例使用数字字符串,实际情况可以根据需要进行修改
for (i = 0; i < MAX_LEN; i++) {
sprintf(str_arr[i], "%d", i);
}
// 随机获取100个数据
while (picked_num < PICK_NUM) {
rand_num = rand() % MAX_LEN; // 生成随机数
for (j = 0; j < PICK_NUM; j++) {
if (pick_arr[j] == rand_num) { // 检查这个下标是否已经被选中
break;
}
}
if (j >= PICK_NUM) { // 如果这个下标没有被选中过,则取出对应元素
printf("%s ", str_arr[rand_num]);
picked_num++;
pick_arr[picked_num - 1] = rand_num; // 标记这个下标已经被选中
}
}
return 0;
}
```
c语言如何判断数组中存了几个数据
在C语言中,数组是一系列相同类型的元素的集合。如果你想知道数组中存了多少个数据,可以使用数组的长度除以每个元素的大小来计算。例如,如果你有一个整数数组arr,可以使用以下代码来计算存储在数组中的元素数量:
```c
int arr[] = {1, 2, 3, 4, 5};
int num_elements = sizeof(arr) / sizeof(arr[0]);
```
在这个例子中,arr数组包含5个整数元素,每个元素占用4个字节(在32位系统中)。因此,使用sizeof操作符计算数组的长度为20个字节。通过将数组长度除以每个元素的大小,我们可以得到存储在数组中的元素数量,即5。