oj上的题,为什么过不了?
#include<stdio.h>
struct Employee{
char name[10];
float Basic,Variable,Expenditure,Payroll;
};
void Sort(struct Employee *p,int n)
{
struct Employee a;
int i,j;
for(i=0;i<n;i++)
for(j=i;j<n;j++)
{
if(p[i].Payroll>p[j].Payroll||(p[i].Payroll==p[j].Payroll&&p[i].Basic>p[j].Basic)||(p[i].Payroll==p[j].Payroll&&p[i].Basic==p[j].Basic&&p[i].Variable>p[j].Variable))
{
a=p[i];
p[i]=p[j];
p[j]=a;
}
}
}
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;
}
题目:给定N个职员的信息,包括姓名、基本工资、浮动工资和支出,要求编写程序按照排序规则顺序输出每位职员的姓名和实发工资(实发工资=基本工资+浮动工资-支出)。
排序规则:按照实发工资从小到大排序,如果实发工资相同的则按照基本工资从小到大排序,如果实发工资和基本工资都相同,则按照浮动工资从小到大排序。
注意:main函数已经给定(如下所示)。
请将程序补充完整。
提交时只需要提交自己补充的代码部分,不需要提交给定的main函数的代码部分。