微软销售部招聘在线销售人员11名,三个月的业绩考核期,业绩考核分为销售业绩考核和工作激情度考核。销售业绩单位为套,工作激情度单位为分。三个月后,11个人的考核信息分别如下:
A01 198件 97分
A02 90件 103分
A02 76件 78分
A03 123件 100分
A04 77件 87分
A05 10件 54分
A06 81件 104分
A07 110件 87分
A08 45件 41分
A09 123件 99分
A10 140件 88分
A11 109件 98分
要求:
如果销售业绩高于总的平均件数N的销售人员将被留下,低于平均件数N的销售人员将被淘汰。请使用C++/C#编程实现:按照销售业绩从大到小的顺序输出被留下人员的编号信息,销售信息,工作激情度信息。
代码如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct people{
char Num[3];
int sale;
int jq;
}people;
people A[11]={ //对结构体数组初始化时出现了很多问题,
{'A','0','1',198,97},
{'A','0','2' ,90 ,103},
{'A','0','3' ,123 ,100},
{'A','0','4' ,77 ,87},
{'A','0','5' ,10 ,54},
{'A','0','6' ,81 ,104},
{'A','0','7' ,110 ,87},
{'A','0','8' ,45 ,41},
{'A','0','9' ,123 ,99},
{'A','1','0' ,140 ,88},
{'A','1','1' ,109 ,98}
};
void sort(people A[11]){//用冒泡排序,先排序,再进行筛选,这样就不要删掉被淘汰人的信息。
int i = 0;
int j = 10;
int ave,n,m;
people temp;
for(j=10; j>0; j--){
for(i=0; i<j; i++){
if(A[i].sale < A[i+1].sale){
temp.jq = A[i+1].jq;
for(m=0;m<3;m++){
temp.Num[j] = A[i+1].Num[j];
}
temp.sale = A[i+1].sale;
A[i+1].jq = A[i].jq;
A[i+1].sale = A[i].sale;
for(m=0;m<3;m++){
A[i+1].Num[j] = A[i].Num[j];
}
A[i].sale = temp.sale;
for(m=0;m<3;m++){
A[i].Num[j] = temp.Num[j];
}
A[i].jq = temp.jq;
}
}
}
for(i=0; i<11; i++){
for(j=0;j<3;j++){
printf("%c",A[i].Num[j]);
}
printf(" %d",A[i].sale);
printf(" %d\n",A[i].jq);
}
printf("\n--------------------\n");
ave = 0;
for(i=0; i<11; i++){
ave = ave + A[i].sale;
}
ave = ave / 11;
i = 0;
while(A[i].sale > ave){
i++;
}
n = i;
for(i=0; i<n; i++){
for(j=0;j<3;j++){
printf("%c",A[i].Num[j]);
}
printf(" %d",A[i].sale);
printf(" %d\n",A[i].jq);
}
}
int main(){
sort(A);
return 0;
}
结果如下