1
已解决
董宇昊
初级启示者
初级启示者
4470 成绩统计(score)经验值:0
题目描述 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
董宇昊在2020-06-17 20:28:50追加了内容
没有分的代码
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
int main(){
double a,b,c,d,x[1001],sum=-1,ans=0,cnt=0,dh=0,dy=0;
cin>>a>>b>>c>>d;
for(int i=1;i<=a;i++){
for(int j=1;j<=b;j++){
cin>>x[j];
}
}
for(int i=1;i<=a;i++){
sum=0;
for(int j=1;j<=b;j++){
if(x[j]>sum) sum=x[j];
}
cout<<sum<<' ';
}
cout<<endl;
for(int i=1;i<=a;i++){
cnt=0;
ans=0;
for(int j=1;j<=b;j++){
cnt+=x[j];
ans++;
}
printf("%.1f ",int((cnt/ans)*10+0.5)/10.0);
}
cout<<endl;
for(int i=1;i<=a;i++){
for(int j=1;j<=b;j++){
if(x[j]>c) dh++;
else if(x[j]<d) dy++;
}
}
cout<<dh<<' '<<dy;
return 0;
}
求大佬找错
采纳是加到100;