这种题要怎么做啊朋友们

img

img

img

修改如下,供参考:

#include <stdio.h>
void rank_r_salary(char uid[10][5], int r_salary[10]) 
{
    ///********** Begin
    int i = 0, j, max = 0, temp, ttmp[10];
    char* tmp[10], * ptmp;
    for (i = 0; i < 10; i++){
        tmp[i] = uid[i];
        ttmp[i] = r_salary[i];
    }
    for (i = 0; i < 10 - 1; i++)
    {
        max = i; 
        for (j = i + 1; j < 10; j++)
        {
            if (ttmp[j] > ttmp[max])
                max = j;
        }
        if (max != i) 
        {
            temp = ttmp[i];
            ttmp[i] = ttmp[max];
            ttmp[max] = temp;
            ptmp = tmp[i];
            tmp[i] = tmp[max];
            tmp[max] = ptmp;
        }    
    }
    printf("代号: 实发工资:\n");
    for (i = 0; i < 10; i++) {
        printf("%s\t%d\n", tmp[i], ttmp[i]);
    }
    ///********** End *********
}
void rank_t_salary_id(char uid[10][5], int t_salary[10],int rid[10]) 
{
    ///** Begin *********
    int i, j, tmp;
    for (i = 0; i < 10; i++) //rid[]数组初始化
        rid[i] = 0;
    for (i = 0; i < 10 - 1; i++)
        for (j = i + 1; j < 10; j++)
            if (t_salary[i] == t_salary[j]) rid[j]++;
    for (i = 0; i < 10; i++)
    {
        for (j = 0, tmp = 1; j < 10; j++)
            if (t_salary[i] < t_salary[j])
                tmp++;
        rid[i] += tmp;
    }
    printf("代号: 应发工资:名次:\n");
    for (i = 0; i < 10; i++) {
        printf("%s\t%d\t%d\n", uid[i], t_salary[i], rid[i]);
    }
    ///********** End *********
}
int main()
{
    char a[10][5] = { "U01","U02","U03","U04","U05","U06","U07","U08","U09","U10" };
    int b[10] = { 2200,2400,2700,2200,3000,3700,3400,4200,2800,5600 };
    int c[10] = { 2003,2218,2449,2030,2760,3418,3133,3964,2589,5284 };
    int d[10] = { 0 };

    rank_r_salary(a, c);
    rank_t_salary_id(a, b, d);
    return 0;
}