☰
求平均成绩 矩阵数据处理 【循环处理 二维数组】
2026/10/3 7:11:32 网站建设 项目流程


🚗🚗🚗🚗🚗🚗🚗 数据结构专栏🚗🚗🚗🚗🚗🚗🚗🚗🚗🚗
🛹🛹🛹🛹🛹🛹🛹小知识总结分享🛹🛹🛹🛹🛹🛹🛹🛹🛹🛹
🚀🚀🚀🚀🚀🚀🚀题目历练场🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀🚀
🚢🚢🚢🚢🚢🚢🚢功能包与集合类介绍🚢🚢🚢🚢🚢🚢🚢🚢🚢
🛞🛞🛞🛞🛞🛞🛞java EE🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞🛞
😘😘😘😘😘😘😘Agent大模型😘😘😘😘😘😘😘😘😘😘😘😘

今天和大家一起分享一道基础的算法题目

  • 题目来源 : HDOJ

题目

  • 这个题目本省不复杂 但是对于新手朋友存在很多坑点 我认为对于二维数组和循环逻辑的理解有一个较为深入的考察。
#include<iostream>usingnamespacestd;/* 2 3 10 20 30 56 4 30 30.00 45.00 33.00 12.00 30.00 0 *///复习intmain(){intn,m;intarr[51][6];doublesa[51];doubleca[6];intcount;while(cin>>n>>m){//反复输入//存进数据for(inti=0;i<n;++i){for(intj=0;j<m;++j){cin>>arr[i][j];}}// 每一位同学的平均成绩 n 固定 加和mfor(inti=0;i<n;++i){sa[i]=0;// 初始化每一位同学平均成绩for(intj=0;j<m;++j){sa[i]+=arr[i][j];}sa[i]/=m;//每一位学生的平均成绩计算完成}// 每一个学科的平均成绩 m 固定 加和nfor(inti=0;i<m;++i){ca[i]=0;// 初始化每一学科的平均成绩for(intj=0;j<n;++j){ca[i]+=arr[j][i];// 注意是i 表示列 变化是行的数据}ca[i]/=n;//每一位学生的平均成绩计算完成}//遍历数组 进行判断符合条件的数据count=0;for(inti=0;i<n;++i){intsum=0;for(intj=0;j<m;++j){sum+=(arr[i][j]>=ca[j]);//某位同学的第j门成绩是不是大于等于第i门课程的平均成绩}//此时一个同学的数据已经便利完成;if(sum==m)count++;}// 遍历打印 每一个同学的平均成绩for(inti=0;i<n;++i){//神之一手 处理空格if(i!=0){cout<<' ';}printf("%.2f",sa[i]);}cout<<endl;// 遍历打印 每一个学科的平均成绩for(inti=0;i<m;++i){//神之一手 处理空格if(i!=0){cout<<' ';}printf("%.2f",ca[i]);}cout<<endl;cout<<count<<endl;}return0;}

题目总结

这道 HDOJ 2023 题目虽然基础,但考察了多个关键知识点,值得新手朋友认真复盘:

  • 二维数组的存储与遍历:使用arr[51][6]存储 n 位同学、m 门课程的成绩,需要理解行(同学)与列(课程)的对应关系。

  • 双重循环的嵌套逻辑:计算每位同学的平均成绩时,外层循环是同学、内层循环是课程;计算每门课程的平均成绩时,外层循环是课程、内层循环是同学,行列互换是本题最大的坑点。

  • 条件统计:判断每位同学是否所有科目都达到该科目的平均分,需要逐门比较并累加计数。

    • 这道题虽然代码不长,但完整覆盖了二维数组、循环嵌套、格式化输出等基础能力。建议新手朋友:
  1. 先手写一遍行列遍历的过程,理清下标含义;
  2. 再独立实现一遍,重点检查学科平均分的计算;
  3. 最后对照标准输出验证格式是否正确。

掌握这道题,对后续更复杂的矩阵类题目会很有帮助。

  • 我是Dylan
    • 无限进步

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询