问题标题: 酷町堂:4470 成绩统计(score)

0
0
已解决
邹正洋
邹正洋
中级守护
中级守护

题目链接: 酷町堂:4470

4470   成绩统计(score)

经验值:400 时间限制:1000毫秒 内存限制:128MB

合肥市第36届信息学竞赛(2019年)

不许抄袭,一旦发现,直接清空经验!

题目描述 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 main()

{

int m,n,p,q,i,j,a[101][101],ans1[101],ans3=0,ans4=0;

double ans2[101];

cin>>m>>n>>p>>q;

for(i=1;i<=m;i++){

for(j=1;j<=n;j++){

cin>>a[i][j];

ans1[i]=max(ans1[i],a[i][j]);

ans2[i]+=a[i][j];

if(a[i][j]<p) ans3++;

if(a[i][j]>q) ans4++;

}

}

for(i=1;i<=m;i++) cout<<ans1[i]<<' ';

cout<<endl;

for(i=1;i<=m;i++) cout<<setprecision(1)<<fixed<<ans2[i]/n<<' ';

cout<<endl<<ans3<<' '<<ans4;

return 0;

}

哪错了??

只有80分??


0
已采纳
薛乘志
薛乘志
初级启示者
初级启示者

printf不是四舍五入的

用:

printf("%.1f ",int(x+0.5)/10.0);

(x为需要四舍五入的数字,浮点型)

0
丁应翔
丁应翔
新手守护
新手守护

双引号里数字根据保留位数改变。

printf("%.2f",ans1);(保留两位小数)

printf("%.1f",ans1);(保留一位小数)

printf("%.0f",ans1);(保留零位小数,用来四舍五入)

0
邹正洋
邹正洋
中级守护
中级守护

@丁应翔 按你的说法,改了还是80分

无

我的代码:

无

0
邹正洋
邹正洋
中级守护
中级守护

快!快快!快快快!快快快快!

0
0
邹正洋
邹正洋
中级守护
中级守护

自己做AC了

随便发一个东西,谁先发采纳谁!!!

0
丁应翔
丁应翔
新手守护
新手守护

你的保留一位小数是四舍六入,建议用printf.

0
邹正洋
邹正洋
中级守护
中级守护

抱歉,我printf没学

双引号里是啥??@丁应翔

0
邹正洋
邹正洋
中级守护
中级守护

@丁应翔 回答一下,采纳你

 

0
李显晨
李显晨
中级启示者
中级启示者

人家不是回答过了吗,好智慧

我要回答