[RQNOJ]PID1-明明的随机数
http://www.rqnoj.cn/problem/1
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 /*用法:void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *)); 5 *参数: 6 *----->1 待排序数组首地址。 7 *----->2 数组中待排序元素数量。 8 *----->3 各元素的占用空间大小。 9 *------>4 指向函数的指针,用于确定排序的顺序。*/ 10 int comp(const void *a,const void *b);/*升序*/ 11 12 /* 13 *函数功能:数组去重 14 *参数: 15 *----->1 待排序数组首地址。 16 *----->2 数组中待排序元素数量。*/ 17 int PID1_duplicateRemoval(int *data,int n); 18 19 /* 20 *函数功能:数组初始化 21 *参数: 22 *----->1 待排序数组首地址。 23 *----->2 数组中待排序元素数量。*/ 24 void PID1_initialization(int *data,int n); 25 26 /* 27 *函数功能:结果输出 28 *参数: 29 *----->1 待排序数组首地址。 30 *----->2 数组中待排序元素数量。*/ 31 void PID1_output(int *data,int n); 32 33 int main(){ 34 int i; 35 int n,data[100]; 36 while(scanf("%d",&n)!=EOF){ 37 PID1_initialization(data,n); 38 qsort(data,n,sizeof(int),comp); 39 PID1_output(data,PID1_duplicateRemoval(data,n)); 40 } 41 return 0; 42 } 43 44 int comp(const void *a,const void *b){ 45 return *(int *)a-*(int *)b; 46 } 47 48 int PID1_duplicateRemoval(int *data,int n){ 49 int i,j; 50 i=1,j=0; 51 while(i<n){ 52 if(data[i]!=data[j]) 53 data[++j]=data[i]; 54 i++; 55 } 56 return j+1; 57 } 58 59 void PID1_initialization(int *data,int n){ 60 int i; 61 for(i=0;i<n;i++) 62 scanf("%d",&data[i]); 63 } 64 65 void PID1_output(int *data,int n){ 66 int i; 67 printf("%d\n",n); 68 for(i=0;i<n;i++){ 69 if(i) 70 printf(" "); 71 printf("%d",data[i]); 72 } 73 printf("\n"); 74 }