#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
/*
1. 随机构造一个长度为N数组,使得该数组的某个元素的重复了N/2次以上。
2. 统一一个数组中各元素的重复数(出现的次数)
*/
// n>2才好
int create_array(int arr[], int n)
{
int i, j;
srand(time(NULL));
// 随机决定一个元素
int value = rand() % 1000;
// 随机决定它出现的次数 (n/2 ~n)之间吧
int half = n / 2;
int times = rand() % half + half; // n/2 ~n之间
// 清空为-1
for(i=0; i<n; i++)
arr[i] = -1;
// 该元素插入数组,随机插入times次
for(i=0; i<times; i++)
{
int pos = rand() % n; // 决定其位置
// 插入数组,如果该位置已经有值,则后移一位插入
// 尝试n次,总能找到一个空位置
for(j=0; j<n; j++)
{
int pa = (pos + j) % n;
if(arr[pa] == -1) // 找到一个空位置
{
arr[pa] = value;
break;
}
}
}
// 其他位置插入随机数
for(i=0; i<n; i++)
{
if(arr[i] == -1)
C++练习:随机构造数组
最新推荐文章于 2024-05-01 23:48:02 发布
本文展示了如何使用C++编程语言构造一个包含重复元素的数组,并统计数组中各元素出现的次数。代码包括`create_array`函数用于生成随机数组,以及`statistics`函数用于统计元素的重复数。在`main`函数中,数组被打印并展示其元素的统计信息。
摘要由CSDN通过智能技术生成