又是数组!这个问题好复杂,有没有人来试一试?

img

供参考:

#include <stdio.h>
int main()
{
    int a1[20]={0},a2[20]={0},n,i,j,pos=0,flg,k;
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%d",&a1[i]);

    for(i=0;i<n;i++) //将a1[]数组元素去重后复制到 a2[]数组中
    {
        for(j=0,flg=0;j<pos;j++)
        {
            if(a1[i]==a2[j])
               flg=1;
        }
        if(flg==0)
        {
            a2[pos]=a1[i];
            pos++;
        }
    }
    for(i=0;i<n;i++) //将a1[]数组中的每个元素与a2[]数组元素比大小,得到排列序号
    {
        for(j=0,k=1;j<pos;j++)
        {
            if(a1[i]>a2[j])
               k++;
        }
        printf("%d ",k);
    }
    printf("\n");
    return 0;
}

#include<stdio.h>
int main() {
    int N,i , j, a[2][20] = {0}, index = 0 , min , front = -65536;
    scanf("%d",&N);
    for(i = 0 ; i < N ; i++) {
        scanf("%d", &a[0][i]);
    }
    for(i = 0; i < N ; i++) {
        //从编号为0的数中找最小值
        j = 0;
        while(a[1][j] != 0)
            j++;
        min = j;//min为第一个编号为0的数的下标
        for(j = 0 ; j < N ; j++) {
            if(a[1][j] == 0 && a[0][j] < a[0][min]) {
                min = j;
            }
        }
        if(a[0][min] > front)
            index++;
        a[1][min] = index;

        front = a[0][min];
    }
    for(i = 0; i < N; i++)
        printf("%d ", a[1][i]);
    return 0;
}