简单Punto 2022-01-17 20:14 采纳率: 66.7%
浏览 1040
已结题

基于数组的工资处理系统

本关任务:定义数组进行职工工资的简单处理:编写函数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个字符。注意:输入数据如上面测试输入所示,实际评测集输入数据与之等同。

img

  • 写回答

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

    img

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

报告相同问题?

问题事件

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

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改