n位评委给一位选手打分,去掉其中的一个最高分和一个最低分,求这位选手的平均得分。
我这样写的,可是平均分一档一直出错、{inta,i;floatx,max=0,ave,min=10,sum=0;printf("shuru:");scanf("%d",&...
我这样写的,可是平均分一档一直出错、
{
int a,i;
float x,max=0,ave,min=10,sum=0;
printf("shuru:");
scanf("%d",&a);
for(i=1;i<=a;i++)
{
printf("input:");
scanf("%f",&x);
sum=sum+x;
if(x>max)
{
max=x;
}
else if(x<min)
{
min=x;
}
else
x=x;
}
ave=(sum-max-min)/(a-2);
printf("max=%.2f,min=%.2f,ave=%.2f\n",max,min,ave);
return 0;
} 展开
{
int a,i;
float x,max=0,ave,min=10,sum=0;
printf("shuru:");
scanf("%d",&a);
for(i=1;i<=a;i++)
{
printf("input:");
scanf("%f",&x);
sum=sum+x;
if(x>max)
{
max=x;
}
else if(x<min)
{
min=x;
}
else
x=x;
}
ave=(sum-max-min)/(a-2);
printf("max=%.2f,min=%.2f,ave=%.2f\n",max,min,ave);
return 0;
} 展开
3个回答
展开全部
你为什么要给min设个初始值10?
错误就在这里。
修改后的代码:
#include <stdio.h>
int main(){
int a,i;
float x,max,ave,min,sum=0;
printf("shuru:");
scanf("%d",&a);
for(i=1;i<=a;i++)
{
printf("input:");
scanf("%f",&x);
if(i==1){
max = x;
min = x;
}
sum=sum+x;
if(x>max)
{
max=x;
}
else if(x<min)
{
min=x;
}
}
printf("%f\n",sum);
printf("%f\n",max);
printf("%f\n",min);
printf("%d\n",a-2);
ave=(sum-max-min)/(a-2);
printf("max=%.2f,min=%.2f,ave=%.2f\n",max,min,ave);
return 0;
}
错误就在这里。
修改后的代码:
#include <stdio.h>
int main(){
int a,i;
float x,max,ave,min,sum=0;
printf("shuru:");
scanf("%d",&a);
for(i=1;i<=a;i++)
{
printf("input:");
scanf("%f",&x);
if(i==1){
max = x;
min = x;
}
sum=sum+x;
if(x>max)
{
max=x;
}
else if(x<min)
{
min=x;
}
}
printf("%f\n",sum);
printf("%f\n",max);
printf("%f\n",min);
printf("%d\n",a-2);
ave=(sum-max-min)/(a-2);
printf("max=%.2f,min=%.2f,ave=%.2f\n",max,min,ave);
return 0;
}
展开全部
int main()
{
int a,i;
float x,max=0,ave,min=10,sum=0;
printf("shuru:");
scanf("%d",&a);
for(i=1;i<=a;i++)
{
printf("input:");
scanf("%f",&x);
sum=sum+x;
if(x>max)
{
max=x;
}
if(x<min) //else必须去掉,否则会造成数据统计出错!
{
min=x;
}
}
ave=(sum-max-min)/(a-2);
printf("max=%.2f,min=%.2f,ave=%.2f\n",max,min,ave);
return 0;
}
{
int a,i;
float x,max=0,ave,min=10,sum=0;
printf("shuru:");
scanf("%d",&a);
for(i=1;i<=a;i++)
{
printf("input:");
scanf("%f",&x);
sum=sum+x;
if(x>max)
{
max=x;
}
if(x<min) //else必须去掉,否则会造成数据统计出错!
{
min=x;
}
}
ave=(sum-max-min)/(a-2);
printf("max=%.2f,min=%.2f,ave=%.2f\n",max,min,ave);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我这个是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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询