乐乐学编程 发表于 2020-12-11 17:11:12

输出排序前后的位置

输入一组数,先使用函数由小至大排序,然后输出其在排序前后的位置(在一个数组中完成)

风过无痕1989 发表于 2020-12-11 17:42:42

//输入一组数,先使用函数由小至大排序,然后输出其在排序前后的位置(在一个数组中完成)
#include<stdio.h>
int main()
{
        int sort(int(*p), int n);
        int i, j, n, (*p);
        int arr;
        printf("请输入序列大小:");
        scanf("%d", &n);
        printf("请输入序列各元素:");
        for (i = 0;i < n;i++)
        {
                scanf("%d", &arr);
                arr = i + 1;
        }
        p = arr;
        sort(p, n);
        for (i = 0;i < 2;i++)
        {
                for (j = 0;j < n;j++)
                {
                        printf("%3d", arr);
                }
                printf("\n");
        }
}

int sort(int(*p), int n)
{
        int i, j, temp1,temp2;
        for (i = 0;i < n;i++)
        {
                for (j = 0;j < n - 1;j++)
                {
                        if (*(*p+ j) > *(*p + j + 1))
                        {
                                temp1 = *(*p + j);
                                *(*p + j) = *(*p + j + 1);
                                *(*p + j + 1) = temp1;

                                temp2 = *(*p + n + j);
                                *(*p + n + j) = *(*p + n + j + 1);
                                *(*p + n + j + 1) = temp2;
                        }
                }
        }
        return 0;
}

乐乐学编程 发表于 2020-12-11 20:00:42

风过无痕1989 发表于 2020-12-11 17:42


这个题,在两个数组里做,我没有问题,在同一个数组里做,程序中41~43行怎么搞都搞不明白。谢谢!
页: [1]
查看完整版本: 输出排序前后的位置