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;
}