• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
lientong
博客园    首页    新随笔    联系   管理    订阅  订阅

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

 

 

posted @ 2022-11-15 20:41  通通的后花园  阅读(82)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3