文字列配列の練習として,以下の配列を用いて for 文を使用して表示させる練習もしましょう.
char header[5][8] = {"Student", "English", "Math", "Physics", "Total"}; |
My student number: s134099 Student English Math Physics Total A 54 92 83 229 B 73 13 86 172 C 18 81 4 103 D 83 76 31 190 E 84 86 97 267 Student English Math Physics Total E 84 86 97 267 A 54 92 83 229 D 83 76 31 190 B 73 13 86 172 C 18 81 4 103 --------------------- |
上の例では2次元配列を一つだけ用意しています.先頭の要素が文字コード,その次から3つが成績,最後の要素が合計点の組合せを人数分保存できるようにしましょう.
/* ************************************************** */ /* */ /* プログラミング入門 情報科学演習C7 */ /* レポート課題 */ /* 2014.01.06 */ /* */ /* ************************************************** */ /* */ /* 学生番号: */ /* */ /* 氏名: */ /* */ /* ************************************************** */ /* */ /* この行以降に解答のプログラムを書くこと */ #include <stdio.h> #include <stdlib.h> #include <time.h> main() { srand((unsigned) time(NULL)); int i, j, k, score[5][5], tmp; char header[5][8] = {"Student", "English", "Math", "Physics", "Total"}; printf("My student number: s134099\n\n"); for(i=0; i<=4; i++) printf("%7s ", header[i]); printf("\n"); for(i=0; i<=4; i++){ score[i][0] = 65 + i; score[i][4] = 0; for(j=1; j<=3; j++){ score[i][j] = rand() % 101; score[i][4] += score[i][j]; } } for(i=0; i<=4; i++){ printf("%7c ", score[i][0]); for(j=1; j<=4; j++) printf("%7d ", score[i][j]); printf("\n"); } printf("\n"); for(i=0; i<=4; i++) printf("%7s ", header[i]); printf("\n"); for(i=0; i<=3; i++) for(j=i+1; j<=4; j++) if(score[i][4] < score[j][4]) for(k=0; k<=4; k++){ tmp = score[i][k]; score[i][k] = score[j][k]; score[j][k] = tmp; } for(i=0; i<=4; i++){ printf("%7c ", score[i][0]); for(j=1; j<=4; j++) printf("%7d ", score[i][j]); printf("\n"); } printf("\n---------------------\n\n"); return(0); } |