明明的随机数
2016-07-18 10:45
267 查看
/**
题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),
对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,
按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
Input Param
n 输入随机数的个数
inputArray n个随机整数组成的数组
Return Value
OutputArray 输出处理后的随机整数
注:测试用例保证输入参数的正确性,答题者无需验证。
输入描述 :
输入多行,先输入随机整数的个数,在输入相应个数的整数
输出描述 :
返回多行,处理后的结果
**/
题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),
对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,
按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
Input Param
n 输入随机数的个数
inputArray n个随机整数组成的数组
Return Value
OutputArray 输出处理后的随机整数
注:测试用例保证输入参数的正确性,答题者无需验证。
输入描述 :
输入多行,先输入随机整数的个数,在输入相应个数的整数
输出描述 :
返回多行,处理后的结果
**/
代码
#include<iostream> #include<string.h> using namespace std; int ProcessRandomArray(int InputArray[], int n,int(& OutputArray)[1000],int& UniqueNum){//去重操作,输出为OutputArray数组,去重后的数据个数为UniqueNum,这里采用数组引用,得定义数组大小,仅作练习,须改进成指针传递 int pt = 0; UniqueNum = 0; bool arr[1000]; memset(arr, 0, 1000); for (int i = 0; i < n; i++){//bool数组标志是否重复 if (arr[InputArray[i]] == 0){ OutputArray[pt] = InputArray[i]; arr[InputArray[i]] = 1; pt++; UniqueNum++; }//end if }//end for return 0; } int BubbleSortingArray(int InputArray[], int length){//排序好的数组通过InputArray输出,采用冒泡排序,须改进为快排算法 int temp; for (int i = 0; i < length-1; i++){//length-1这一点易误为length for (int j = 0; j<length - 1-i; j++){ if (InputArray[j]>InputArray[j + 1]){ temp = InputArray[j]; InputArray[j] = InputArray[j + 1]; InputArray[j + 1] = temp; }//end if }// end for }//end for return 0; } int main(){ int n = 0,i = 0,UniqueNum=0,Input; int InputArray[1000] = { 0}, OutputArray[1000] = {0}; while(cin>>n && n!= EOF){//多组测试案例,多次输入 if (n == 0 || n > 1000) continue; int *pt = NULL;//防止分配内存失败,进行异常处理 try { pt = new int ; // 其它代码 } catch (const bad_alloc e) { return -1; } memset(pt, 0, sizeof(int)*n); for (int i = 0; i < n; i++){ cin >> Input; *(pt + i) = Input; } for (int i = 0; i < n; i++)//由于下面函数调用采用数组输入,因此将指针转换为数组 InputArray[i] = *(pt + i); ProcessRandomArray(InputArray, n, OutputArray, UniqueNum); BubbleSortingArray(OutputArray, UniqueNum); int i = 0;//容易误采用前面的i值,出现输入错误 while (OutputArray[i] != '\0'&& i<UniqueNum) { printf("%d\n", OutputArray[i]); i++; } free(pt);//每次输出后释放内存 } return 0; }
相关文章推荐
- 华为路由器密码恢复
- 华为交换机的后缀详解
- 华为RAID 1阵列卡设置教程图文详解
- 华为的IPD流程
- 华为手机真机调试设置
- 以华为为例告诉你HRBP 到底是什么?
- 华为OR小米,谁是智能手机出货量之王?
- 抢先小米!NFC支付又添一家 华为推出Huawei Pay
- 华为员工真实工资揭秘:十年青春才能换来百万年薪
- 深刻!一张图看懂在华为和腾讯工作的区别
- SE100101系统概述
- 华为防火墙配置演示 Quidway SecPath
- 华为防火墙地址转换
- 华为(VRRP-OSPF-STP-SNMP链路聚合)
- S9300做VRRP的配置
- 配置负载分担VRRP
- 华为9306(9300系列)在不删除配置的情况下恢复密码
- 思科和华为交换机常用命令对比学习
- 华为网络技术培训笔记之常用网络工具(一)