【蓝桥杯】 C++ 成绩分析

题目描述

小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。
请计算这次考试的最高分、最低分和平均分。

输入描述

输入的第一行包含一个整数 n\ (1 ≤ n ≤ 10^4)n (1≤n≤10 4 ),表示考试人数。
接下来 n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。

输出描述

输出三行。
第一行包含一个整数,表示最高分。
第二行包含一个整数,表示最低分。
第三行包含一个实数,四舍五入保留正好两位小数,表示平均分。

实现代码

#include <iostream>
#include<math.h>
#include<iomanip>
using namespace std;
int fmax(int *a,int n)
{
  int max=0;
  for(int i=0;i<n;i++)
  {
    if(a[i]>max)
    {
      max=a[i];
    }
  }
  return max;
}

int fmin(int *a,int n)
{
  int min=101;
  for(int i=0;i<n;i++)
  {
    if(a[i]<min)
    {
      min=a[i];
    }
  }
  return min;
}

double faver(int *a,int n)
{
  double average;
  int sum=0;
  for(int i=0;i<n;i++)
  {
    sum=sum+a[i];
  }
  average=round(1.0*sum*100/n)/100;
  return average;
}

int main()
{
  // 请在此输入您的代码
  int n;
  cin>>n;
  int grade[n];
  for(int i=0;i<n;i++)
  {
    cin>>grade[i];
  }
  cout<<fmax(grade,n)<<endl;
  cout<<fmin(grade,n)<<endl;
  cout<<fixed<<setprecision(2)<<faver(grade,n)<<endl;
  return 0;
}

注意点

这个就很奇怪……
在实现 average=round(1.0*sum*100/n)/100; 一句时,开始写的是 average=round(sum*100/n*1.0)/100; ,结果只通过了三个用例。后来改成上一句,就全部正确通过。
以及遇到小数的时候都设置成 double 。一定注意整数除整数的情况。

知识点

  • 四舍五入函数 round() 的正常使用方法,以及输出特定位小数的使用方法。
  • cout 输出特定位数的小数:cout<<fixed<<setprecision(2)<<faver(grade,n)<<endl; ,同时需要加头文件 #include <iomanip>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值