Luoyoooo

与其感慨路难行,不如马上出发

[简单模拟]7-8 分数统计 (20分)

学校为了控制作业量,实施“轻负担,高质量”的有效教学,对所有在校学生的作业量情况进行了调查。每个学生填写做作业所需要的时间。最后统计出所有学生做作业时间的平均值。 为了避免个别学生不客观填写的影响,规定学生的填写的数字应该为1至100间的正整数,如果某个学生填写了不在此范围内的整数,统计平均值时应该忽略这个学生。现在要求完成: (1)统计出所有学生做作业时间的平均值; (2)除去做作业时间前10%的学生和后10%的学生后(10%学生数按四舍五入计),统计做作业时间的平均值。 请你写个程序,完成以上任务。(提示:Pascal语言中, Round(x)为四舍五入函数,在C语言中可使用int(x+0.5))

输入格式:

第1行有1个正整数n。表示有n个人。 第2行至第n+1行共n行,每行只有1个整数,表示每个学生填写的做作业时间。

输出格式:

有2行,每行只有1个数(保留2位小数) 第1行只有一个整数,表示所有合法填写学生做作业的平均时间; 第2行只有一个整数,表示除去10%最多时间和10%最少时间的学生后,所有合法填写学生做作业的平均时间;

输入样例:

7
10
60
80
70
90
110
100

输出样例:

68.33
75.00

思路:简单模拟题目意思即可

           注意四舍五入可以用 int(x+0.5)的方法

 

【样例说明】 所有学生做作业的平均时间为:(10+60+80+70+90+100)/6=68.33 10%的学生数为:7*10%=0.7≈1(四舍五入至整数) 除最快和最慢的1个学生外,做作业的平均时间为: (60+80+70+90)/4=75.00

30%的数据,5≤n≤10,且所有学生填写的做作业时间均在1至100之间。 100%的数据,5≤n≤1000。学生填写的数据保证为整数,合法填写的学生数保证大于10%的学生数(四舍五入至整数后)的2倍。

 1 #include<iostream>
 2 #include<string>
 3 #include<vector>
 4 #include<algorithm>
 5 using namespace std;
 6 int main()
 7 {
 8     int n, tmp1, tmp2;
 9     double sum = 0;
10     vector<int>v;
11     cin >> n;
12     tmp1 = n;
13     tmp2 = int(n*0.1 + 0.5);
14     for (int i = 0; i < n; i++)
15     {
16         int tmp;
17         cin >> tmp;
18         if (tmp >= 1 && tmp <= 100)
19         {
20             sum += tmp;
21             v.push_back(tmp);
22         }
23         else
24             tmp1--;
25     }
26     printf("%.2f\n", sum/tmp1);
27     sort(v.begin(), v.end());
28     for (int i = 0; i < tmp2; i++)
29     {
30         sum -= v[i];
31         tmp1--;
32     }
33     for (int i =v.size()-tmp2; i <v.size(); i++)
34     {
35         sum -= v[i];
36         tmp1--;
37     }
38     printf("%.2f", sum/tmp1);
39 }

 

posted @ 2020-02-04 21:47  Luoyoooo  阅读(635)  评论(0编辑  收藏  举报