/* 5人の学生の3教科(国語・数学・英語)の点数を 2次元配列を用いて処理するプログラムを自由に作成せよ。 例1):科目別の最高点を求める。 例2):各学生の3教科の平均点を求める。 */ #include #define NINZU 5 #define KYOKA 3 void max(const int ma[NINZU][KYOKA], int no, int mb[KYOKA]) { int i, j; for ( i = 0; i < KYOKA; i++ ) { mb[i] = ma[0][i]; } for ( i = 1; i < no; i++ ) for ( j = 0; j < KYOKA; j++ ) if ( mb[j] < ma[i][j] ) mb[j] = ma[i][j]; } void avg(const int va[NINZU][KYOKA], int no, int vc[KYOKA]) { int i, j; for ( i = 0; i < no; i++ ) for( j = 0; j < KYOKA; j++ ) vc[j] += va[i][j]; for ( i = 0; i < KYOKA; i++ ) vc[i] /= no; } int main(void) { int i; int a[NINZU][KYOKA] = { 0 }; int b[KYOKA] = { 0 }; int c[KYOKA] = { 0 }; printf("%d人の国語、数学、英語の点数を入力して下さい。\n", NINZU); for ( i = 0; i < NINZU ; i++ ) { printf("[%02d] 国語:", i + 1); scanf("%d", &a[i][0]); printf("   数学:"); scanf("%d", &a[i][1]); printf("   英語:"); scanf("%d", &a[i][2]); } max(a, NINZU, b); avg(a, NINZU, c); printf("国語の最高点:%d\n", b[0]); printf("国語の平均点:%d\n", c[0]); printf("数学の最高点:%d\n", b[1]); printf("数学の平均点:%d\n", c[1]); printf("英語の最高点:%d\n", b[2]); printf("英語の平均点:%d\n", c[2]); return 0; }