C/C++编程题之明明的随机数

将之前一段时间在牛客上刷的题给大家分享一下。其中一道题是“明明的随机数”,现在将通过的代码贴一下,供大家参考。

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。

注:测试用例保证输入参数的正确性,答题者无需验证。测试用例不止一组。

当没有新的输入时,说明输入结束。

#include <stdlib.h>
#include <stdio.h>
int filter(int *array,int count)
{
    int i,j;
    int *p=array;
    for(i=0;i<count;i++)
    {
        for(j=i+1;j<count;j++)
        {
            if(*(p+i)==*(p+j))
            {
                *(p+j)=0;
            }
        }
    }
    int k=0;
    for(i=0;i<count;i++)
    {
        if(*(p+i)!=0)
        {
            *(p+k)=*(p+i);
            k++;
        }
        
    }
    return k;
}
void sort(int *array,int count)
{
    int i,j,temp;
    int *p = array;
    for(i=0;i<count;i++)
    {
        for(j=i+1;j<count;j++)
        {
            if(*(p+i)>*(p+j))
            {
                temp = *(p+i);
                *(p+i)=*(p+j);
                *(p+j)=temp;
            }
        }
    }
}
int main()
{
    int m,n;
    int q;
    int *array;
    int i; 
    int k;
    int j;
    while(scanf("%d",&m)!=EOF)
    {
        array = (int *)malloc(sizeof(int)*m);
        for(i=0;i<m;i++)
        {
            scanf("%d",&n);
            array[i] = n;
            //printf("n=%d\n",n);
        }
        k = filter(array,m);
        //printf("k=%d\n",k);
        sort(array,k);
        for(j=0;j<k;j++)
        {
            printf("%d\n",array[j]);
        }
        free(array);      
        
    }
}

猜你喜欢

转载自blog.csdn.net/lzyzuixin/article/details/111387618
今日推荐