首页 > 其他分享 >假设一个班有n(n<=50)个学生,每人考m(m<=5)门课,求每个学生的平均成绩和每门课的平均成绩,并输出各科成绩均大于等于平均成绩的学生数量。

假设一个班有n(n<=50)个学生,每人考m(m<=5)门课,求每个学生的平均成绩和每门课的平均成绩,并输出各科成绩均大于等于平均成绩的学生数量。

时间:2024-08-07 13:25:52浏览次数:15  
标签:cout int ca 学生 ++ 循环 sa 成绩 平均


/*
输入:n和m,分别表示学生数和课程数。然后是n行数据,每行包括m个数据
输出;对于每个测试输出三行数据;
第一行包括n个数据表示n个学生的平均成绩;
第二行包括m个数据表示m门课的平均成绩;
第三行是一个整数,表示该班各科成绩均大于等于平均成绩的学生数
3 2
1 2
3 4
6 8

1.50 3.50 7.00
3.33 4.67
1


*/include <iostream>
using namespace std;
double a[51][6];
double sa[51];
double ca[6];

这里涉及到小数点所以我们用浮点型,至于求的平均值为什么用数组,因为我们需要每一行,每一列的平均数据,这是单个变量不能呈现的
int main() {
    int n, m;
    while (cin >> n >> m) {
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < m; ++j) {
                cin >> a[i][j];
            }
        }

到这里第一个for循环完成,我们给每一个数据都输入了值

for (int i = 0; i < n; ++i) {
    sa[i] = 0;
    for (int j = 0; j < m; ++j) {
        sa[i] += a[i][j];
    }
    sa[i] /= m;
}

接下来我们求每一行的平均值,第二个for循环开始,这个循环每开始一次我们都要得到每一行的平均值所以 sa[i] /= m;这个表达式放在最后,sa[i] = 0;并且这个表达式一定要放到循环里面的开头,确保每次循环都初始化一下,至此每一行的平均数都被储存在数组sa[i]里面了,接下来就可以使用for 循环将他打印出来了!在此之前我们要先把列的平均值求出来

for (int i = 0; i < m; ++i) {
    ca[i] = 0;
    for (int j = 0; j < n; ++j) {
        ca[i] += a[j][i];
    }
    ca[i] /= n;
}

这时候就有意思了我们先把矩阵中的二维给固定住,并且规定范围通过循环一维的值来得到每一列的平均值。总结一下,求平均值的过程是这样的,我们首先定义一个一维的浮点型数组,将每一行的数存储到数组中得到sa[i],这个i的范围是我们自己规定的n,然后我们将这数组中的每一个数都除n,这样每个平均数就都存到数组里了,我们就可以访问了比如像这样

cout<<sa[2]<<endl;或者用for循环将他们全打印出来

接下来我们需要找出一个整数,这个整数是学生数也就是行数,我们需要将每一行的每一个元素与其相同列数的ca平均值进行判定,这时候我们依然利用for循环进行枚举就可以,并且注意判定时放在嵌套for循环里就可以了,这个有一点绕

int cnt = 0;
for (int i = 0; i < n; ++i) {                 
    int sum = 0;
    for (int j = 0; j < m; ++j) {
        sum += (a[i][j] >= ca[j]);        (判断符号得到的数值是1或0所以这玩意是可以直接累加的啊)
    }                                                  (这里注意嵌套的使用就可以将行和列的数值区分开,因为我                                                         们可以先在大的for循环里固定一个维度)
    if (sum == m) {
        ++cnt;
    }
}

这里面cnt 代表学生的数量因此不能放循环里面,而sum则不同,sum是用来判定每一列成绩是否达标的,只有sum值累加到跟列数相同时,cnt的数值才会累加

最后就是输出了

    for (int i = 0; i < n; ++i) {
        if (i) {
            cout << ' ';                     这里的意思是只要i不为0就输出一个空行
        }
        printf("%.2lf", sa[i]);            在保留两位小数是用这个printf
    }
    cout << endl;

    for (int i = 0; i < m; ++i) {
        if (i) {
            cout << ' ';
        }
        printf("%.2lf", ca[i]);
    }
    cout << endl;
    cout << cnt << endl;
}

标签:cout,int,ca,学生,++,循环,sa,成绩,平均
From: https://blog.csdn.net/2401_86637044/article/details/140981489

相关文章

  • Java计算机毕业设计山西工程技术学院学生请假管理系统的设计与实现(开题+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着高校规模的不断扩大和学生管理需求的日益复杂化,传统的人工请假管理方式已难以满足高效、准确、便捷的管理要求。山西工程技术学院作为一所培养工......
  • 计算机毕业设计必看必学! ! 79197 基于ssm+mysql的学生心理健康在线咨询平台,原创定制
    摘要:在社会快速发展的影响下,教育业继续发展,大大增加了学生心理健康在线咨询平台的数量、多样性、质量等等的要求,使学生心理健康在线咨询平台的管理和运营比过去十年更加困难。依照这一现实为基础,设计一个快捷而又方便的学生心理健康在线咨询平台是一项十分重要并且有价值的事......
  • 一个小学生蒟蒻对简单排列组合的认知和了解
    一个小学生蒟蒻对简单排列组合的认知和了解呃呃呃呃呃....可能写的有点不咋好...呃呃呃神马是排列组合神马是排列组合呢?我感觉我也不太清楚排列组合是组合数学中的基础。排列就是指从给定个数的元素中取出指定个数的元素进行排序;组合则是指从给定个数的元素中仅仅取出指定个......
  • 一个蒟蒻小学生尝试学习高级排列组合
    一个蒟蒻小学生尝试学习高级排列组合呃呃呃呃呃呃,我不咋会写,如有不对的地方欢迎纠正紧接上文我们已经了解了基础的排列组合,我们可以接着往下学习排列组合的变种了.1.排列组合的变种1-1.多重集的排列数+多重组合数大家一定要区分多重组合数与多重集的组合数!两者是完......
  • 学生信息管理系统
    学生信息管理系统摘要本次毕设利用开发工具Idea,使用数据库MySQL进行存储,后端使用Java语言进行功能开发技术,Java作为当前较为流行的移动端软件开发语言,提供了众多基于Java语言开发的组件,最终实现本系统的所有功能。开发一款学生信息管理系统。在21世纪,互联网的快速发展,计算......
  • Springboot计算机毕业设计第二学位学生管理系统(数据库、调试部署、开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表学生,教师,班级信息,课程类别,课程信息,课程选择,在线咨询,成绩分类,课程成绩,学生学籍,课程退出,院系,专业,年级开题报告内容一、研究背景与意义研究背景随着......
  • SSM高校学生在线选课系统q399g 系统界面在最后面
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容:教师,学生,课程信息,班级信息,选课信息,打分信息,学分信息,必修课程,公告信息开题报告内容课题名称:SSM高校学生在线选课系统一、研究背景与意义随着......
  • SSM高校学生学业预警系统5253u 本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容:课程,班级,教师,学生,课程信息,选课信息,考勤信息,成绩信息,学籍信息,预警信息开题报告内容一、选题背景随着高等教育规模的不断扩大和教育质量的提升......
  • Python:学生成绩管理系统(大学编程期末实验)
    引言在这个信息时代,教育管理的自动化已成为提高效率的关键。本文将介绍如何使用Python开发一个学生成绩管理系统,旨在简化成绩记录、查询和分析的过程。创作灵感来源本项目灵感来源于我在教育机构的工作经历,以及对提高教育管理效率的持续追求。通过复盘过往项目,我意识到一个......
  • 2024河南省大学生电子设计竞赛A题:AC-AC变换电路并联运行(代码工程+原理图+PCB+设计报告
    1.电赛题目2.题目需求分析在题目中需要注意以下几个关键点:1.要求电路的拓扑结构为AC-AC直接变换电路,不得使用AC-DC-AC,-------- 应该是主要针对的背靠背电路。 AC-AC电路拓扑较少见,详细可以参照《AC-AC变换技术》-----陈道练。2.系统的供电也从AC36V输入获取......