Idea : utilicé una matriz bidimensional para esta pregunta. Ingrese las puntuaciones de cada estudiante en la matriz bidimensional y luego agregue las filas y columnas entre las matrices para encontrar el promedio para la comparación. La idea es muy simple, pero Lo que escribí no fue muy conciso y el proceso de redacción del formato fue incorrecto muchas veces.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner a=new Scanner(System.in);
while(a.hasNext())
{
int n=a.nextInt();
int m=a.nextInt();
if(m<=5&&n<=50) //限制范围
{
int[][] arr=new int[n][m];
for(int i=0;i<n;i++) //向创建的数组中输入数据
{
for(int j=0;j<m;j++)
{
arr[i][j]=a.nextInt();
}
}
double sum=0; //创建每位同学的成绩和与总平均值
double ave=0;
for(int y=0;y<n;y++)
{
sum=0;
for(int p=0;p<m;p++)
{
sum+=arr[y][p];
}
if(y+1!=n) //该行判断,没有遍历到最后一门学科时,输出并加上“ ”的形式间隔
{
ave=sum/m;
System.out.printf("%.2f ",ave);
}
else
{
ave=sum/m;
System.out.printf("%.2f",ave);
}
}
System.out.println(); //依据题意,每行数据后接一个空行
double num=0; //创立每个学科的之和;和每个学科的平均数据
int l=0;
double[] b=new double[m];//创建学科平均值数组
for(int u=0;u<m;u++)
{
num=0;
for(l=0;l<n;l++)
{
num+=arr[l][u];
}
b[u]=num/n; //将得到的学科平均值输入到数组
if(u+1!=m) //同上
{
System.out.printf("%.2f ",b[u]);
}
else
System.out.printf("%.2f",b[u]);
}
System.out.println();
int sort=0,g=0; //创建计数器
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(arr[i][j]>=b[j]) //这一点就需要明确了,比较的是每个学生每科成绩与全部学生每科成绩的平均值做对比
sort++; //而不是学科成绩与某学生(全部学生)的学科成绩平均值最对比
if(sort==m)
g++;
}
sort=0; //要记得将sort归零
}
System.out.println(g);
System.out.println();
}
}
}
}
Creo que esta pregunta primero debe analizar el significado de la pregunta, ver el objeto de comparación final y luego escribir el formato requerido de la pregunta El resto es muy simple.
Si hay un error, corríjame.