- 题目如下:
代码如下:
// RandomNum.cpp : 定义控制台应用程序的入口点。
//需求:明明的随机数
#include "stdafx.h"
using namespace std;
//@brief:产生[min_val,max_val]范围内的随机数
//@param:min_val:最小值
//@param:max_val:最大值
//@return:生成的随机数
int randNum(int min_val,int max_val)
{
//判断前检查 min_val 和 max_val的值大小对比
if (min_val > max_val)
{
cout << "不符合要求,min_val必须小等于max_val的值。" << endl;
return 0;
}
//
int num_val = rand()%(max_val-min_val+1) + min_val;
return num_val;
}
//unique函数只能用来去除相邻元素重复的现象。不相邻重复元素没法用:难受。
//使用先排序后去重的策略。
int _tmain(int argc, _TCHAR* argv[])
{
srand((unsigned int)(time(NULL))); //根据时间种子产生无规律的随机数
//1.设置一个随机数个数
int random_n = 0; //随机数1-1000;
do
{
cin >> random_n; //输入一个随机整数的个数
} while (random_n>1000 || random_n<1 );
//2.设置随机数数组,并赋值
cout << random_n << endl;
int * array_random = new int[random_n]; //定义一个不定长的数组的方式
for (int i=0;i<random_n;i++)
{
array_random[i] = randNum(1,1000); //赋值随机数
}
for (int k = 0 ; k <random_n; k++)
{
cout << array_random[k] << endl;
}
//3.随机数组排序并删除重复元素
cout << "开始进行去重操作:" << endl;
std::vector<int>unique_vec;//去重好的数组
for (int j = 0; j < random_n ; j++)
{
bool is_repeat = false;//重复默认为false;
for (int m = 0; m <unique_vec.size();m++)
{
if (unique_vec[m] == array_random[j])
{
is_repeat = true;
break;
}
}
//不重复时,添加
if (is_repeat == false)
{
unique_vec.push_back(array_random[j]);
}
}
//4.进行排序
std::sort(unique_vec.begin(),unique_vec.end());
cout << "输出排序结果:" << endl;
for (int index = 0; index < unique_vec.size(); index++)
{
cout << unique_vec[index] << endl;
}
delete array_random;
system("pause");//暂停,防止自动退
return 0;
}
``