解题思路:

注意事项:

参考代码:

#include <stdio.h>

// 函数用于对数组 num[] 进行冒泡排序
void sort(int num[], int sz)
{
    int a, b;
    for (a = 0; a < sz - 1; a++)
    {
        for (b = 0; b < sz - 1 - a; b++)
        {
            // 如果当前元素大于下一个元素,交换它们的位置
            if (num[b] > num[b + 1])
            {
                int t = num[b];
                num[b] = num[b + 1];
                num[b + 1] = t;
            }
        }
    }
}

// 函数用于去除重复的随机数并按升序排序后输出
void put(int num[], int sz)
{
    int c, x;
    int arr[1000] = {0}; // 初始化一个标记数组 arr,用于标记已经出现的随机数
    int random[1000];    // 用于存储不同的随机数
    int count = 0;       // 记录不同随机数的个数

    for (c = 0; c < sz; c++)
    {
        x = num[c];
        if (arr[x] == 0) // 如果该随机数尚未出现过
        {
            random[count++] = x; // 将它存入 random 数组,并增加 count 计数
            arr[x] = 1;          // 标记该随机数已经出现过
        }
    }

    sort(random, count); // 对不同的随机数进行排序
    printf("%d\n", count); // 输出不同随机数的个数
    for (c = 0; c < count; c++)
    {
        printf("%d", random[c]); // 输出不同的随机数
        if (c < count - 1)
        {
            printf(" "); // 在不同的随机数之间添加空格,但最后一个后面没有空格
        }
    }
}

int main()
{
    int N, i;
    scanf("%d", &N); // 读取随机数的个数
    int num[100];
    for (i = 0; i < N; i++)
    {
        scanf("%d", &num[i]); // 读取每个随机数并存入 num 数组
    }
    int sz = N; // 数组大小为 N

    put(num, sz); // 调用 put 函数去除重复的随机数并排序后输出
    return 0;
}


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论