原题链接:明明的随机数
解题思路:
注意事项:
参考代码:
#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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复