题目内容:编写程序,输入并保存5名职工的信息,计算出平均工资并输出,再按照工资从高到低的顺序输出他们的信息。
职工信息包括:职工号、姓名、工资。职工号不超过9位,姓名不超过8个字符,工资和平均工资均为双精度实数,保留1位小数。
输入格式:
%d%s%lf
输出格式:
The Average=%-6.1f\n
%-10d%-10s%-6.1f\n
输入样例:
19610901 zhao 8524
20170205 qian 6605
20100320 sun 6750
19730205 wang 8230
19800725 zhou 7590
输出样例:
The Average=7539.8
19610901 zhao 8524.0
19730205 wang 8230.0
19800725 zhou 7590.0
20100320 sun 6750.0
20170205 qian 6605.0
时间限制:500ms内存限制:32000kb
#include <stdio.h>
struct student{
int num;int tag;
char name[20];
double wage;
}stu[5];
void compare(){
int i,j,t;double tw;
t=0;
for(i=0;i<5;i++)
for(j=0;j<5-i;j++)
if(stu[j].wage<stu[j+1].wage){
t=stu[j].tag;stu[j].tag=stu[j+1].tag;stu[j+1].tag=t;
tw=stu[j].wage;stu[j].wage=stu[j+1].wage;stu[j+1].wage=tw;
}
}
int main(){
int a=0;double sum=0;int i;
struct student *p;
for(p=stu;p<stu+5;p++){
scanf("%d%s%lf",&p->num,&p->name,&p->wage);
p->tag=a;a++;
}
for(p=stu;p<stu+5;p++){
sum+=p->wage;
}
printf("The Average=%-6.1f\n",sum/5.0);
compare();
for(i=0;i<5;i++){
printf("%-10d%-10s%-6.1f\n",stu[stu[i].tag].num,stu[stu[i].tag].name,stu[i].wage);
}
return 0;
}