蓝桥杯省赛真题详解

  • 时间:
  • 浏览:
  • 来源:互联网

蓝桥杯省赛真题详解

    • 代码(C++)
    • 注意事项

题目描述

问题描述
小蓝给学生们组织了一场考试,卷面总分为100分,每个学生的得分都是一个0到100的整数。

请计算这次考试的最高分、最低分和平均分。

输入格式
输入的第一行包含一个整数n,表示考试人数。

接下来n行,每行包含一个0至100的整数,表示一个学生的得分。

输出格式
输出三行。

第一行包含一个整数,表示最高分。

第二行包含一个整数,表示最低分。

第三行包含一个实数,四舍五入保留正好两位小数,表示平均分。

样例输入

7
80
92
56
74
88
99
10

样例输出

99
10
71.29

评测用例规模与约定
对于50%的评测用例,1<=n<=100。

对于所有评测用例,1<=n<=10000。

代码(C++)

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
	int n;
	cin >> n;
	int *p = new int[n];
	double average = 0;
	int max = 0, min = 100;
	for (int i = 0; i < n; i++)
	{
		cin >> p[i];
		average = average + p[i];
		if (p[i] > max)
		{
			max=p[i];
		}
		if (p[i] < min)
		{
			min=p[i];
		}
	}
	cout << max << endl;
	cout << min << endl;
	cout<<setiosflags(ios::fixed)<<setprecision(2)<<average/n;
	delete[]p;
}

注意事项

1.C++不像java,可以自主回收数据,并且用new动态分配内存后最好释放内存空间,所以在代码结尾部分加上了delete[]p(当然在比赛中可以不用考虑);
2.平均分的输出要求四舍五入保留两位小数,很多人首先想到用printf("%.2f,average)),但是这种取舍方法原则是“四舍五入六成双“(具体原因的话建议百度一下),导致我前两次在练习系统提交的评测都是错的。所以我后来使用了C++中保留小数的方法:cout<<setiosflags(ios::fixed)<<setprecision(2)<<average/n;然后再提交,评测结果显示正确了(就是这一个数据输出的问题导致整个题出错,所以大家在答题时一定要注意题目要求)。

本文链接http://www.dzjqx.cn/news/show-617157.html