资深守护
4470 成绩统计(score)经验值:400
不许抄袭,一旦发现,直接清空经验!
题目描述 Description
合肥市某学校某年级共有 m 个班,每个班级都有 n 位学生。某次考试结束后,知道了每位学生的总分(整数),现在还要再统计一些数据:
1)每个班级的最高得分
2)每个班级的平均得分(四舍五入,保留一位小数)
3)所有学生总分低于一个分值 p 的人数和高于一个分值 q 的人数。
输入描述 Input Description
输入数据共 m+1 行。第一行是 4 个由空格分隔的正整数 m、n、p、q,接下来 m 行,每行共有 n 个由空格分隔的正整数,表示每一位学生的总分
输出描述 Output Description
共 3 行,第一行 m 个由空格分隔的正整数,对应每个班级的最高分;第二行 m 个由空格分隔的数值,对应每个班级的平均分;第三行 2 个由空格分隔的正整数,分别表示低于 p 的人数和高于 q 的人数。
样例输入 Sample Input
3 4 150 290 260 300 140 190 290 280 260 270 190 280 300 190
样例输出 Sample Output
300 290 300 222.5 275.0 240.0 1 2
数据范围及提示 Data Size & Hint
数据范围:
1≤m,n≤100 0≤每个学生总分≤300
#include <bits/stdc++.h>
using namespace std;
int n, m, d[105][105], p, q, a[105], c[105], sump, sumq;
double b[105], sumb;
int main()
{
cin >> m >> n >> p >> q;
for(int i=0; i < m; i++){
sumb = 0;
for(int j=0; j<n; j++){
cin >>d[i][j];
a[i]=max(a[i], d[i][j]);
sumb += d[i][j];
if(d[i][j] < p) sump++;
if(d[i][j] > q) sumq++;
}
b[i] = sumb / n;
}
for(int i=0; i < m - 1; i++){
cout << a[i] << " ";
}
cout << a[m-1] << endl;
for(int i=0; i < m - 1; i++){
cout << fixed << setprecision(1) << b[i] * 1.0 << " ";
}
cout << fixed << setprecision(1) << b[m-1] * 1.0 << endl;
cout << sump << " " << sumq;
return 0;
}
这题哪里错了? 只有80分
初级守护
int zg[105];
double pjf[105];
int maxn,sum,cnt1,cnt2;
int main(){
int m,n,p,q,a;cin>>m>>n>>p>>q;
for(int i=1;i<=m;i++){//班级
sum=0,maxn=0;
for(int j=1;j<=n;j++){
cin>>a;
maxn=max(maxn,a);sum+=a;
if(a<p){
cnt1++;
}
if(a>q){cnt2++;}
}
zg[i]=maxn;
double pj=sum*1.0/n;
pjf[i]=int(pj*10+0.5)/10.0;//四舍五入保留一位小数
}
for(int i=1;i<=m;i++){
cout<<zg[i]<<" ";
}
cout<<endl;
for(int i=1;i<=m;i++){
printf("%.1f ",pjf[i]);
}
cout<<endl;
cout<<cnt1<<" "<<cnt2;