问题及代码:
/* *copyright (c) 2014,烟台大学计算机学院 *all rights reserved. *文 件 名 : 大奖赛记分系统.cpp *作 者 :冷基栋 *完成日期 :2015年3月5号 *版 本 号 :v1.0 * *问题描述 :大奖赛记分系统 *输入描述 :选手人数,评委人数,选手得分 *程序输出 :选手最后得分,排名 */ #include <iostream> #include <iomanip> #include <cstdio> #include <fstream> #include <cstdlib> using namespace std; double s[100][20],r[100][2]; void mark(double s[][20],int m,int n,int max1,int min1); void rank(double r[][2],int m,int n); int main() { char d; do { int max1,min1,n,m; cout<<"请输入评委人数:"; cin>>n; cout<<"请输入选手人数:"; cin>>m; cout<<"请输入打分范围:"<<endl; cout<<"最高分:"; cin>>max1; cout<<"最低分:"; cin>>min1; mark (s,m,n,max1,min1); cout<<"选手排名为:"<<endl; rank (r,m,n ); cout <<"********************SUCCESS********************"<<endl; cout <<"按n退出,其他继续: "; cin >>d; } while(d!='n');//进行判断 return 0; } void mark(double s[][20],int m,int n,int max1,int min1) { int i,j; cout<<"请输入选手的成绩("<<min1<<"--"<<max1<<"):"<<endl; cout<<"-----------------------------------------------"<<endl; ofstream outfile("mark.txt",ios::out); if(!outfile) { cerr<<"open error!"<<endl; exit(1); } for(i=0; i<m; i++) { cout<<"第"<<i+1<<"位选手得分:"; double sum=0,max=-1,min=101,average=0,b; for(j=0; j<n; j++) { cin>>s[i][j]; if(s[i][j]>max1||s[i][j]<min1) { cout<<"请重新输入分数"<<endl; i=i-1; continue; } b=s[i][j]; sum+=s[i][j]; if(b>=max&&b<=max1) max=b; if(b<=min&&b>=min1) min=b; } cout << "去掉一个最高分:" <<max; cout << " 去掉一个最低分:" <<min<< endl; average=(sum-max-min)/(n-2); cout <<"第"<<i+1<<"位选手的最后得分是:"<<average<<endl;//输出结果 r[i][1]=average; outfile<<average<<endl; cout<<"-----------------------------------------------"<<endl; }outfile.close(); } void rank(double r[][2],int m,int n) { int i,j,k; double t; for(i=0; i<n; i++) { r[i][0]=i; } for(j=0; j<=m-1; j++) for(i=0; i<m-j-1; i++) if (r[i][1]<r[i+1][1]) { t=r[i][1]; r[i][1]=r[i+1][1]; r[i+1][1]=t; k=r[i][0]; r[i][0]=r[i+1][0]; r[i+1][0]=k; } for(i=0; i<m; i++) cout<<"第"<<i+1<<"名:"<<"选手"<<r[i][0]+1<<endl; }
运行结果:
知识点总结:
成绩保存到文档
学习心得:
好好学习 天天向上
感谢党和国家领导人
原文地址:http://blog.csdn.net/ljd939952281/article/details/44080919