# 基于数组的工资处理系统

• 写回答

#### 1条回答默认 最新

• qzjhjxj 2022-01-17 21:14
关注

修改如下，供参考：

``````//测试输入：

//U01 1000 800 400 97 100
//U02 1200 800 400 82 100
//U03 1500 1000 200 131 120
//U04 1000 800 400 70 100
//U05 1800 1000 200 120 120
//U06 2500 1000 200 132 150
//U07 2200 1000 200 147 120
//U08 3000 1000 200 86 150
//U09 1600 1000 200 111 100
//U10 4000 1500 100 156 160

#include <stdio.h>
void input_data(char uid[10][5], int salary[10], int csalary[10], int revenue[10],
int _water_electricity[10], int _deductions[10])
{
/********** Begin **********/
for (int i = 0; i < 10; i++)
{
scanf("%s%d%d%d%d%d", uid[i], &salary[i], &csalary[i],
&revenue[i], &_water_electricity[i], &_deductions[i]);
}
/********** End **********/
}
void calculate(char uid[10][5], int salary[10], int csalary[10], int revenue[10],
int _water_electricity[10], int _deductions[10], int t_salary[10],
int deduction_count[10], int r_salary[10])
{
/********** Begin **********/
for (int i = 0; i < 10; i++) {
t_salary[i] = salary[i] + csalary[i] + revenue[i];
deduction_count[i] = _water_electricity[i] + _deductions[i];
r_salary[i] = t_salary[i] - deduction_count[i];
}
printf("代号：    岗位工资：薪级工资：其他补贴：水电费：  其他扣款：应发工资：扣款合计：实发工资：\n");
for (int i = 0; i < 10; i++) {
printf("%s       %d      %-5d     %d       %-5d     %d       %d      %d       %d      \n",
uid[i], salary[i], csalary[i], revenue[i], _water_electricity[i],
_deductions[i], t_salary[i], deduction_count[i], r_salary[i]);
}
/********** End **********/
}
void rank_r_salary(int r_salary[10],int index[10])
{
///********** Begin
int i, j, tmp,t[10] = {0};
for (i = 0; i < 10 - 1; i++)
for (j = i + 1; j < 10; j++)
if (r_salary[i] == r_salary[j]) t[j]++;
for (i = 0; i < 10; i++)
{
for (j = 0, tmp = 0; j < 10; j++)
if (r_salary[i] < r_salary[j])
tmp++;
t[i] += tmp;
index[t[i]] = i;
}
///********** End *********
}
void rank_t_salary_id(char uid[10][5], int salary[10], int csalary[10], int revenue[10],
int _water_electricity[10],int _deductions[10], int t_salary[10],
int deduction_count[10],int r_salary[10], int r_rank[10])
{
/********** Begin **********/
int i, j, tmp, index[10] = { 0 };
for (i = 0; i < 10 - 1; i++)
for (j = i + 1; j < 10; j++)
if (t_salary[i] == t_salary[j]) index[j]++;
for (i = 0; i < 10; i++)
{
for (j = 0, tmp = 1; j < 10; j++)
if (t_salary[i] < t_salary[j])
tmp++;
index[i] += tmp;
}
printf("\n代号：    岗位工资：薪级工资：其他补贴：水电费：  其他扣款：应发工资：扣款合计：实发工资： 名次：    \n");
for (int i = 0; i < 10; i++) {
printf("%s       %d      %-5d     %d       %-5d     %d       %d      %d       %d      %d\n",
uid[r_rank[i]], salary[r_rank[i]], csalary[r_rank[i]], revenue[r_rank[i]],
_water_electricity[r_rank[i]], _deductions[r_rank[i]], t_salary[r_rank[i]],
deduction_count[r_rank[i]], r_salary[r_rank[i]], index[r_rank[i]]);
}
/********** End **********/
}
int main()
{
char uid[10][5] = { 0 };
int t_salary[10] = { 0 }, r_salary[10] = { 0 }, salary[10] = { 0 }, csalary[10] = { 0 }, revenue[10] = { 0 },
_water_electricity[10] = { 0 }, _deductions[10] = { 0 }, deduction_count[10] = { 0 }, r_rank[10]={0};

input_data(uid, salary, csalary, revenue, _water_electricity, _deductions);
calculate(uid, salary, csalary, revenue, _water_electricity, _deductions, t_salary, deduction_count, r_salary);
rank_r_salary(r_salary, r_rank);
rank_t_salary_id(uid, salary, csalary, revenue, _water_electricity, _deductions, t_salary, deduction_count, r_salary, r_rank);
return 0;
}

``````

本回答被题主选为最佳回答 , 对您是否有帮助呢?
评论 编辑记录

• 系统已结题 1月25日
• 已采纳回答 1月17日
• 创建了问题 1月17日

#### 悬赏问题

• ¥15 模电中二极管，三极管和电容的应用
• ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
• ¥15 气象网格数据与卫星轨道数据如何匹配
• ¥100 java ee ssm项目 悬赏，感兴趣直接联系我
• ¥15 微软账户问题不小心注销了好像
• ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
• ¥15 curl 命令调用正常，程序调用报 java.net.ConnectException: connection refused
• ¥20 关于web前端如何播放二次加密m3u8视频的问题
• ¥15 使用百度地图api 位置函数报错？