期末总评

分析问题

我们需要判断学生的分数是否符合学校的“正态分布”要求。具体要求是优秀(≥90分)的学生不超过30%,挂科(<60分)的学生不超过10%。步骤如下:

  1. 输入学生人数和他们的分数。
  2. 统计优秀和挂科的学生人数。
  3. 检查优秀人数是否超过30%,挂科人数是否超过10%。
  4. 输出结果。

建立模型

  1. 输入处理:读取学生人数和对应的分数。
  2. 统计人数:遍历所有分数,统计优秀和挂科的学生数量。
  3. 条件判断:判断优秀人数是否超过总人数的30%,挂科人数是否超过总人数的10%。若任意条件不满足,则输出“NO”;否则输出“YES”。

编写C++代码

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    int score,excellent = 0, fail = 0;//excellent 优秀   fail 不及格
    for(int i=1;i<=n;i++){
        cin>>score;
        if(excellent>=90){
            you++;
        }
        if(score<60){
            fail++;
        }
    }
    if(excellent*1.0/n<=0.3 && fail*1.0/n<=0.1) cout<<"YES";
    else cout<<"NO";
    return 0;
}

代码解释

  1. 输入处理:首先读取学生人数 n,然后逐个读取每个学生的分数。
  2. 统计优秀和挂科人数:遍历每个分数,若分数≥90,优秀计数增加;若分数<60,挂科计数增加。
  3. 条件判断:计算允许的优秀和挂科人数的上限,并比较实际人数是否超过这些上限。若任一条件不满足,输出“NO”,否则输出“YES”。

此代码确保严格遵循题目要求,正确处理所有可能的输入情况,包括浮点数比较时的精度问题。

保存 编译 运行