题解 | #明明的随机数#

明明的随机数

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


#华为题库#
全部评论

相关推荐

09-28 22:01
已编辑
广西科技大学 IT技术支持
合适才能收到offe...:找桌面运维?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务