C__zhazha 2019-12-01 12:32 采纳率: 0%
浏览 1602
已采纳

将两个无序的一维数组排序,然后将其合并到一个一维数组中,仍保持数组有序。

程序调试失败;program received signal SIGFPE

#include <stdio.h> 
int sort(int *p, int x)
{
    int m, n, i;
    for (i=0; i<x-1; i++){
        for (m=0; m<x-i-1; m++){
            if (*p+m>*p+m+1){
                n=*(p+m);
                *(p+m+1)=*(p+m);
                *(p+m)=n;
            }       
        }
    }
    return *p;
}
void print(int num[], int x)
{
    int cnt;
    for(cnt=0; cnt<x; cnt++)
        printf ("%d", num[cnt]);
}
int main()
{
    int i, x, y, z, m, n;
    printf ("请输入两组数组的长度:");
    scanf ("%d %d", &x, &y);
    z=x+y;
    int num1[x],num2[y],num3[z];
    printf ("请输入第一组数组中的数:");
    for (i=0; i<x; i++){
    scanf ("%d", &num1[i]); 
    num3[i]=num1[i];
    }
    printf ("请输入第二组数组中的数:"); 
    for (i=0; i<x; i++){
    scanf ("%d", &num2[i]);
    num3[x+i]=num2[i];
    }
    sort (num1[x], x);
    sort (num2[y], y);
    sort (num3[z], z);
    print (num1[x], x);
    print (num2[y], y);
    print (num3[z], z);
    return 0;
}
  • 写回答

2条回答

  • threenewbee 2019-12-01 12:45
    关注
    #include <stdio.h>
    #define MAX 100
    void sort(int *p, int x)
    {
        int m, n, i;
        for (i=0; i<x-1; i++){
            for (m=0; m<x-i-1; m++){
                if (*(p+m)>*(p+m+1)){
                    n=*(p+m + 1);
                    *(p+m+1)=*(p+m);
                    *(p+m)=n;
                }       
            }
        }
    }
    void print(int num[], int x)
    {
        int cnt;
        for(cnt=0; cnt<x; cnt++)
            printf ("%d ", num[cnt]);
        printf("\n");
    }
    int main()
    {
        int i, x, y, z, m, n;
        printf ("请输入两组数组的长度:");
        scanf ("%d %d", &x, &y);
        z=x+y;
        int num1[MAX],num2[MAX],num3[MAX+MAX];
        printf ("请输入第一组数组中的数:");
        for (i=0; i<x; i++){
            scanf ("%d", &num1[i]); 
            num3[i]=num1[i];
        }
        printf ("请输入第二组数组中的数:"); 
        for (i=0; i<y; i++){
            scanf ("%d", &num2[i]);
            num3[x+i]=num2[i];
        }
        sort (num1, x);
        sort (num2, y);
        sort (num3, z);
        print (num1, x);
        print (num2, y);
        print (num3, z);
        return 0;
    }
    
    

    请输入两组数组的长度:3 4
    请输入第一组数组中的数:1 5 9
    请输入第二组数组中的数:0 9 1 2
    1 5 9
    0 1 2 9
    0 1 1 2 5 9 9
    Press any key to continue . . .

    问题解决的话,请点下采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 计算二重积分∫∫e^(x+y)dxdy,其中0≤x≤1,0≤y≤1,试分别用复合辛普森公式(取n=4)以及高斯求积公式(取n=4)计算积分 给出matlab程序
  • ¥15 opencv 无法读取视频
  • ¥15 用matlab 实现通信仿真
  • ¥15 按键修改电子时钟,C51单片机
  • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))
  • ¥20 5037端口被adb自己占了
  • ¥15 python:excel数据写入多个对应word文档
  • ¥60 全一数分解素因子和素数循环节位数
  • ¥15 ffmpeg如何安装到虚拟环境
  • ¥188 寻找能做王者评分提取的