欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在程序大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。

程序员文章站 2022-07-16 19:47:23
...

这个是我们程序设计的一个习题,顺便记录一下。我是刚学习C++的小白,如果下面有什么不对或者不合理的地方还请大家在评论区指出。

  • 首先我用rand()函数模拟一位评委给出一个分数
  • 然后用for循环十次表示十个评委进行打分,存储到一个数组,然后求其总分
  • 之后我遍历数组依次比较出最大值和最小值
  • 用总分减去最大值和最小值除以8得到最后的平均分数
  • 我们题目要求把结果存到文件中,因为我对c++存储文件不是特别了解,所以下面用了很多笨办法

下面附上我写的代码:

#include <iostream>
#include <stdlib.h>
#include<iomanip>
#include<fstream>
using namespace std;

int main()
{
	int number;									//定义数字,作为参赛人数
	cout << "请输入参赛选手人数" << endl;		
	cin >> number;								//输入参赛人数
	ofstream ofile;								//定义输出文件
	ofile.open("d:\\Competition_score.txt");				//作为输出文件打开
	ofile << "序号	成绩一	成绩二	成绩三	成绩四	成绩五	成绩六	成绩七	成绩八	成绩九	成绩十	总分	最终成绩" << endl;   //标题写入文件
	for (int n = 0; n < number; n++)			//用for循环来模拟多位参赛选手
	{
        int competitor_grade[10];               //定义一个数组来储存十个成绩
        int sum_judge_ten = 0;                  //定义一个sum_judge_ten来储存十位评委给的总分
        float sum_judge_eight = 0;              //定义一个sum_judge_eight来储存去掉最高分和最低分的总成绩
        ofile << n + 1<<"	";                  //表示序号

		for (int i = 0; i < 10; i++)            //在for循环中用rand()来模拟十位评委给的随机分数
		{
			competitor_grade[i] = rand() % 100+1;     //用数组储存分数,rand()表示随机数,%100表示分数在0~100之间
			ofile <<"  "<< competitor_grade[i]<<"	";  //将每一个分数写入文件
			sum_judge_ten += competitor_grade[i];
		}
		int max = competitor_grade[0], min = competitor_grade[0];
		for (int i = 0; i < 10; i++)                //用for循环比较出最大值和最小值
		{
			if (max < competitor_grade[i])
				max = competitor_grade[i];
			if (min > competitor_grade[i])
				min = competitor_grade[i];
		}
		sum_judge_eight = (sum_judge_ten - min - max) / 8.0;
	
		ofile << sum_judge_ten << "	 "<<sum_judge_eight << endl;
	}
	system("pause");
}

后面附上一张结果:
在程序大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。