《程序设计基础二》类的设计部分练习题目:1432--1446,运算符重载部分练习题目:1447--1461

Problem 2129. -- 计算职工工资

2129: 计算职工工资

Time Limit: 1 Sec  Memory Limit: 128 MB   64bit IO Format: %lld
Submitted: 418  Accepted: 125
[Submit][Status][Web Board]

Description

给定N个职员的信息,包括姓名、基本工资、浮动工资和支出,要求编写程序按照排序规则顺序输出每位职员的姓名和实发工资(实发工资=基本工资+浮动工资-支出)。
排序规则:按照实发工资从小到大排序,如果实发工资相同的则按照基本工资从小到大排序,如果实发工资和基本工资都相同,则按照浮动工资从小到大排序。

注意:main函数已经给定(如下所示)。
           请将程序补充完整。
           提交时只需要提交自己补充的代码部分,不需要提交给定的main函数的代码部分。
#include<stdio.h>
int main()
{
struct Employee emp[100];
int i,n,Cas=0;
while(scanf("%d",&n)!=EOF)
{
Cas++;
for(i=0;i<n;i++)
{
scanf("%s%f%f%f",emp[i].name,&emp[i].Basic,&emp[i].Variable,&emp[i].Expenditure);
emp[i].Payroll=emp[i].Basic+emp[i].Variable-emp[i].Expenditure;
}
Sort(emp,n);
printf("Case #%d:\n",Cas);
for(i=0;i<n;i++)
printf("%10s%10.2f\n",emp[i].name,emp[i].Payroll);
}
return 0;
}

Input

多组测试数据,每组测试数据的第一行给出职工人数N(正整数,不超过100)。
接下来的N行,每行表示一个职工的信息,格式为:姓名 基本工资 浮动工资 支出”,中间以空格分隔。其中“姓名”为长度小于10的不包含空白字符的非空字符串,其他输入、输出保证在单精度范围内。

Output

每组测试数据的第一行首先输出“Case #n:”,n为测试数据组数,从1开始计数。
接下来N行按照排序后的顺序输出N个职工的姓名和实发工资,每个职工占一行。

Sample Input

3
zhao 240 400 75
qian 360 120 50
zhou 560 150 80

Sample Output

Case #1:
      qian    430.00
      zhao    565.00
      zhou    630.00

[Submit][Status][Web Board]