杭電acm2023求平均成績
阿新 • • 發佈:2019-02-14
求平均成績
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 63066 Accepted Submission(s): 15151
Problem Description 假設一個班有n(n<=50)個學生,每人考m(m<=5)門課,求每個學生的平均成績和每門課的平均成績,並輸出各科成績均大於等於平均成績的學生數量。
Input 輸入資料有多個測試例項,每個測試例項的第一行包括兩個整數n和m,分別表示學生數和課程數。然後是n行資料,每行包括m個整數(即:考試分數)。
Output 對於每個測試例項,輸出3行資料,第一行包含n個數據,表示n個學生的平均成績,結果保留兩位小數;第二行包含m個數據,表示m門課的平均成績,結果保留兩位小數;第三行是一個整數,表示該班級中各科成績均大於等於平均成績的學生數量。
每個測試例項後面跟一個空行。
Sample Input 2 2 5 10 10 20
Sample Output 7.50 15.00 7.50 15.00 1C語言程式
#include <stdio.h> #include <stdlib.h>int main() { int i,j,n,m,a[51][6],flag,s; double sum,avg[51],b[6]; while (scanf("%d%d",&n,&m)!=EOF) { for (i=0;i<6;i++) b[i]=0; for (i=0;i<n;i++) for (j=0,sum=0;j<m;j++) //sum置零 { scanf("%d",&a[i][j]); //輸入資料, sum=sum+a[i][j]; //求每名學生的總成績 if (j==m-1) { avg[i]=sum/m; //計算每名學生的平均成績 } b[j]=b[j]+a[i][j]; //計算每門課程的總成績 } for (i=0;i<m;i++) b[i]=b[i]/n; //計算每門課程的平均成績 for (i=0,flag=0;i<n;i++) { for (j=0,s=0;j<m;j++) { if (a[i][j]>=b[j]) s++; if (s==m) flag++; //統計每門課成績湊超過平均成績的學生人數 } } for (i=0;i<n;i++) //輸出每名學生的平均成績 { if(i==0) printf("%.2f",avg[i]); else printf(" %.2f",avg[i]); } printf("\n"); for (i=0;i<m;i++) //輸出每門課程的平均成績 { if(i==0) printf("%.2f",b[i]); else printf(" %.2f",b[i]); } printf("\n"); printf("%d\n\n",flag); //輸出超過平均成績的學生人數 } return 0; }
注意題目最後的空一行,不清楚為什麼資料交換輸出那個輸出格式為什麼不行