输入11个整数,如果第1个数为1,则将其中的第2至11个数升序排列;如果第1个数为0,则降序排列

输入11个整数,如果第1个数为1,则将其中的第2至11个数升序排列;如果第1个数为0,则降序排列

先输入一个整数表示排序方式,然后定义一个数组接收10个整数

#include <stdio.h>
void sorts(int *p,int n,int order)
{
      int i,j,t;
      for(i=0;i<n-1;i++)
        for(j=0;j<n-i-1;j++)
        {
            if((order == 1 && a[j] > a[j+1]) || (order == 0 && a[j] < a[j+1]))
            {
                t = a[j];
                a[j] = a[j+1];
                a[j+1] = t;
            }
        }
}
int main()
{
    int a[10],order;
    scanf("%d",&order);
    for(int i=0;i<10;i++)
      scanf("%d",&a[i]);
    sorts(a,10,order);
    for(int i=0;i<10;i++)
        printf("%d ",a[i]);
}

img

该回答引用GPT:
这是一道简单的排序问题。主要思路是根据输入的第一个数来确定升降序排列,进而使用相应的排序算法进行操作。在这个问题中,我们使用选择排序算法,通过逐个选择最小(大)的数依次放置在前面或后面,来达到排序的目的。

举个例子:输入为1 5 2 4 3 9 8 7 6 11 10,因为第一个数为1,所以需要升序排列。首先选择5与2比较,选出2,再从余下数中选择最小的4,以此类推,经过10次选择操作后,最后一定会将最小的数11选择出来,此时排序操作就完成了。

下面是代码实现:

#include <stdio.h>

int main()
{
    int a[11], i, j, temp, first;
    printf("请输入11个整数:\n");
    for (i = 0; i < 11; i++)
    {
        scanf("%d", &a[i]);
    }

    first = a[0]; // 将第一项赋值给first
    for (i = 1; i < 11; i++) // 选择排序
    {
        for (j = i + 1; j < 11; j++)
        {
            if ((first == 1 && a[i] > a[j]) || (first == 0 && a[i] < a[j])) // 根据first决定升降序
            {
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
    }

    if (first == 1) // 输出结果
    {
        printf("升序排序后结果为:");
        for (i = 1; i < 11; i++)
        {
            printf("%d ", a[i]);
        }
    }
    else
    {
        printf("降序排序后结果为:");
        for (i = 11 - 1; i >= 1; i--)
        {
            printf("%d ", a[i]);
        }
    }

    return 0;
}

如还有疑问,可留言帮助解决。