赞
踩
在某个群里,有一个卷王,他很关心群友的学习成绩。
他扬言如果群友不上缴成绩单,他就在暑假每天在群里催促群友学习。
于是他成功地拿来了群友的成绩单,打算研究群友到底学得怎么样。
但他卷累了,所以他要求你算出来群友的平均分,不然就每天私聊催促你学习。
成绩单上写了群友所学的所有 n 门课程,每门课程的成绩分别是 gi。
如果一门课的成绩 gi 大于等于 60 分,那么群友通过了这门课,这门课会计入总成绩。
否则他就挂科了,相当于没有学过这门课,所以这门课也不会计入平均成绩的计算。
特别的,如果群友没有不挂科的课程,那么他的平均分是 0。
第一行一个整数 n,表示课程数目。
第二行个非负整数 n,gi表示第i门课程的成绩
一行一个浮点数,表示群友的平均分,四舍五入到三位小数。
- 4
- 55 66 77 88
77.000
- 4
- 55 44 33 22
0.000
第一个样例中,群友一共学了4门课程,其中有一门55分的课程挂科了,不计入成绩。
剩下门课程3,平均分是(66+77+88)/3=77,保留三位小数输出为77.000。
第二个样例中群友所有课都挂了,所以平均分是0,但也要按照三位小数输出。
对于20%的数据,n=0。
对于40%前的数据,n<=1。
对于另外20%的数据,gi>=60。
对于另外20%的数据,保证答案是整数。
对于100%的数据,0<=n<=10^3,0<=gi<=100。
我们简单说一下思路,首先定义两个计数器,都初始化为0,一个代表挂科的数目,另一个存的是所有没有挂科科目的总分(最后用来求平均数的)。
进行一次遍历,如果gi<60,那么第一个计数器加上1,否则的话第二个计数器加上gi,遍历玩过后,我们进行判断,如果第一个计数器和学科总数相等,那么说明他所有学科都挂科了,平均数为0,直接输出0.000.
之后我们利用printf("%.3lf",……).来输出平均数,省略的部分就是我们要输出的平均数,我们知道,这个学生有1号计数器个学科挂科,那么没有挂科的数量就为学科总数-1号计数器,之后利用2号计数器除以没有挂科的学科的总数,输出过后,就是平均数了!
- #include<bits/stdc++.h> //万能头文件
- using namespace std; //批准使用std类
- int main(){ //main主函数
- int n,sum=0,vum=0,x=0; //定义
- cin>>n; //输入
- x=n; //赋值
- float a; //d定义
- while(n--){
- int g; //定义gi
- cin>>g; //输入gi
- if(g<60) //是不是挂科
- sum++; //1号计数器+1
- else //不是挂科
- vum+=g; //分数统计
- }
- if(sum==x) //如果全部都挂科了
- cout<<"0.000"<<endl; //输出三位小数0.000
- else //如果有没有挂科的科目
- printf("%.3f",(float)vum/(float)(x-sum)); //求出平均分并输出
- return 0; //结束
- }
这道题很简单,很简单!简单到我认为他都应该编入白银组第一,二题的,仅仅只需要学生学会计数就行了!为什么会在钻石组里面呢?还是钻石组的第二题?
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。