校招編程練習題3 明明的隨機數


描述

明明想在學校中請一些同學一起做一項問卷調查,爲了實驗的客觀性,他先用計算機生成了N個1到1000之間的隨機整數(N≤1000),對於其中重複的數字,只保留一個,把其餘相同的數去掉,不同的數對應着不同的學生的學號。然後再把這些數從小到大排序,按照排好的順序去找同學做調查。請你協助明明完成“去重”與“排序”的工作。

 

 

Input Param 

     n               輸入隨機數的個數     

 inputArray      n個隨機整數組成的數組 

     

Return Value

     OutputArray    輸出處理後的隨機整數

 

注:測試用例保證輸入參數的正確性,答題者無需驗證。測試用例不止一組。

知識點字符串,循環,大小寫字母
運行時間限制0M
內存限制0
輸入

輸入多行,先輸入隨機整數的個數,再輸入相應個數的整數

輸出

返回多行,處理後的結果

樣例輸入
11
10
20
40
32
67
40
20
89
300
400
15
樣例輸出

10
15
20
32
40
67
89
300
400

C語言實現

先排序後查重刪除

#include<stdio.h>
int main(void) {
 
    int num;
    int inputArray[1000];
    int outputArray[1000];
    int i, j;
// 輸入num個數據
while(scanf("%d",&num)!=EOF){
    for (i=0; i<num; i++) {
        scanf("%d", &inputArray[i]);
    }
// 先冒泡排序——兩個for循環解決問題
    for (i=0; i<num; i++) {
        for (j=i+1; j<num; j++) {
            if (inputArray[i]>inputArray[j]) {
                int temp = inputArray[i]; 
                inputArray[i] = inputArray[j];
                inputArray[j] = temp;
            }
        }
    }
    // 再查重——for循環
    j = 0;
    for (i=0; i<num; i++) {
        outputArray[j++] = inputArray[i];
        while (inputArray[i] == inputArray[i+1]) {       //判斷有無多個重複的數
            i++;
        }
    }
    // 輸出處理後的數組
    for (i=0; i<j; i++)
        printf("%d\n",outputArray[i]);
}
}

先查重刪除後排序

#include<stdio.h>
int main()
{
    int n,a[10000],i,j,k,temp;
    while(scanf("%d",&n)!=EOF)
    {
        for(i=0;i<n;i++)
            scanf("%d",&a[i]);
        for(i=0;i<n;i++)
           {
                for(j=i+1;j<n;j++)
                {
                    if(a[i]==a[j])        // 先查重
                    {
                        for(k=j+1;k<n;k++)    // 判斷有無多個重複的數
                            a[k-1]=a[k];
                            n--;
                            j--;
                    }
                }
            }
        for(i=0;i<n-1;i++)              // 再排序
        {
            for(j=0;j<n-1-i;j++)
            {
                if(a[j]>a[j+1])
                {
                    temp=a[j];
                    a[j]=a[j+1];
                    a[j+1]=temp;
                }
            }
        }
    for(i=0;i<n;i++)
    printf("%d\n",a[i]);
    }
}

1.EOF用法

關於c語言中EOF用法的理解 - CSDN博客 點擊打開鏈接

2.經典算法之桶排序算法

桶排序及C語言實現 - CSDN博客點擊打開鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章