原题链接:明明的随机数
解题思路:
注意事项:
参考代码:
#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分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复