【题目】
【思路】本题需要开辟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; }