40-语言入门-40-C小加之随机数
#include <stdlib.h>
#include <memory.h>
//定义无效值
#define INVALIDATE_DATA -1
//处理数据
static void handlerData();
//插入数据,按从大到小的顺序,且不能重复
static void insertArrBySort(int *arr,int arrLen,int inputData,int *resultCount);
//输出结果
static void printArr(int *arr,int arrLen);
int main()
{
int readLen = 0;
scanf("%d",&readLen);
getchar();
while(readLen > 0)
{
handlerData();
--readLen;
}
return 0;
}
//处理数据
static void handlerData()
{
int readLen = 0;
scanf("%d",&readLen);
getchar();
int arrLen = readLen;
int resultCount = arrLen; //记录不相同的数目
int *arr = (int*)malloc(sizeof(int)*arrLen);
memset(arr,INVALIDATE_DATA,sizeof(int)*arrLen);
while(readLen>0)
{
int inputNumber = 0;
scanf("%d",&inputNumber);
insertArrBySort(arr,arrLen,inputNumber,&resultCount);
--readLen;
}
//处理换行输入
getchar();
printf("%d\n",resultCount);
printArr(arr,arrLen);
free(arr);
}
//插入数据,按从大到小的顺序,且不能重复
static void insertArrBySort(int *arr,int arrLen,int inputData,int *resultCount)
{
int index = INVALIDATE_DATA;
int i=0;
for(;i<arrLen;++i)
{
if(arr[i] == inputData) //有重复数据不做处理
break;
if(arr[i] < inputData) //定位到存放该数据的索引位置
{
index = i;
break;
}
}
if(index != INVALIDATE_DATA && index < arrLen) //需要移动数据
{
if(arr[index] != -1)
{
i=arrLen - 1;
for(;i>index;--i)
{
arr[i] = arr[i-1];
}
}
arr[index] = inputData;
}
else
{
--(*resultCount);
}
}
//输出结果
static void printArr(int *arr,int arrLen)
{
int i=arrLen-1;
for(;i>=0;--i)
{
if(arr[i] == INVALIDATE_DATA) //有重复数据不做处理
continue;
printf("%d ",arr[i]);
}
printf("\n");
}
最新文章
- [bzoj 3732] Network (Kruskal重构树)
- nodejs笔记二--文件I/O;
- POJ 3080 Blue Jeans (多个字符串的最长公共序列,暴力比较)
- Ubuntu14.04LST 安装Oracle SQL Developer 4.0.2
- Unity3D移植到自己的Android程序
- Cloudera Hadoop 4 实战课程(Hadoop 2.0、集群界面化管理、电商在线查询+日志离线分析)
- 你不知道的 flex 技巧
- MySQL &#183; 引擎特性 &#183; InnoDB奔溃恢复
- bzoj 1598: [Usaco2008 Mar]牛跑步 [k短路 A*] [学习笔记]
- [BZOJ4736]温暖会指引我们前行
- 【Linux】常见基础命令之文件操作
- Java开发笔记(六十一)Lambda表达式
- javap -v没有显示LocalVaribleTable
- PythonStudy——函数的分类 Classification of functions
- 你可能不知道的viewport
- 【转】GPS定位准确度CEP、RMS
- oracle中如何生成awr报告
- 关于javascript三目
- keras 修仙笔记二(ResNet算法例子)
- magento upsell from cur_category
热门文章
- Mybatis通过ID查询 &;&; 通过name模糊查询
- CentOS 6.9使用Setup配置网络(解决dhcp模式插入网线不自动获取IP的问题)
- netstat 用法
- [HTML/CSS]盒子模型,块级元素和行内元素
- WebStorm中部署网页到Tomcat
- PostgreSQL on Linux 最佳部署手册
- 14、高可用keepalived搭建及切换
- Mybatis c3p0 整合
- 【监控】使用 Grafana、collectd 和 InfluxDB 打造现代监控系统
- 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-人机界面如何修改界面皮肤