欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

巧妙的 排序+去重——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;
}