下
C言語のお勉強ページに対するご意見・ご感想スレ
15:へなちょこ管理人 ★2008/09/01(月) 15:45:08
でけた。
ちょこちょこデバッグしながらで仕様を思い出せないですが、
なんとか期待通りの動作をしました。
/*
5人の学生の3教科(国語・数学・英語)の点数を
2次元配列を用いて処理するプログラムを自由に作成せよ。
例1):科目別の最高点を求める。
例2):各学生の3教科の平均点を求める。
*/
#include <stdio.h>
#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[NINZU])
{
int i, j;
for ( i = 0; i < NINZU; i++ )
for( j = 0; j < no; j++ )
vc[i] += va[i][j];
for ( i = 0; i < NINZU; i++ )
vc[i] /= no;
}
int main(void)
{
int i;
int a[NINZU][KYOKA] = { 0 };
int b[KYOKA] = { 0 };
int c[NINZU] = { 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, KYOKA, c);
printf("国語の最高点:%d\n", b[0]);
printf("数学の最高点:%d\n", b[1]);
printf("英語の最高点:%d\n", b[2]);
for ( i = 0; i < NINZU; i++ ) {
printf("%02d人目の平均点:%d\n", i + 1, c[i]);
return 0;
}
上前次1-新書写板AA設索