修改如下,供参考:
#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;
}