【题目】
【思路】本题需要开辟3个数组,第一个数组score[N][M]用来接收输入的数据,第二个数组stu[N]用来存放N个学生的平均成绩,第三个数组course[M]用来存放每个学生的M门课的平均成绩。每次输入成绩时候依次累加到对应项。
【注意】...之前提交显示格式错误,结果发现需要在输出个数后再多输出一个换行符。
【代码】AC的C++代码如下:
#include <iostream>
using namespace std;
#define N 50
#define M 5
double score[N][M];
double stu[N]; //用来存放n个学生的平均成绩
double course[M]; //用来存放每个学生的m门课成绩
int main()
{
int n,m;
int count;
bool flag;
while (cin >> n >> m)
{
count = 0;
for (int i = 0;i < n;i++)
stu[i] = 0;
for (int j = 0;j < m;j++)
course[j] = 0;
for (int i = 0;i < n;i++)
{
for (int j = 0;j < m;j++)
{
scanf("%lf",&score[i][j]);
stu[i] += score[i][j]; //每个学生的总成绩
course[j] += score[i][j];//每门课程的总成绩
}
}
//输出n个学生的平均成绩
for (int i = 0;i < n;i++)
{
if (i != 0)
printf(" %.2lf",stu[i] / m);
else
printf("%.2lf",stu[i] / m);
}
printf("\n");
//输出m门课的平均成绩
for (int j = 0;j < m;j++)
{
course[j] /= n;
if (j != 0)
printf(" %.2lf",course[j]);
else
printf("%.2lf",course[j]);
}
printf("\n");
for (int i = 0;i < n;i++)
{
flag = true;
for (int j = 0;j < m;j++)
{
if (score[i][j] < course[j])
{
flag = false;
break;
}
}
if (flag)
count++;
}
printf("%d\n\n",count);
}
return 0;
}