巧妙的 排序+去重——C语言
程序员文章站
2024-03-22 21:12:58
...
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。
输入描述:
输入多行,先输入随机整数的个数,再输入相应个数的整数。
输出描述:
返回多行,处理后的结果。
#define _CRT_SECURE_NO_WARNINGS //有时候scanf不能用的话 加这个就行了
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int test_student(int* a, int n) //完成排序+去重
{
int t[1024] = { 0 };
int i;
for (i = 0; i < n; i++) {
t[a[i]] = 1; //a[i] 内容作为索引。 不重复且从小到大
}
for (i = 0; i < 1024; i++) {
if (t[i])
printf("%d\n", i); //i 即 上面for中的a[i]
}
return 0;
}
int main(int argc, char const* argv[]) //argc是命令行总的参数个数 argv[]是argc个的具体的参数
{
int i, n;
while (~scanf("%d", &n) && n > 0) { //读取 个数
int* a = malloc(sizeof(int) * n); //malloc 分配内存空间 #include <stdlib.h>
for (i = 0; i < n; i++) {
scanf("%d", &a[i]); //读取 具体数
}
test_student(a, n);
free(a); //malloc 释放内存空间 #include <stdlib.h>
}
return 0;
}
上一篇: 9. Qt5文件及磁盘处理
下一篇: 关于 ZeroC ICE 的不成熟思考