科目の得点の高い順に表示を並べ直すプログラムを作成せよ.ここで,科目名は4文字分確保して左揃え,得点も4桁分を確保して右揃え,コラムの間はスペース2個分空けるようにすること.
My student number: s164099 Eng Math Phys Chem Bio Geo Law Econ 21 6 69 15 11 51 50 48 Phys Geo Law Econ Eng Chem Bio Math 69 51 50 48 21 15 11 6 ------------------------------------ |
なお,結果の出力では必ず最初の行に自分の学生番号を,最後にハイフンによるラインをつけること.無い場合には減点するので注意.
以前と同様な配列 record[8][2] の他に,科目名用に次のような配列を用意します.
char class[8][5] = {"Eng", "Math", "Phys", "Chem", "Bio", "Geo", "Law", "Econ"};
この配列の文字列にスペースを入れて,例えば, "Eng " のようにすることは認めません.ちゃんと左揃えにしてください.
解答用紙を使用する際には,まず,科目名の不要な方を削除してください.また,学生番号と名前の記入も忘れないでください.さらに,解答用紙自体がC言語のプログラムとなっていますので, cc コマンドを実行して,コンパイルエラーの無いことを確認してから提出してください. 指定の解答用紙を使用していない,コンパイルエラーが出る,実行時に警告が出る,学生番号と名前が無い,というような答案は提出されても採点しません.注意してください. |
/* ************************************************** */ /* */ /* プログラミング入門 情報科学演習C7 */ /* レポート課題 */ /* 2017.01.23 */ /* */ /* ************************************************** */ /* */ /* 学生番号: */ /* */ /* 氏名: */ /* */ /* ************************************************** */ /* */ /* この行以降に解答のプログラムを書くこと */ #include <stdio.h> #include <stdlib.h> #include <time.h> main() { srand((unsigned) time(NULL)); int i, j, k, record[8][2], tmp; char class[8][5] = {"Eng", "Math", "Phys", "Chem", "Bio", "Geo", "Law", "Econ"}; printf("My student number: s164099\n\n"); for(i=0; i<=7; i++){ record[i][0] = i; record[i][1] = rand() % 101; } for(i=0; i<=7; i++) printf("%-4s ", class[record[i][0]]); printf("\n"); for(i=0; i<=7; i++) printf("%4d ", record[i][1]); printf("\n\n"); for(i=0; i<=6; i++){ for(j=i+1; j<=7; j++){ if(record[i][1]<record[j][1]){ for(k=0; k<=1; k++){ tmp = record[i][k]; record[i][k] = record[j][k]; record[j][k] = tmp; } } } } for(i=0; i<=7; i++) printf("%-4s ", class[record[i][0]]); printf("\n"); for(i=0; i<=7; i++) printf("%4d ", record[i][1]); printf("\n\n------------------------------------\n\n"); return(0); } |