在程序大奖赛中,有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");
}
后面附上一张结果:
上一篇: C#中的数组
下一篇: 7 数据预处理-数据标准化