#include <fstream>
using namespace std;
//下列函数输入一个数组,返回平均成绩,或最高和最低分数
double Statistic(double score, double &max, double &min,double &sum int n)
{
sum = score[0];
max = min = score[0];
for(int i = 1; i < n; ++i)
{
if(score[i] > max) max = score[i];
if(score[i] < min) min = score[i];
sum += a[i];
}
sum -= max + min;
return sum / double(n - 2);
}
int main()
{
const int PW = 7;
const int NM = 5;
string name;
double score[PW];
ifstream fin("f1txt");
if(!fin) exit(1);
ofstream fout("f2txt");
if(!fout) exit(2);
for(int i = 0; i < NM; ++i)
{
fin>>name;
for(int j = 0; j < PW; ++j)
fin>>score[j];
double sum, ave, max, min;
ave = Statistic(score, max, min, sum, PW);
fout<<name<<" "<<max<<""<<min<<" "<<sum<<" "<<ave<<endl;
}
finclose();
foutclose();
return 0;
}
#include<iostream>
#include<string>
#include <algorithm>
#include <cstdlib>
#include<vector>
#include<cstring>
using namespace std;
inline int gcd(unsigned long a,unsigned long b){//最大公约数
if(b==0)return a;
return gcd(b,a%b);
}
inline int lcd(unsigned long a,unsigned long b){//最小公倍数
return abgcd(a,b);
}
class Fraction{
protected:
unsigned long numerator ;//分子
unsigned long denominator;//分母
char flag;//正负号
public:
Fraction(unsigned long n=0,unsigned long d=1,char f='+'){//有参数的构造函数
int temp=gcd(n,d);
if(temp==0)
temp=1;
numerator=n/temp;
denominator=d/temp;//规格化
flag=f;
};
Fraction(const Fraction &b ){//COPY构造函数
numerator=bnumerator;
denominator=bdenominator;
flag=bflag;
};
char getFlag(){return flag;}
Fraction reciprocal ()const{//倒数
return Fraction(this->denominator,this->numerator,this->flag);
}
friend Fraction reciprocal(Fraction &b){//倒数
return Fraction(bdenominator,bnumerator,bflag);
}
bool Correct(){//判断分数形式是否合法、是否是既约分数
if(denominator==0||gcd(denominator,numerator)!=1)
return false;
return true;
}
void Cout(){//格式化输出Fraction
if(flag=='-')
cout<<"-";
printf("%lu/",numerator);
printf("%lu",denominator);
}
const Fraction & operator =( const Fraction b ){//重载=
numerator=bnumerator;
denominator=bdenominator;
flag=bflag;
return this;
}
friend Fraction & operator -( const Fraction &a,const Fraction &b );
friend Fraction & operator +( const Fraction &a,const Fraction &b ){//重载+
Fraction c;
if(aflag!=bflag)
return a-Fraction(bnumerator,bdenominator,aflag);
unsigned long temp=gcd(adenominator,bdenominator);
cdenominator=lcd(bdenominator,adenominator);
cnumerator=anumeratorcdenominator/adenominator+bnumeratorcdenominator/bdenominator;
temp=gcd(cdenominator,cnumerator);
cdenominator/=temp;
cnumerator/=temp;
cflag=aflag;
return c;
}
friend Fraction & operator -( const Fraction &a,const Fraction &b ){//重载-
Fraction c;
if(aflag!=bflag)
return a+Fraction(bnumerator,bdenominator,aflag);
unsigned long temp=gcd(adenominator,bdenominator);
cdenominator=lcd(bdenominator,adenominator);
cnumerator=anumeratorcdenominator/adenominator-bnumeratorcdenominator/bdenominator;
temp=gcd(cdenominator,cnumerator);
cdenominator/=temp;
cnumerator/=temp;
cflag=aflag;
if(cnumerator<0){
cnumerator=0-cnumerator;
if(cflag=='+')
cflag='-';
else cflag='+';
}
return c;
}
friend Fraction & operator ( const Fraction &a,const Fraction &b ){//重载
Fraction c;
cdenominator=adenominatorbdenominator;
cnumerator=anumeratorbnumerator;
unsigned long temp=gcd(cdenominator,cnumerator);
cdenominator/=temp;
cnumerator/=temp;
if(aflag==bflag)
cflag='+';
else cflag='-';
return c;
}
friend Fraction & operator /( const Fraction &a,const Fraction &b ){//重载/
Fraction c(breciprocal());
return ac;
}
friend bool operator==(const Fraction &a,const Fraction &b ){//重载==
return adenominator==bdenominator&&anumerator==bnumerator&&aflag==bflag;
}
};
inline Fraction Fraction_random(){//产生随机分数
return Fraction(rand(),rand()+1,(rand()&1)'-':'+');
}
Fraction fra[10][3];//分别存储随机生成的10个多项式的第一个运算数,第二个运算数,结果
char pol[10];//存储随机产生的10个多项式的运算类型
//举例,如a+b=c,则fra[i][0]=a,fra[i][1]=b,fra[i][2]=c,pol[i]='+'
//题目没有要求构造多项式类,所以这里就这么简化处理了~~
void Polynomial_random(){//生成全部10个随机多项式和其结果
for(int i=0,temp;i<10;i++){
temp=rand()%4;
fra[i][0]=Fraction_random();
fra[i][1]=Fraction_random();
if(temp==0){
pol[i]='+';
fra[i][2]=fra[i][0]+fra[i][1];
}
if(temp==1){
pol[i]='-';
fra[i][2]=fra[i][0]-fra[i][1];
}
if(temp==2){
pol[i]='';
fra[i][2]=fra[i][0]fra[i][1];
}
if(temp==3){
pol[i]='/';
fra[i][2]=fra[i][0]/fra[i][1];
}
}
}
void Cout(){//格式化输出10个多项式
for(int i=0;i<10;i++){
cout<<i+1<<"、\t";
fra[i][0]Cout();
printf(" %c ",pol[i]);
if(fra[i][1]getFlag()=='-'){
cout<<"(";
fra[i][1]Cout();
cout<<")";
}
else fra[i][1]Cout();
cout<<"=\n";
}
}
void Cin(){//读入答案并判断正误,最后统计分数
cout<<"\n";
cout<<" 请顺序输入每题答案: \n";
cout<<" (注意:1、输入的答案必须为既约分数,否则视为错误答案 \n";
cout<<" 2、若答案为0请输入0/1,否则视为错误答案) \n";
cout<<"\n";
string s;
unsigned long a,b;
int pos,score=0;
for(int i=0;i<10;i++){
pos=0;
a=0;
b=0;
cout<<i+1<<"、\t";
cin>>s;
while(s[pos]!='/'&&s[pos])
pos++;
if(s[0]!='-'){
for(int j=pos-1,k=1;j>=0;j--,k=10)
a+=(s[j]-'0')k;
}
else {
for(int j=pos-1,k=1;j>0;j--,k=10)
a+=(s[j]-'0')k;
}
for(int j=ssize()-1,k=1;j>pos;j--,k=10)
b+=(s[j]-'0')k;
if(Fraction(a,b,'+')==fra[i][2]){
cout<<"正确"<<endl;
score+=10;
}
else {
cout<<"错误,正确答案为:\t";
fra[i][2]Cout();
cout<<endl;
}
}
cout<<endl;
cout<<"总分:"<<score<<endl;
}
int main(){
Polynomial_random();
Cout();
Cin();
return 0;
}
#include <stdioh>
#include <stdlibh>
main()
{
float score, max1=0, max2=0, min1=10, min2=10, sum = 0; // 假设是10分制
int i, n;
printf("输入评委的人数: ");
scanf("%d", &n);
score = (float )malloc(sizeof(float));
printf("依次输入%d个评委打出的分数:\n", n);
for(i = 0; i < n; i++) {
scanf("%f", score+i);
sum += score[i];
if(score[i] > max1) {
max2 = max1;
max1 = score[i];
} else if(score[i] > max2)
max2 = score[i];
if(score[i] < min1) {
min2 = min1;
min1 = score[i];
} else if(score[i] < min2)
min2 = score[i];
}
sum -= max1 + min1;
if(n >= 9) {
sum -= max2 + min2;
n -= 4;
} else n -= 2;
printf("选手的平均分是: %2f\n", sum/n);
}
楼主你好,你看看下面这个代码吧 和你的比较相似 :
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
class School{
private:
int id;//学校编号
string name;//学校名称
int total;//学校总分
int male;//男子总分
int female;//女子总分
public:
School(){//初始化
id=0;
male=0;
female=0;
total=0;
}
void setName(string s){
name=s;
}
string getName(){
return name;
}
void setId(int i){
id=i;
}
int getId(){
return id;
}
void setTotal(int a){
total=a;
}
int getTotal(){
return total;
}
void setMale(int a){
male=a;
}
void setFemale(int a){
female=a;
}
int getMale(){
return male;
}
int getFemale(){
return female;
}
};
class Item{
private:
School sc[20];
string name;
public:
School getSchool(int i){
return sc[i];
}
School getSchools(){
return sc;
}
void setSchool(School sch,int i){
sc[i]=sch;
}
void setName(string s){
name=s;
}
string getName(){
return name;
}
};
class Count{
private:
School sc[20];
Item item[20];
int integral[5];
int n;
public:
Count(){
n=0;
integral[0]=7;
integral[1]=5;
integral[2]=3;
integral[3]=2;
integral[4]=1;
}
void input();//输入
void print(int);//打印
void statisticsForTotal();//按总分排序
void statisticsForId();//按编号排序
void statisticsForMale();//按男子总分排序
void statisticsForFemale();//按女子总分排序
void schoolInfo();//显示学校信息
void itemInfo();//显示项目信息
void menu();//显示菜单
void sort(School,string,int);//排序 *** 作
};
void Count::input(){
int i,j,num,m,f,id;
School sch;
Item it;
string s;
cout<<"输入学校数目:";
cin>>n;
for(i=0;i<n;i++){
sch=new School;
cout<<"请输入第"<<i+1<<"学校的名称:";
cin>>s;
sch->setName(s);
sch->setId(i+1);
sc[i]=sch;
}
cout<<"输入男子和女子项目的数目:";
cin>>m;
cin>>f;
while(m>20||m<1||f>20||f<1){
cout<<"输入数据有误,请重新输入:"<<endl;
cin>>m;
cin>>f;
}
for(i=0;i<m+f;i++){
cout<<"输入第"<<i+1<<"个项目的名称:";
cin>>s;
it=new Item;
it->setName(s);
item[i]=it;
cout<<"输入第"<<i+1<<"个项目的前5名学校的编号:"<<endl;
for(j=0;j<5;j++){
cin>>id;
if(i<m)
sc[id-1]setMale(sc[id-1]getMale()+integral[j]);
else if(i<m+f)
sc[id-1]setFemale(sc[id-1]getFemale()+integral[j]);
sc[id-1]setTotal(sc[id-1]getTotal()+integral[j]);
item[i]setSchool(sc[id-1],j);
}
}
}
void Count::print(int i){
cout<<" "<<sc[i]getId()<<setw(10)<<sc[i]getName()<<setw(8)<<sc[i]getTotal()
<<setw(9)<<sc[i]getMale()<<setw(10)<<sc[i]getFemale()<<endl;
}
void Count::sort(School sch,string mode,int num){//排序函数
int i,j,exchange;
School t;
if(mode=="total"){
exchange=0;
for(i=0;i<num-1;i++){
for(j=num-2;j>=0;j--)
if(sch[j+1]getTotal()>sch[j]getTotal()){
exchange=1;
t=sc[j+1];
sch[j+1]=sch[j];
sch[j]=t;
}
if(!exchange)
return;
}
return;
}
if(mode=="id"){
for(i=0;i<num;i++){
for(j=i+1;j<num;j++)
if(sch[i]getId()>sch[j]getId()){
t=sch[i];
sch[i]=sch[j];
sch[j]=t;
}
}
return;
}
if(mode=="male"){
exchange=0;
for(i=0;i<num-1;i++){
for(j=num-2;j>=0;j--)
if(sch[j+1]getMale()>sch[j]getMale()){
exchange=1;
t=sc[j+1];
sch[j+1]=sch[j];
sch[j]=t;
}
if(!exchange)
return;
}
return;
}
if(mode=="female"){
exchange=0;
for(i=0;i<num-1;i++){
for(j=num-2;j>=0;j--)
if(sch[j+1]getFemale()>sch[j]getFemale()){
exchange=1;
t=sc[j+1];
sch[j+1]=sch[j];
sch[j]=t;
}
if(!exchange)
return;
}
return;
}
}
void Count::statisticsForTotal(){
int i;
sort(sc,"total",n);
cout<<"按总分排序:"<<endl;
cout<<"学校编号 学校名称 总分 男子总分 女子总分"<<endl;
for(i=0;i<n;i++)
print(i);
}
void Count::statisticsForId(){
int i;
sort(sc,"id",n);
cout<<"按编号排序为:"<<endl;
cout<<"学校编号 学校名称 总分 男子总分 女子总分"<<endl;
for(i=0;i<n;i++)
print(i);
}
void Count::statisticsForMale(){
int i;
sort(sc,"male",n);
cout<<"按男子项目积分排序:"<<endl;
cout<<"学校编号 学校名称 总分 男子总分 女子总分"<<endl;
for(i=0;i<n;i++)
print(i);
}
void Count::statisticsForFemale(){
int i;
sort(sc,"female",n);
cout<<"按女子项目积分排序:"<<endl;
cout<<"学校编号 学校名称 总分 男子总分 女子总分"<<endl;
for(i=0;i<n;i++)
print(i);
}
void Count::schoolInfo(){ //查询学校的情况
int i,s;
cout<<"输入需要查询的学校编号:";
while(1){
cin>>s;
if(s<1||s>n){
cout<<"输入数据有误,请重新输入:";
continue;
}
break;
}
printf("该学校的信息信息:\n");
printf("编号 学校名称 总分 男子总分 女子总分\n");
for(i=0;i<n;i++){
if(sc[i]getId()==s){
print(i);
break;
}
}
cout<<endl;
}
void Count::itemInfo(){ //查询项目的情况
int i,s;
cout<<"输入需要查询的项目的编号:";
while(1){
cin>>s;
if(s<1||s>n){
cout<<"输入数据有误,请重新输入:";
continue;
}
break;
}
cout<<item[s-1]getName()<<"前5名学校编号及名称为:"<<endl;
sort(item[s-1]getSchools(),"total",5);
cout<<"名次 学校编号 学校名称"<<endl;
for(i=0;i<5;i++)
cout<<" "<<i+1<<"\t"<<item[s-1]getSchool(i)getId()
<<"\t"<<item[s-1]getSchool(i)getName()<<endl;
}
void Count::menu(){ //程序菜单
int i,flag=1;
while(flag){
cout<<"选择您需要的 *** 作:"<<endl;
cout<<"1按学校编号排序输出"<<endl;
cout<<"2按学校总分排序输出"<<endl;
cout<<"3按学校男总分排序输出"<<endl;
cout<<"4按学校女总分排序输出"<<endl;
cout<<"5查询某个学校成绩"<<endl;
cout<<"6查询某个项目成绩"<<endl;
cout<<"7结束"<<endl;
cin>>i;
while(i<1||i>7){
cout<<"你的输入有误,请重新输入:";
cin>>i;
}
switch(i){
case 1:
statisticsForId();
break;
case 2:
statisticsForTotal();
break;
case 3:
statisticsForMale();
break;
case 4:
statisticsForFemale();
break;
case 5:
schoolInfo();
break;
case 6:
itemInfo();
break;
case 7:
flag=0;
break;
}
}
}
void main(){
Count c;
cinput();
cmenu();
}
希望能够帮助到你!
胜一场得2分,输一场得1分,未出场比赛或未完成比赛的 场次为0分
名次计算分两步:
,根据所获得的场次分数多少决定。
2-①,如果有两个或更多的队得分相同,他们有关的名次应按他们相应之间比赛的成绩决定,首先计算他们之间获得的场次分数多少决。
2-②如果还相同,再根据他们相应之间比赛获胜局数和负的局数比率,算出名次。
#include <malloch>
#include <stdioh>
#include <stdlibh>
#include <stringh>
#define NULL 0
#define MaxSize 30
typedef struct athletestruct /运动员/
{
char name[20];
int score; /分数/
int range; //
int item; /项目/
}ATH;
typedef struct schoolstruct /学校/
{
int count; /编号/
int serial; //
int menscore; /男选手分数/
int womenscore; /女选手分数/
int totalscore; /总分/
ATH athlete[MaxSize]; //
struct schoolstruct next;
}SCH;
int nsc,msp,wsp;
int ntsp;
int i,j;
int overgame;
int serial,range;
int n;
SCH head,pfirst,psecond;
int phead=NULL,pafirst=NULL,pasecond=NULL;
input ()
{
char answer;
head = (SCH )malloc(sizeof(SCH)); //
head->next = NULL;
pfirst = head;
answer = 'y';
while ( answer == 'y' )
{
Is_Game_DoMain:
printf("\nGET Top 5 when odd\nGET Top 3 when even");
printf("\n输入运动项目序号 (x<=%d):",ntsp);
scanf("%d",pafirst);
overgame = pafirst;
if ( pafirst != phead )
{
for ( pasecond = phead ; pasecond < pafirst ; pasecond ++ )
{
if ( overgame == pasecond )
{
printf("\n这个项目已经存在请选择其他的数字\n");
goto Is_Game_DoMain;
}
}
}
pafirst = pafirst + 1;
if ( overgame > ntsp )
{
printf("\n项目不存在");
printf("\n请重新输入");
goto Is_Game_DoMain;
}
switch ( overgame%2 )
{
case 0: n = 3;break;
case 1: n = 5;break;
}
for ( i = 1 ; i <= n ; i++ )
{
Is_Serial_DoMain:
printf("\n输入序号 of the NO%d (0<x<=%d): ",i,nsc);
scanf("%d",&serial);
if ( serial > nsc )
{
printf("\n超过学校数目,请重新输入");
goto Is_Serial_DoMain;
}
if ( head->next == NULL )
{
create();
}
psecond = head->next ;
while ( psecond != NULL )
{
if ( psecond->serial == serial )
{
pfirst = psecond;
pfirst->count = pfirst->count + 1;
goto Store_Data;
}
else
{
psecond = psecond->next;
}
}
create();
Store_Data:
pfirst->athlete[pfirst->count]item = overgame;
pfirst->athlete[pfirst->count]range = i;
pfirst->serial = serial; ("Input name:) : ");
scanf("%s",pfirst->athlete[pfirst->count]name);
}
printf("\n继续输入运动项目(y&n)?");
answer = getch();
printf("\n");
}
}
calculate() //
{
pfirst = head->next;
while ( pfirst->next != NULL )
{
for (i=1;i<=pfirst->count;i++)
{
if ( pfirst->athlete[i]item % 2 == 0 )
{
switch (pfirst->athlete[i]range)
{
case 1:pfirst->athlete[i]score = 5;break;
case 2:pfirst->athlete[i]score = 3;break;
case 3:pfirst->athlete[i]score = 2;break;
}
}
else
{
switch (pfirst->athlete[i]range)
{
case 1:pfirst->athlete[i]score = 7;break;
case 2:pfirst->athlete[i]score = 5;break;
case 3:pfirst->athlete[i]score = 3;break;
case 4:pfirst->athlete[i]score = 2;break;
case 5:pfirst->athlete[i]score = 1;break;
}
}
if ( pfirst->athlete[i]item <=msp )
{
pfirst->menscore = pfirst->menscore + pfirst->athlete[i]score;
}
else
{
pfirst->womenscore = pfirst->womenscore + pfirst->athlete[i]score;
}
}
pfirst->totalscore = pfirst->menscore + pfirst->womenscore;
pfirst = pfirst->next;
}
}
output()
{
pfirst = head->next;
psecond = head->next;
while ( pfirst->next != NULL )
{
clrscr();
printf("\n第%d号学校的结果成绩:",pfirst->serial);
printf("\n\n项目的数目\t学校的名字\t分数");
for (i=1;i<=ntsp;i++)
{
for (j=1;j<=pfirst->count;j++)
{
if ( pfirst->athlete[j]item == i )
{
printf("\n %d\t\t\t\t\t\t%s\n %d",i,pfirst->athlete[j]name,pfirst->athlete[j]score);break;
}
}
}
printf("\n\n\n\t\t\t\t\t\t按任意建 进入下一页");
getch();
pfirst = pfirst->next;
}
clrscr();
printf("\n运动会结果:\n\n学校编号\t男运动员成绩\t女运动员成绩\t总分");
pfirst = head->next;
while ( pfirst->next != NULL )
{
printf("\n %d\t\t %d\t\t %d\t\t %d",pfirst->serial,pfirst->menscore,pfirst->womenscore,pfirst->totalscore);
pfirst = pfirst->next;
}
printf("\n\n\n\t\t\t\t\t\t\t按任意建结束");
getch();
}
create()
{
pfirst = (struct schoolstruct )malloc(sizeof(struct schoolstruct));
pfirst->next = head->next ;
head->next = pfirst ;
pfirst->count = 1;
pfirst->menscore = 0;
pfirst->womenscore = 0;
pfirst->totalscore = 0;
}
void Save()
{FILE fp;
if((fp = fopen("schooldat","wb"))==NULL)
{printf("can't open schooldat\n");
fclose(fp);
return;
}
fwrite(pfirst,sizeof(SCH),10,fp);
fclose(fp);
printf("文件已经成功保存\n");
}
main()
{
system("cls");
printf("\n\t\t\t 运动会分数统计\n");
printf("输入学校数目 (x>= 5):");
scanf("%d",&nsc);
printf("输入男选手的项目(x<=20):");
scanf("%d",&msp);
printf("输入女选手项目(<=20):");
scanf("%d",&wsp);
ntsp = msp + wsp;
phead = calloc(ntsp,sizeof(int));
pafirst = phead;
pasecond = phead;
input();
calculate();
output();
Save();
}
import javautil;
public class qiuzhi {
/
@param args
/
public static void main(String[] args) {
int pingjun=0,sum=0;
int fenshu[]= new int[100];
int temp=0;
Scanner input = new Scanner(Systemin);
int i=0;
for(;i<=100;i++){
Systemoutprintln("输入第"+(i+1)+"名学生分数(输入0跳出)");
fenshu[i]=inputnextInt();
if(fenshu[i]==0){
break;
}
}
for(int a = 0;a<i;a++){
for(int b = (a+1);b<=i;b++){
if(fenshu[a]<fenshu[b]){
temp = fenshu[a];
fenshu[a] = fenshu[b];
fenshu[b] = temp;
}
}
}
for(int a=0;a<i;a++){
Systemoutprintln(fenshu[a]);
sum=fenshu[a]+sum;
}
pingjun = sum/i;
Systemoutprintln("最高分"+fenshu[0]);
Systemoutprintln("最低分"+fenshu[i-1]);
Systemoutprintln("总分"+sum);
Systemoutprintln("平均分"+pingjun);
}
}
-----------------------------------
我不是很清楚你说的分散(distribution)和解中位数(median)
数是怎么回事。我把结果排列出来。具体你看一下。
或者解释一下分散还有中位数的计算方式我再给你具体试试写下
int a[20];
int i=0;
int min,max;//最大值和最小值坐标
int all = 0;
while(i < 20)
{
scanf("%d",a[i++]);
}
min = 0;
max = 0;
for(i=0;i<20;i++)
{
if(a[i] <min)
{
min = i;
}
if(a[i] > max)
{
max = i;
}
}
//最大值 和最小值 清0
a[min] = 0;
a[max] = 0;
for(i=0;i<20;i++)
{
all += a[i];
}
printf("平均值 =%f",all/20);
以上就是关于C++比赛分数编程 大家来看看全部的内容,包括:C++比赛分数编程 大家来看看、C++编写的随机分数计算、c语言程序设计一个评委打分系统 下面是要求等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)