#include <stdio.h> /* #defineについては第18章参照 */ #define NINZU 5 /* 学生の人数 */ #define KAMOKU 4 /* 科目数 */ struct seiseki { int no; int kamoku[KAMOKU]; }; int main( void ) { struct seiseki mycls[NINZU+1] = { { 1001, 85, 74, 63, 90 }, { 1002, 78, 65, 70, 62 }, { 1003, 89, 92, 88, 76 }, { 1004, 32, 48, 66, 25 }, { 1005, 92, 76, 81, 98 }, { -1, 0, 0, 0, 0 } }; struct seiseki *my_p; char *kname[] = { "国語", "数学", "理科", "社会" }; int i, j; double heikin; my_p = mycls; for ( j = 0; j < KAMOKU; j++ ) { i = 0; heikin = 0.0; while( ( my_p+i )->no != -1 ) { heikin = heikin + ( my_p+i )->kamoku[j]; i++; } heikin = heikin / i; printf( "%s 平均 = %6.2f\n", kname[j], heikin ); } return 0; }
#include <stdio.h> #define NINZU 5 #define KAMOKU 4 struct seiseki { /* 成績データ */ int no; /* 学生番号 */ int ten[KAMOKU]; /* 点数 */ int goukei; /* 合計点 */ }; int main( void ) { struct seiseki mycls[NINZU] = { { 1001, 85, 74, 63, 90, 0 }, { 1002, 78, 65, 70, 62, 0 }, { 1003, 89, 92, 88, 76, 0 }, { 1004, 32, 48, 66, 25, 0 }, { 1005, 92, 76, 81, 98, 0 }, }; struct seiseki *sp; struct seiseki wk; int i, j; sp = mycls; printf( "番号 国語 数学 理科 社会 合計\n" ); for ( i = 0; i < NINZU; i++ ) { /*** 合計点を求める ***/ for ( j = 0; j < KAMOKU; j++ ) { ( sp+i )->goukei = ( sp+i )->goukei + ( sp+i )->ten[j]; } } /*** 合計得点順に並べる ***/ for ( i = 0; i < NINZU-1; i++ ) { for ( j = 0; j < NINZU-i-1; j++ ) { if( ( sp+j )->goukei < ( sp+j+1 )->goukei ) { wk = *( sp+j ); *( sp+j ) = *( sp+j+1 ); *( sp+j+1 ) = wk; } } } /*** 結果の表示***/ for ( i = 0; i < NINZU; i++ ) { printf( "%4d ", ( sp+i )->no ); for ( j = 0; j < KAMOKU; j++ ) printf("%4d ", ( sp+i )->ten[j] ); printf( " %4d\n", ( sp+i )->goukei ); } return 0; }
▼戻る▼
「初心者のためのポイント学習C言語」 Copyright(c) 2000-2004 TOMOJI All Rights Reserved