在“校园歌手大赛“中有n位评委为选手打分,其最终得分是去掉一个最高分和最低分后的平均分,编程实现成绩

急求其编写程序,用c语言编写,希望能够详细点,谢谢大家了,非常感谢,希望大家给点面子,万分感谢... 急求其编写程序,用c语言编写,希望能够详细点,谢谢大家了,非常感谢,希望大家给点面子,万分感谢 展开
 我来答
zmrzf
2011-06-10 · 超过33用户采纳过TA的回答
知道答主
回答量:74
采纳率:0%
帮助的人:58.1万
展开全部
#include<stdio.h>
void main()
{
int i,n;
double sum=0,t,s,b;
there:printf("请输入评委人数:\n");
scanf("%d",&n);
if(n<=2||n>=100)
{
printf("对不起,你输入的数错误!请重新输入数值(范围:大于2,小于100)\n");
goto there;
}
printf("请输入各评委打的分数:\n");
scanf("%lf",&t);
s=t;
b=t;
sum+=t;
for(i=0;i<n-1;i++)
{
scanf("%lf",&t);
sum+=t;
if(s>=t)
s=t;
if(b<=t)
b=t;
}
sum-=s+b;
printf("去掉最高分和最低分后的平均分为:%0.2lf\n",sum/(n-2));
}
易crazy
2011-06-10 · TA获得超过138个赞
知道小有建树答主
回答量:124
采纳率:0%
帮助的人:69万
展开全部
#include<iostream>
using namespace std;
int main()
{
int n;
double min=0,max=0,sumgrade=0,ave;
cout<<"输入评委数目:";
cin>>n;
double *grade=new double[n];
cout<<"输入各个评委打分:";
cin>>grade[0];
min=max=grade[0];
for(int i=1;i<n;i++)
{
cin>>grade[i];
if(grade[i]>max)max=grade[i];
if(grade[i]<min)min=grade[i];
}
for(i=0;i<n;i++)
{
sumgrade+=grade[i];
}
sumgrade-=min;
sumgrade-=max;
ave=sumgrade/(double)(n-2);
cout<<ave<<endl;
delete []grade;
return 1;
}
哎,时间太忙,不知道你懂C++不,写了个,你懂的话这个应该可以!
#include<stdio.h>
int main()
{
int n=7;
float min=0,max=0,sumgrade=0,ave=0,grade;
printf("输入各个评委打分:\n");
scanf("%f",&grade);
min=max=grade;
sumgrade=grade;
for(int i=1;i<n;i++)
{
scanf("%f",&grade);
if(grade>max)max=grade;
if(grade<min)min=grade;
sumgrade+=grade;
}
sumgrade-=min;
sumgrade-=max;
ave=sumgrade/(float)(n-2);
printf("最终得分:\n");
printf("%f\n",ave);
return 1;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
黒木4312
推荐于2016-11-07 · TA获得超过788个赞
知道小有建树答主
回答量:371
采纳率:0%
帮助的人:479万
展开全部
#include<stdio.h>
#define n 10
int main()
{
int score=0,i,max=0,min=0,sum=0;
for(i=1;i<=n;i++)
{
printf("Input score %d=",i);
scanf("%d",&score);
sum+=score;
if(score>max) max=score;
if(score<min) min=score;
}
printf("Canceled max score:%d\nCanceled min score:%d\n",max,min);
printf("Average score:%d\n",(sum-max-min)/8);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
溪贝0号123
2020-03-10 · TA获得超过425个赞
知道答主
回答量:228
采纳率:100%
帮助的人:4.5万
展开全部
我这个是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; // 打分区间60~100
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();

/*for (deque<int>::iterator dit = d.begin(); dit != d.end(); ++dit)
{
cout << *dit << " ";
}
cout << endl;*/

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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式