|
当サイトの15-3の問題を解いていますが、表示できません。その原因が分かりません。誰か助けてください。
#include <stdio.h>
#define NINZU 5
#define KAMOKU 4
struct seiseki { //成績データ
char bango;//生徒版番号
int ten[KAMOKU];//各科目点数
int total;//合計点
};
int main( void )
{
int i , j;
struct seiseki class[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 wk;//作業エリア
struct seiseki *sp;//構造体のポインタ宣言
sp = class;//構造体のアドレス設定
printf("番号\t国語\t数学\t理科\t社会\t合計\n");
//各人の4科目の合計点を求め、構造体に格納
for ( i=0; i < NINZU; i++) {
for ( j=0; j < KAMOKU; j++) {
(sp+i)->total += (sp+i)->ten[j];//各科目の点数を合計に加算
}
}
//合計点の高い順に各人を並べ替える
for (i=0;i<NINZU-1;i++) {
for (j=0;NINZU-i-1;j++) {
if ((sp+j)->total < (sp+j+1)->total) {
wk = *(sp+j);
*(sp+j) = *(sp+j+1);
*(sp+j+1) = wk;
}
}
}
//結果を出力フォームに従って表示
for (i=0;i<NINZU;i++) {
printf("%4d",(sp+i)->bango);
for (j=0;j<KAMOKU;j++) {
printf("%3d",(sp+i)->ten[j]);
}
printf("%3d\n",(sp+i)->total);
}
return 0;
}
|