B.成绩统计II | |||||
| |||||
Description | |||||
早期很多大学在进行考试成绩统计时,如果整体成绩较差的话,会采用一种方法重新设定成绩。即对原始成绩开根号后乘10。现在根据学生最终成绩,如果60分及其以上成绩的学生人数小于40%,那么需要重新计算成绩,否则保存原始成绩不变。 | |||||
Input | |||||
有多组测试数据。 每组测试数据占据输入的一行,每组测试数据的格式为: 第一个整型数n代表学生人数(n的值最大为20),后面为n个整型数,分别对应n的学生的成绩(均在0-100之间),各数据之间用空格分隔。 | |||||
Output | |||||
针对每组测试数据输出6行数据。 第一行包含n个整型数,为学生的最终成绩(如果60分及其以上成绩的学生人数小于40%,那么需要重新计算成绩,否则保存原始成绩不变),成绩之间用“:”分隔。 之后的5行为统计信息,格式如下: 0-59:人数; 60-69:人数; 70-79:人数; 80-89:人数; 90-100:人数; | |||||
Sample Input | |||||
10 45 60 70 58 89 30 59 0 78 65 8 53 36 72 46 62 0 24 39 | |||||
Sample Output | |||||
45:60:70:58:89:30:59:0:78:65: 0-59:5; 60-69:2; 70-79:2; 80-89:1; 90-100:0; 72:60:84:67:78:0:48:62: 0-59:2; 60-69:3; 70-79:2; 80-89:1; 90-100:0; |
#include <iostream>
#include<cmath>
using namespace std;
int arr[25];
void fff(int arr[],int x)
{
int a = 0, b = 0, c = 0, d = 0, e = 0;
for (int i = 0; i < x; i++)
{
if (arr[i] < 60 && arr[i] >= 0) a++;
if (arr[i] < 70 && arr[i] >= 60) b++;
if (arr[i] < 80 && arr[i] >= 70) c++;
if (arr[i] < 90 && arr[i] >= 80) d++;
if (arr[i] <= 100 && arr[i] >= 90) e++;
}
cout << "0-59:" << a << ';' << '\n';
cout << "60-69:" << b<< ';' << '\n';
cout << "70-79:" << c << ';' << '\n';
cout << "80-89:" << d << ';' << '\n';
cout << "90-100:" << e << ';' << '\n';
}
int main()
{
int n;
while (cin >> n)
{
int x = n;
int a = 0;
int i = 0;
while (n--)
{
int m;
cin >> m;
if (m >= 60)
{
a++;
}
arr[i++] = m;
}
if (a <= 0.4 * x)
{
for (int i = 0; i < x; i++)
{
arr[i] = sqrt(arr[i]) * 10;
cout << arr[i] << ':';
}
cout << '\n';
fff(arr, x);
}
else
{
for (int i = 0; i < x; i++)
{
cout << arr[i] << ':';
}
cout << '\n';
fff(arr, x);
}
}
return 0;
}