标签 C 下的文章

题目

描述
对于小明生成的 n 个 1到 500 之间的随机整数,你需要帮助他完成以下任务:
1、删去重复的数字,即相同的数字只保留一个,把其余相同的数去掉;
2、然后再把这些数从小到大排序,按照排好的顺序输出。

你只需要输出最终的排序结果。
输入描述:
第一行输入一个整数 n(1 ≦ n ≦ 1000),代表小明生成的数字个数。
此后 n 行,第 i 行输入一个整数 a (1 ≦ a ≦ 500),代表小明生成的随机整数。
输出描述:
输出若干行,每行输出一个整数,代表输入数据排序后的结果。第一行输出最小的数字。
示例1
输入:

3
2
2
1

输出:

1
2

解题思路

1、输入的数值 1 - 500 之间,可以定义一个501个元素的数组,利用数组下标来快速去重。

代码

#include <stdio.h>
#include <stdlib.h>

int main() {
    int num = 0;
    scanf("%d",&num);
    int list[501] = {0}; // 初始化后,每个元素都是0
    while (num > 0) {
        int n = 0;
        scanf("%d",&n);
        if (n >= 1 && n <= 500) {
            list[n] = 1; //数组已存在n,则改变标识为1
        }
        num--;
    }

    // 遍历数组,只输出标识不为0的下标,即去重后的结果
    for(int i = 1; i <= 500; i++){
        int n = list[i];
        if(n > 0){
            printf("%d\n",i);
        }
    }

    return 0;
}