题解 | #明明的随机数#
明明的随机数
https://www.nowcoder.com/practice/3245215fffb84b7b81285493eae92ff0
//把问题拆分成四步:输入,排序,去重,输出;也许这就是所谓面向过程编程吧
//代码能跑通
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
static int my_swap(int *a, int *b){
int tmp = *a;
*a = *b;
*b = tmp;
return 0;
}
void Bubble_select_order_rise(int* a, int n)
{
int i, j;
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - i - 1; j++)
{
if (a[j] > a[j + 1])
{
my_swap(&a[j], &a[j + 1]);
}
}
}
}
static int rm_same(int a[], int n)
{
int i,j;
for ( i = 1; i < n; i++) {
if (a[i] == a[i - 1]) {
for (j = i; j < n-1; j++) {
a[j] = a[j+1];
}
n--;
i--;
}
}
return n;
}
static int hj3_order(void)
{
int my_ramdom[1001] = {0};
int *p_ramdom = NULL;
p_ramdom = &my_ramdom[0];
int intput[2] = {0};
scanf("%4d",intput);
if(intput[0]>1000 || intput[0]<1) {
printf("input error,please input again\n");
return -1;
}
for (int i = 0; i < intput[0]; i++) {
scanf("%3d",p_ramdom);
if(my_ramdom[i]>500 || my_ramdom[i]<1) {
printf("input error,please input again\n");
return -1;
}
p_ramdom++;
}
int *output = NULL;
output = (int *)malloc(sizeof(int)*intput[0]);
if (output == NULL) {
return -1;
}
memcpy(output,my_ramdom,sizeof(int)*intput[0]);
Bubble_select_order_rise(output,intput[0]);
intput[0] = rm_same(output,intput[0]);
for (int i = 0; i < intput[0]; i++) {
printf("%d\n",output[i]);
}
free(output);
output = NULL;
return 0;
}
int main() {
hj3_order();
return 0;
}
#华为题库#
查看16道真题和解析