C语言 题目:明明的随机数
第一次写博客,本人大一新生,就读于商丘学院应用科技学院,第一次写自己对题目的见解.题目来自洛谷P1059[NOIP2006 普及组] 明明的随机数参考https://blog.csdn.net/dashenthk/article/details/107351383
题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 N 个 1 到 1000 之间的随机整数 (N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
输入格式
输入有两行,第 1 行为 1 个正整数,表示所生成的随机数的个数 N。
第 2 行有 N 个用空格隔开的正整数,为所产生的随机数。
输出格式
输出也是两行,第 1 行为 1 个正整数 M,表示不相同的随机数的个数。
第 2 行为 M 个用空格隔开的正整数,为从小到大排好序的不相同的随机数。
输入输出样例
输入 #1
10 20 40 32 67 40 20 89 300 400 15
输出 #1
8 15 20 32 40 67 89 300 400
#include<stdio.h> int main() { int a[1001] = { 0 }; //1000以内的随机数,创键1001个数组,防止数据溢出 int i = 0; //输入的数字个数 int b = 0; //去重后输出数字的个数 int n = 0; //输入的数字 scanf_s("%d", &i); for (int x = 0; x < i; x++) { scanf_s("%d", &n); if (a[n] == 0) { //去重 a[n] = n; //为这个数赋值到它所对应的数组比如输入的值是234那就把这个值存到a[234]中 b++; //如果这个数对应的数组有一个值那就跳过了,如果没有值那就赋值 } } printf("%d\n", b); //输出去重后的数字个数 for (int x = 0; x < 1001; x++) { //排序,挨个输出如果为0不输出,不为0输出 if (a[x] != 0) printf("%d ", a[x]); } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)