//设计一个没有标底的评标函数
comp pb1(comp tt[],int n)
{
//(1)计算出平均报价,等价于 原先的标底
//(2)和计算刚才的标底公司评标方法类似
int i,sum=0,ave,cj;
comp ts;
for(i=0;i<n;i++)
sum=sum+tt[i].bj;
ave=sum/n;
ts=tt[0];
cj=abs(ts.bj-ave);
//剩余的所有abs(tt[i]-ave)和cj进行比较,找到最小的公司
for(i=1;i<n;i++)
if (abs(tt[i].bj-ave)<cj) //重新计算差价,同时保存该公司信息到ts变量
{cj=abs(tt[i].bj-ave); ts=tt[i];}
return ts;
}
int main()
{
comp com[10]={"华为公司",60,"木云科技",50,"启明星辰",65,"天融信",75,"华三公司",54,"河南精华",59,"帕拉迪公司",80,"杭州迪普",90,"南京金智",49,"网瑞达公司",47};
comp zbgs;
zbgs=pb1(com,10);
printf("%s:%d\n",zbgs.name,zbgs.bj);
return 0;
}
拓展:不再设置标底,评标规则:最接近项目平均报价的公司中标。(报名顺序靠前的优先)
设某组有4个人(姓名,学号,三科成绩),编程求出每个人的三科平均成绩,按平均成绩从高到低输出。
分析:
struct students
{
char name[20];
long number;
float score[4]; //score[3]存放平均成绩
};
struct studens st[4];
#include <stdio.h>
#include <string.h>
struct students
{
char name[20];
long number;
float score[4]; //score[3]存放平均成绩
};
typedef struct students stu;
void inputdata(stu tt[],int n)
{
//完成tt数组的信息输入
int i;
for(i=0;i<n;i++)
scanf("%s%ld%f%f%f",tt[i].name,&tt[i].number,&tt[i].score[0],&tt[i].score[1],&tt[i].score[2]);
}
上一页
[1]
[2]
[3]
下一页