一个题目,涉及结构体数组的初始化与输出
2014-01-16 17:21
267 查看
题目如下:
微软销售部招聘在线销售人员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;
}
结果如下
微软销售部招聘在线销售人员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;
}
结果如下
相关文章推荐
- 创建一个长度16的整数型数组并初始化,先输出数组中为三倍数的数,在输出下表为三倍数的元素
- 第十四周项目一数组大折腾(4)创建一个长度为16的整形数组a并初始化,删除数组中所有能被3整除的元素(数组中实际有效使用的元素将不足16),输出删除后数组中的全部元素
- 【程序31】 题目:将一个数组逆序输出。
- 第十四周项目一数组大折腾(2)创建一个长度为10的整形数组并初始化,由后往前(由第9个元素向第0个元素方向)输出数组中所有元素的值,改变数组元素的值,令所有的数组加倍,输出改变后的值。
- 定义一个结构体变量(包括年、月、日),编写程序,要求输入年月日,程序能够计算并输出改日是本年中的第几天。注意闰年问题。(数组)
- 定义一个结构体数组并初始化时出现的问题
- 题目:一个整数数组,请把这些数由小到大输出。
- 【C语言】用结构体数组实现:有三个候选人,每个选民只能选一个人,编写一个选票程序,最终输出候选人的票数
- 第十三周项目1.5创建一个长度为16的数组,并初始化前15个,输入b,并将其插入到a【0】,输出数组
- 题目:输入一个字符数组,输出所有的排列。
- 我在一个结构体里定义超过两个字符数组的成员输出结果会出错
- 【题目】:输入一个非负整形数组,其中每个数代表紧挨着的宽为1的墙的高度,输出这些墙之间能积水的体积。函数接口为 int Volume(int * height,int n),要求只能遍历一 遍数组,且
- 题目:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。 要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,
- 第十四周项目一数组大折腾(1)创建一个有20个元素的整型数组,通过初始化,为数组中的前10个元素赋初值,然后通过键盘输入后10个元素的值,从前往后输出数组中元素的值,每五个元素
- 初始化一个数组并输出数组的值(有前到后)
- 初始化一个有10个整数的数组,在数组中查找并输出最大值和最小值。
- 【程序31】 ArrayConverse.java 题目:将一个数组逆序输出。 。
- 第十四周项目一数组大折腾(3)创建一个长度为16的整形数组a并初始化,先输出数组中元素值为3的倍数的数,再输出所有下标为3的倍数的元素值
- 创建一个数组并初始化,将其输出(由后到前)
- (C语言-结构体)主函数创建5个学生的数组,写一个排序函数,让学生按姓名从小到大排序,主函数输出排序后的结果。