本关任务:定义数组进行职工工资的简单处理:编写函数input_data(char uid[10][5], int salary[10], int csalary[10], int revenue[10], int _water_electricity[10], int _deductions[10]),作用为输入职工的代号,岗位工资,薪级工资,其他补贴,水电费,其他扣款。uid: 职工代号。salary: 岗位工资。csalary: 薪级工资。revenue: 其他补贴。_water_electricity: 水电费。_deductions: 其他扣款。编写函数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]),计算应发工资,扣款合计,实发工资。数据存储均为数组,且数组大小为10,即职工数为10。uid: 职工代号。salary: 岗位工资。csalary: 薪级工资。revenue: 其他补贴。_water_electricity: 水电费。_deductions: 其他扣款。t_salary: 应发工资。deduction_count: 扣款合计。r_salary: 实发工资。编写rank_r_salary(int r_salary[10], int index[10])函数对职工实发工资进行排序,按降序排列,将排序序号存入index[10]数组中作为rank_t_salary_id()中的r_rank[10]降序索引输入。r_salary:实发工资。index: 实发工资降序索引。编写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])函数,按应发工资降序求出每个职工的名次,输出含有代号,岗位工资,薪级工资,其他补贴,应发工资,水电费,其他扣款,扣款合计,实发工资,名次共10列信息的二维职工工资表。要求用数组存放所有数据。uid: 职工代号。salary: 岗位工资。csalary: 薪级工资。revenue: 其他补贴。_water_electricity: 水电费。_deductions: 其他扣款。t_salary: 应发工资。deduction_count: 扣款合计。r_salary: 实发工资。r_rank: 实发工资降序索引。相关知识相关知识略编程要求请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充,完成编写打印工资表的小程序。测试说明平台会对你编写的代码进行测试:测试输入:U01 1000 800 400 97 100U02 1200 800 400 82 100U03 1500 1000 200 131 120U04 1000 800 400 70 100U05 1800 1000 200 120 120U06 2500 1000 200 132 150U07 2200 1000 200 147 120U08 3000 1000 200 86 150U09 1600 1000 200 111 100U10 4000 1500 100 156 160预期输出:说明:第一张表为calculate()函数输出结果共9列。第二张表为rank_t_salary_id()函数输出结果共10列,以实发工资降序排序,名次为应发工资降序排序。每张表列宽为10个字符。注意:输入数据如上面测试输入所示,实际评测集输入数据与之等同。
基于数组的工资处理系统
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 4无用 3
悬赏问题
- ¥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 位置函数报错?
- ¥15 metamask如何添加TRON自定义网络