头歌平台——基于数组的工资处理系统

第1关:数据输入和计算

任务描述

本关任务:

  • 编写函数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: 实发工资。

测试输出为: 打印输出input_data()函数输入数据。 打印输出calculate()计算结果。

相关知识

相关知识略

编程要求

请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充,完成编写数据输入和计算的小程序。

测试说明

平台会对你编写的代码进行测试:

测试输入:

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

预期输出:

注意:

1. 输入数据如上面测试输入所示,实际评测集输入数据与之等同。 2. 输出间距为10个字符。


void input_data(char uid[10][5], int salary[10], int csalary[10], int revenue[10], int _water_electricity[10], int _deductions[10]) {/********** Begin **********/int i;for(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]);printf("代号:    岗位工资:薪级工资:其他补贴:水电费:  其他扣款:\n");for(i=0;i<10;i++)printf("%-10s%-10d%-10d%-10d%-10d%-10d\n",uid[i],salary[i],csalary[i],revenue[i],_water_electricity[i],_deductions[i]);printf("\n");/********** 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 **********/printf("代号:    岗位工资:薪级工资:其他补贴:水电费:  其他扣款:应发工资:扣款合计:实发工资:\n");int i;for(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];}for(i=0;i<10;i++)printf("%-10s%-10d%-10d%-10d%-10d%-10d%-10d%-10d%-10d\n",uid[i],salary[i],csalary[i],revenue[i],_water_electricity[i],_deductions[i],t_salary[i],deduction_count[i],r_salary[i]);/********** End **********/
}

第2关:工资排序 

任务描述

本关任务:

  • 编写rank_r_salary(char uid[10][5], int r_salary[10])函数对职工实发工资进行排序,按降序排列。

  • uid:职工代号。

  • r_salary:实发工资。

  • 编写rank_t_salary_id(char uid[10][5], int t_salary[10], int rid[10])函数,按应发工资降序求出名次。

  • uid:职工代号。

  • t_salary:应发工资。

  • rid:名次。

说明:以上参数均由系统给出,不用再从键盘获取。

相关知识

相关知识略

编程要求

请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充,完成编写工资排序的小程序。

测试说明

平台会对你编写的代码进行测试:

预期输出为:

 


void rank_r_salary(char uid[10][5], int r_salary[10]) {/********** Begin **********/
int i,j,item;int k=0;char a[5];printf("代号:    实发工资:\n");for(i=0;i<9;i++){for(j=i+1;j<10;j++){if(r_salary[i]<r_salary[j]){item=r_salary[i];r_salary[i]=r_salary[j];r_salary[j]=item;while(uid[i][k]!='\0'){a[k]=uid[i][k];k=k+1;}a[k]='\0';k=0;while(uid[i][k]!='\0'){uid[i][k]=uid[j][k];k+=1;}uid[i][k]='\0';k=0;while(a[k]!='\0'){uid[j][k]=a[k];k=k+1;                          }uid[j][k]='\0';k=0;}}}for(i=0;i<10;i++){printf("%s       %d      \n",uid[i],r_salary[i]);}/********** End **********/
}void rank_t_salary_id(char uid[10][5], int t_salary[10], int rid[10]) {/********** Begin **********/int i,j;printf("代号:    应发工资:名次:    \n");for(i=0;i<10;i++){rid[i]=1;}for(i=0;i<10;i++){for(j=0;j<10;j++){if(t_salary[i]<t_salary[j])rid[i]++;}}for(i=0;i<9;i++){for(j=i+1;j<10;j++){if(rid[i]==rid[j])rid[j]++;}}for(i=0;i<10;i++){printf("U%02d       %d      %-6d    \n",i+1,t_salary[i],rid[i]);}/********** End **********/
}

 

第3关:打印工资表 

任务描述

本关任务:定义数组进行职工工资的简单处理:

  • 编写函数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 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

预期输出:

说明:第一张表为calculate()函数输出结果共9列。第二张表为rank_t_salary_id()函数输出结果共10列,以实发工资降序排序,名次为应发工资降序排序。每张表列宽为10个字符。

注意:输入数据如上面测试输入所示,实际评测集输入数据与之等同。

void input_data(char uid[10][5], int salary[10], int csalary[10], int revenue[10], int _water_electricity[10], int _deductions[10]) {/********** Begin **********/int b;for(b=0;b<10;b++)scanf("%s%d%d%d%d%d",uid[b],&salary[b],&csalary[b],&revenue[b],&_water_electricity[b],&_deductions[b]);/********** 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 **********/int c,d;for(c=0;c<10;c++){t_salary[c]=salary[c]+csalary[c]+revenue[c];deduction_count[c]=_water_electricity[c]+_deductions[c];r_salary[c]=t_salary[c]-deduction_count[c];}printf("代号:    岗位工资:薪级工资:其他补贴:水电费:  其他扣款:应发工资:扣款合计:实发工资:\n");d=0;for(;d<10;d++){if(d<9)printf("%-10s%-10d%-10d%-10d%-10d%-10d%-10d%-10d%-10d\n",uid[d],salary[d],csalary[d],revenue[d],_water_electricity[d],_deductions[d],t_salary[d],deduction_count[d],r_salary[d]);elseprintf("%-10s%-10d%-10d%-10d%-10d%-10d%-10d%-10d%-10d\n",uid[d],salary[d],csalary[d],revenue[d],_water_electricity[d],_deductions[d],t_salary[d],deduction_count[d],r_salary[d]);} printf("\n");/********** End **********/
}void rank_r_salary(int r_salary[10], int index[10]) {/********** Begin **********/int max,i,k,j=0;int visit[10]={0};
max=r_salary[0];
for(k=0;k<10;k++)
{for(i=0;i<10;i++){if(r_salary[i]>max){if(visit[i]==1)continue;else {max=r_salary[i];j=i;}}}visit[j]=1;index[j]=k+1;j=0;max=0;
}/********** 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 max,i,k,j=0;int visit[10]={0};
max=r_salary[0];
printf("代号:    岗位工资:薪级工资:其他补贴:水电费:  其他扣款:应发工资:扣款合计:实发工资:名次:    \n");
for(k=0;k<10;k++)
{for(i=0;i<10;i++){if(r_salary[i]>max){if(visit[i]==1)continue;else {max=r_salary[i];j=i;}}}visit[j]=1;if(r_rank[j]==9){r_rank[j]=r_rank[j]+1;printf("%-10s%-10d%-10d%-10d%-10d%-10d%-10d%-10d%-10d%-10d\n",uid[j],salary[j],csalary[j],revenue[j], _water_electricity[j],_deductions[j],t_salary[j],deduction_count[j],r_salary[j],r_rank[j]);}else if(r_rank[j]==10){r_rank[j]=r_rank[j]-1;printf("%-10s%-10d%-10d%-10d%-10d%-10d%-10d%-10d%-10d%-10d\n",uid[j],salary[j],csalary[j],revenue[j], _water_electricity[j],_deductions[j],t_salary[j],deduction_count[j],r_salary[j],r_rank[j]); }else if(r_rank[j]!=10&r_rank[j]!=9)printf("%-10s%-10d%-10d%-10d%-10d%-10d%-10d%-10d%-10d%-10d\n",uid[j],salary[j],csalary[j],revenue[j], _water_electricity[j],_deductions[j],t_salary[j],deduction_count[j],r_salary[j],r_rank[j]); j=0;max=0;
}/********** End **********/
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/163106.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

打工人一定要学会找资源~

还有很多小伙伴不知道怎么找资源吗&#xff1f;今天就给大家推荐一下几个资源网站&#xff0c;无论是图片又或是视频。通通都能找到&#xff01; 一、全网1000平台视频解析下载器——XDown 在线视频下载工具&#xff0c;几乎能下全网所有平台的视频&#xff0c;而且下完还能自…

javaEE - 2(11000字详解多线程)

一&#xff1a;多线程带来的的风险-线程安全 线程安全的概念&#xff1a;如果多线程环境下代码运行的结果是符合我们预期的&#xff0c;即在单线程环境应该的结果&#xff0c;则说这个程序是线程安全的。 当多个线程同时访问共享资源时&#xff0c;就会产生线程安全的风险&am…

Unity3D 拖拽赋值组件与通过Find赋值组件的优点与缺点详解

Unity3D是一款流行的游戏开发引擎&#xff0c;提供了丰富的功能和工具&#xff0c;使开发人员能够轻松创建高质量的游戏。在Unity3D中&#xff0c;我们经常需要通过拖拽赋值组件或通过Find赋值组件来实现不同对象之间的交互。本文将详细介绍这两种方法的优点和缺点&#xff0c;…

ICML2021 | RSD: 一种基于几何距离的可迁移回归表征学习方法

目录 引言动机分析主角&#xff08;Principal Angle&#xff09;表征子空间距离正交基错配惩罚可迁移表征学习实验数据集介绍 实验结果总结与展望 论文链接 相关代码已经开源 引言 深度学习的成功依赖大规模的标记数据&#xff0c;然而人工标注数据的代价巨大。域自适应&…

VA01/VA02/VA03 销售订单根据定价和步骤校验权限隐藏价格

1、业务需求 针对用户使用销售订单时&#xff0c;根据定价和步骤顺序&#xff0c;判断是否有权限&#xff0c;没有权限时隐藏销售订单抬头和行项目的部分价格数据 要限制的定价和步骤在spro中的位置 限制的步骤 2、增强实现 2.1权限对象 创建带有定价和步骤的权限对象 分配…

力扣刷题 day48:10-18

1.4的幂 给定一个整数&#xff0c;写一个函数来判断它是否是 4 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 整数 n 是 4 的幂次方需满足&#xff1a;存在整数 x 使得 n 4x 方法一&#xff1a;不断除以4 #方法一&#xff1a;不断除…

如何用工业树莓派和MQTT平台打通OT和IT?

一、应用设备 OT端设备&#xff1a;步进电机&#xff0c;MODBUS TCP远程I/O模块&#xff0c;PLC设备 边缘侧设备&#xff1a;宏集工业树莓派&#xff1b; IT端设备&#xff1a;PC、安卓手机&#xff1b; IT端软件&#xff1a;宏集HiveMQ MQTT通信平台 二、原理 宏集工业树…

python之自动化点餐定时任务

1、准备一个可执行的python文件 2、使用定时任务管理器配置定时任务 Cron是linux系统的任务管理器 2.1打开终端或控制台 2.2进入crontab编辑器&#xff1a; crontab -e 编辑crontab文件 crontab -l 列出当前用户的所有定时任务 crontab -r 删除当前用户的crontab文…

Web安全测试详解

前言 随着互联网时代的蓬勃发展&#xff0c;基于Web环境下的应用系统、应用软件也得到了越来越广泛的使用。 目前&#xff0c;很多企业的业务发展都依赖于互联网&#xff0c;比如&#xff0c;网上银行、网络购物、网络游戏等。但&#xff0c;由于很多恶意攻击者想通过截获他人…

虹科 | 解决方案 | 机械免拆压力测试方案

对于发动机的气门卡滞或气门开闭时刻错误、活塞环磨损、喷油嘴泄漏/堵塞等故障&#xff0c;往往需要解体发动机或拆卸部件才能发现&#xff1b;而对于某些轻微的故障&#xff0c;即使解体了发动机后也经常难于肉眼判别 虹科Pico提供的WPS500压力测试方案&#xff0c;可以动态测…

7+非肿瘤+WGCNA+分型+实验,筛选关键基因进一步分型以及表达验证

今天给同学们分享一篇非肿瘤WGCNA分型实验的生信文章“Identification of molecular subtypes and immune infiltration in endometriosis: a novel bioinformatics analysis and In vitro validation”&#xff0c;这篇文章于2023年8月18日发表在Front Immunol期刊上&#xff…

IPV6 ND协议--源码解析【根源分析】

ND协议介绍 ND介绍请阅读上一篇文章&#xff1a;IPv6知识 - ND协议【一文通透】11.NDP协议分析与实践_router solicitation报文中不携带source link-layer address-CSDN博客 ND协议定义了5种ICMPv6报文类型&#xff0c;如下表所示&#xff1a; NS/NA报文主要用于地址解析RS/…

GEE:绘制土地利用类型面积分布柱状图

作者:CSDN @ _养乐多_ 本文记录了,在 Google Earth Engine (GEE)中进行随机森林分类后绘制不同类型面积分布柱状图的代码片段。 完整代码请看博客《GEE:随机森林分类教程(样本制作、特征添加、训练、精度、参数优化、贡献度、统计面积)》 柱状图效果如下所示, 文章目…

高性能计算与多模态处理的探索之旅:英伟达GH200性能优化与GPT-4V的算力加速未来

★多模态大模型&#xff1b;GPU算力&#xff1b;LLMS&#xff1b;LLM&#xff1b;LMM&#xff1b;GPT-4V&#xff1b;GH200&#xff1b;图像识别&#xff1b;目标定位&#xff1b;图像描述&#xff1b;视觉问答&#xff1b;视觉对话&#xff1b;英伟达&#xff1b;Nvidia&#…

leetCode 392. 判断子序列 动态规划 + 优化空间 / 双指针 等多种解法

392. 判断子序列 - 力扣&#xff08;LeetCode&#xff09; 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字符串。&#xff08;例如&#xff0c…

剖析深度学习中的epoch与batch_size关系、代码

目录 前言1. 定义2. 代码 前言 为了区分深度学习中这两者的定义&#xff0c;详细讲解其关系以及代码 1. 定义 在 PyTorch 中&#xff0c;“epoch”&#xff08;周期&#xff09;和 “batch size”&#xff08;批大小&#xff09;是训练神经网络时的两个重要概念 它们用于控…

【大数据】Kafka 入门简介

Kafka 入门简介 1.什么是 Kafka2.Kafka 的基本概念3.Kafka 分布式架构4.配置单机版 Kafka4.1 下载并解压包4.2 启动 Kafka4.3 创建 Topic4.4 向 Topic 中发送消息4.5 从 Topic 中消费消息 5.实验5.1 实验一&#xff1a;Python 实现生产者消费者5.2 实验二&#xff1a;消费组实现…

光伏电站绝缘阻抗异常排查方法

安科瑞 崔丽洁 概述 01 光伏发电是依托电力电子技术,利用太阳光照将太阳能转化为电能的系统。光伏发电不需要使用化石燃料&#xff0c;减少了发电时产生的污染&#xff0c;并且减少了能源消耗。光伏发电依托政策扶持&#xff0c;快速在国内普及。光伏发电与传统火电发电原理不同…

模糊测试面面观 | 车联网场景模糊测试解决方案

随着国际国内汽车信息安全标准的出台、用户安全意识的不断提高以及针对智能网联汽车安全攻击的不断规模化复杂化和深入&#xff0c;智能网联汽车系统及车联网安全形势严峻。 然而大部分车型在信息安全防护方面水平偏低&#xff0c;车内相关的联网部件及控制部件防护可靠性不高&…

Python接口自动化 —— token登录(详解)

简介 为了验证用户登录情况以及减轻服务器的压力&#xff0c;减少频繁的查询数据库&#xff0c;使服务器更加健壮。有些登录不是用 cookie 来验证的&#xff0c;是用 token 参数来判断是否登录。token 传参有两种一种是放在请求头里&#xff0c;本质上是跟 cookie 是一样的&am…