怎么样才能使uid里的值和r_salary里的顺序对应起来

#include<stdio.h>
void rank_r_salary(char uid[10][5], int r_salary[10]) {
/********** Begin /
int i = 0;
int j;
int max = 0;
int temp;
printf("代号: 实发工资:\n");
for (i = 0; i < 10; i++)
{
max = i;
for (j = i + 1; j < 10; j++)
{
if (r_salary[j] > r_salary[max])
max = j;
}
temp = r_salary[i];
r_salary[i] = r_salary[max];
r_salary[max] = temp;
}
for (i = 0; i < 10; i++) {
printf("%s %d\n",uid[i], r_salary[i]);
}
}
void rank_t_salary_id(char uid[10][5], int t_salary[10],int rid[10]) {
/
** Begin **********/
int i = 0;
int j;
int max = 0;
int temp;
printf("代号: 应发工资:名次:\n");

for (i = 0; i < 10; i++) {
    printf("%s       %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;

}

img


这是预计输出结果。
就是让uid的顺序和r_salary的顺序一致

定义一个结构呀
struct Salary{
char uid[5];
double grossSalary; // 应发
double netSalary; // 实发
};

struct Salary {
    char uid[5];
    double grossSalary;
    double netSalary;
};

int main()
{
    Salary salarys[10] = {
        {"U01", 2200, 2003}, {"U02", 2400, 2218}, {"U03", 2700, 2449},
        {"U04", 2200, 2030}, {"U05", 3000, 2760}, {"U06", 3700, 3418},
        {"U07", 3400, 3133}, {"U08", 4200, 3964}, {"U09", 2800, 2589},
        {"U10", 5600, 5284}
    };

    printf("编号\t应发工资\t实发工资\n");
    for (int i = 0; i < 10; i++) {
        printf("%s\t%0.4lf\t%0.4lf\n", salarys[i].uid, salarys[i].grossSalary, salarys[i].netSalary);
    }

    return 0;
}

供参考:

#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;
}