液氢 2019-11-27 13:05 采纳率: 100%
浏览 300
已采纳

对一个数组随机赋值,降序排序后将重复的值删除赋值到一个新数组中,新数组打印乱码

对一个数组随机赋值,降序排序后将重复的值删除赋值到一个新数组中,新数组打印乱码

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void sort(int num[],int n[],int x);
int main()
{
    int num[10],n[10],i,length;
    srand(time(NULL));
    for(i=0;i<10;i++)
        num[i]=rand()%9+1;//随机赋值
    printf("排序前:");
    for(i=0;i<10;i++)
        printf("%d ",num[i]);//原数组
    printf("\n");
    sort(num,n,10);//排序
    length=sizeof(n)/sizeof(n[0]);//计算数组长度
    printf("\n数组长度:%d\n\n",length);
    printf("排序后:");
    for(i=0;i<length;i++)
        printf("%d ",n[i]);//排序后
    return 0;
}
void sort(int num[],int n[],int x)
{
    int i,j,box;
    for(i=0;i<x;i++)
        for(j=0;j<x;j++)
            if(num[j]<num[j+1])
            {
                box=num[j];
                num[j]=num[j+1];
                num[j+1]=box;
            }//冒泡排序
    for(i=0;i<x;i++)
        for(j=i+1;j<x;j++)
        {
            if(num[j]!=num[i])
                n[i]=num[i];
            if(num[j]==num[i])
                break;
        }


}

图片说明

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-11-27 15:23
    关注
    // Q977786.cpp : Defines the entry point for the console application.
    //
    
    #include "stdafx.h"
    
    
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    int sort(int num[],int n[],int x);
    int main()
    {
        int num[10],n[10],i,length;
        srand(time(NULL));
        for(i=0;i<10;i++)
            num[i]=rand()%9+1;//随机赋值
        printf("排序前:");
        for(i=0;i<10;i++)
            printf("%d ",num[i]);//原数组
        printf("\n");
        int k=sort(num,n,10);//排序
        length=sizeof(n)/sizeof(n[0]);//计算数组长度
        printf("\n数组长度:%d\n\n",length);
        printf("排序后:");
        for(i=0;i<length-k;i++)
            printf("%d ",num[i]);//排序后
        printf("重复的:");
        for(i=0;i<k;i++)
            printf("%d ",n[i]);
        return 0;
    }
    int sort(int num[],int n[],int x)
    {
        int i,j,box;
        for(i=0;i<x;i++)
            for(j=0;j<x;j++)
                if(num[j]<num[j+1])
                {
                    box=num[j];
                    num[j]=num[j+1];
                    num[j+1]=box;
                }//冒泡排序
        int k = 0;
        for (i = 0; i < x - 1; i++)
        {
            if (num[i] == num[i + 1])
            {
                n[k++] = num[i];
                for (int j = i; j < x - 1; j++)
                    num[j] = num[j + 1];
                i--;
                x--;
            }
        }
        return k;
    
    }
    
    

    排序前:1 8 7 1 8 8 8 1 5 6

    数组长度:10

    排序后:8 7 6 5 1 重复的:8 8 8 1 1 Press any key to continue . . .

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题