永发信息网

n位评委给一位选手打分,去掉其中的一个最高分和一个最低分,求这位选手的平均得分。c语言大神请帮帮忙

答案:4  悬赏:50  手机版
解决时间 2021-03-02 16:33
n位评委给一位选手打分,去掉其中的一个最高分和一个最低分,求这位选手的平均得分。c语言大神请帮帮忙啊。。。
最佳答案
#include<stdio.h>

main()
{
int n,i,j,m;
float a[50],avg[50],sum=0,change,max,min;
printf("请输几个评委,几个选手");
scanf("%d%d",&n,&m);
for(j=0;j<m;j++)
{

printf("请输入第%d个人的各个分数",j+1);

for(i=0;i<n;i++)
{
scanf("%f",&a[i]);
}
max=a[0];
min=a[0];
for(i=0;i<n;i++)
{
max=max>a[i]?max:a[i];
min=min<a[i]?min:a[i];
}
for(i=0;i<n;i++)
{
sum+=a[i];
}
sum=sum-min-max;
avg[j]=sum/(n-2);
printf("平均分为%f\n",avg[j]);
}

for(i=0;i<m;i++)
for(j=0;j<m-1;j++)
{
if(avg[i+1]>avg[i])
{
change=avg[i+1];
avg[i+1]=a[i];<处盯边故装嘎膘霜博睛br /> avg[i]=change;
}
}
for(i=0;i<m;i++)
printf("第%d个人平均分数%6.6f\n",i,avg[i]);

}
全部回答
我这个是C++的代码 里面含有标准库。 #include<iostream> #include<vector> #include<deque> #include<string> #include<algorithm> #include<ctime> using namespace std; class Person { public: Person(){}; Person(string name, double score) { this->m_Name = name; this->m_Score = score; } string m_Name; double m_Score; //平均分 }; void creatPerson(vector<Person>&v,int n) { int score = 0; for (int i = 0; i < n; ++i) { string name1 = to_string(i+1); //int类型转化为string类型 string name2 = "号选手"; name1 += name2; Person p(name1, score); v.push_back(p); } } void printVector(vector<Person>&v) { for (vector<Person>::iterator it = v.begin(); it != v.end(); ++it) { cout << it->m_Name << "最终平均分数为:" << it->m_Score << endl; } } void printVector2(vector<Person>&v) { for (vector<Person>::iterator it = v.begin(); it != v.end(); ++it) { cout << it->m_Name << " "; } cout << endl; } void setVector(vector<Person>&v,int m) { for (vector<Person>::iterator it = v.begin(); it != v.end(); ++it) { deque<int>d; cout << "已为" << it->m_Name <<"打了"<<m <<"次分:" << endl; for (int i = 0; i < m; ++i) { int score = rand() % 41 + 60; d.push_back(score); } for (deque<int>::iterator dit = d.begin(); dit != d.end(); ++dit) { cout << *dit << " "; } cout << endl; sort(d.begin(), d.end()); d.pop_front(); d.pop_back(); int sum = 0; for (deque<int>::iterator dit = d.begin(); dit != d.end(); ++dit) { sum += *dit; } //cout << "sum=" << sum << "数量" << d.size() << endl; double avg = sum*1.0 / d.size(); it->m_Score = avg; } cout << endl; } void sortScore(vector<Person>&v) { vector<Person>::iterator it = v.begin(); Person t; for (unsigned int i = 0; i < v.size(); ++i) { for (unsigned int j = 0; j < v.size() - i - 1; ++j) { if (it[j].m_Score>it[j + 1].m_Score) //比较分数 { t = it[j]; //更换整体 it[j] = it[j + 1]; it[j + 1] = t; } } } } int main(void) { cout << "软件说明:" << endl; cout << "该软件为N个评委为M个选手打分,这样每一个选手就收到N次打分,去掉一个最低分和一个最高分,算出选手的平均分,并为这些选手按平均分从低到高排序。" << endl; cout << endl; cout << "请输入选手的个数N="; int n; while (true) { char c = cin.peek(); if (c > '0'&& c <= '9') { cin >> n; cout << "你设置的选手人数为:" << n << endl; break; } cin.clear(); //重置标志位 cin.sync(); //清空缓冲区 cout << "你输入不正确,请重新输入" << endl; } getchar(); cout << endl; cout << "请输入评委的个数M="; int m; while (true) { char c = cin.peek(); if (c > '0'&& c <= '9') { cin >> m; cout << "你设置的评委人数为:" << m << endl; break; } cin.clear(); //重置标志位 cin.sync(); //清空缓冲区 cout << "你输入不正确,请重新输入" << endl; } cout << endl; cout << "请这"<<m<<"个评委为选手打分:"<<endl; cout << "(为了避免手动输入分数浪费时间,下面让计算机随机为选手打"<<m<<"次分。)" << endl; cout << endl; srand((unsigned int)time(NULL)); //随机数种子 vector<Person>v; creatPerson(v,n); //printVector(v); setVector(v,m); cout << endl; cout << "去掉一个最低分,去掉一个最高分:"<<endl; printVector(v); cout << endl; cout << "选手成绩由低到高排序如下:" << endl; sortScore(v); printVector2(v); system("pause"); return 0; }
main() {float a[8],s=0; int i,max,min; scanf("%f",&a[0]); max=min=0; s+=a[0]; for(i=1;i<8;i++)  {scanf("%f",&a[i]);   s+=a[i];   if(a[i]>a[max])    max=i;   else if(a[i]
  • 3楼网友:大漠
  • 2021-03-02 04:11
这个问题提得好啊
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯