#include <stdio.h>
#define N 3
struct student {
int id; /* 学籍番号 */
int eng; /* 英語の成績 */
int math; /* 数学の成績 */
int sci; /* 理科の成績 */
int total; /* 合計点(追加箇所) */
};
void swap(struct student *p1, struct student *p2) {
struct student temp = *p1;
*p1 = *p2;
*p2 = temp;
}
void printSeiseki(struct student s[]) {
int i;
for (i = 0; i < N; i++) {
printf("%7d %5d %5d %5d %10d\n", s
[i
].
id, s
[i
].
eng, s
[i
].
math, s
[i
].
sci, s
[i
].
total); }
}
int main() {
int i, j;
struct student s[N] = {
{17001, 60, 100, 20},
{17002, 90, 40, 80},
{17003, 20, 30, 50}
};
for (i = 0; i < N; i++) {
s[i].total = s[i].eng + s[i].math + s[i].sci;
}
/* ソート(totalの昇順に書き換え、swapの呼び出し方を変更) */
for (i = 1; i < N; i++) {
for (j = 0; j < N - i; j++) {
if (s[j].total > s[j + 1].total) {
swap(&s[j], &s[j + 1]);
}
}
}
/* 成績のプリント */
printSeiseki(s);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIE4gMwoKc3RydWN0IHN0dWRlbnQgewogICAgaW50IGlkOyAgICAvKiDlrabnsY3nlarlj7cgKi8KICAgIGludCBlbmc7ICAgLyog6Iux6Kqe44Gu5oiQ57i+ICovCiAgICBpbnQgbWF0aDsgIC8qIOaVsOWtpuOBruaIkOe4viAqLwogICAgaW50IHNjaTsgICAvKiDnkIbnp5Hjga7miJDnuL4gKi8KICAgIGludCB0b3RhbDsgLyog5ZCI6KiI54K577yI6L+95Yqg566H5omA77yJICovCn07CgoKdm9pZCBzd2FwKHN0cnVjdCBzdHVkZW50ICpwMSwgc3RydWN0IHN0dWRlbnQgKnAyKSB7CiAgICBzdHJ1Y3Qgc3R1ZGVudCB0ZW1wID0gKnAxOwogICAgKnAxID0gKnAyOwogICAgKnAyID0gdGVtcDsKfQoKCnZvaWQgcHJpbnRTZWlzZWtpKHN0cnVjdCBzdHVkZW50IHNbXSkgewogICAgaW50IGk7CiAgICBmb3IgKGkgPSAwOyBpIDwgTjsgaSsrKSB7CiAgICAgICAgCiAgICAgICAgcHJpbnRmKCIlN2QgJTVkICU1ZCAlNWQgJTEwZFxuIiwgc1tpXS5pZCwgc1tpXS5lbmcsIHNbaV0ubWF0aCwgc1tpXS5zY2ksIHNbaV0udG90YWwpOwogICAgfQp9CgppbnQgbWFpbigpIHsKICAgIGludCBpLCBqOwogICAgc3RydWN0IHN0dWRlbnQgc1tOXSA9IHsKICAgICAgICB7MTcwMDEsIDYwLCAxMDAsIDIwfSwKICAgICAgICB7MTcwMDIsIDkwLCA0MCwgODB9LAogICAgICAgIHsxNzAwMywgMjAsIDMwLCA1MH0KICAgIH07CgogICAgCiAgICBmb3IgKGkgPSAwOyBpIDwgTjsgaSsrKSB7CiAgICAgICAgc1tpXS50b3RhbCA9IHNbaV0uZW5nICsgc1tpXS5tYXRoICsgc1tpXS5zY2k7CiAgICB9CgogICAgLyog44K944O844OI77yIdG90YWzjga7mmIfpoIbjgavmm7jjgY3mj5vjgYjjgIFzd2Fw44Gu5ZG844Gz5Ye644GX5pa544KS5aSJ5pu077yJICovCiAgICBmb3IgKGkgPSAxOyBpIDwgTjsgaSsrKSB7CiAgICAgICAgZm9yIChqID0gMDsgaiA8IE4gLSBpOyBqKyspIHsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChzW2pdLnRvdGFsID4gc1tqICsgMV0udG90YWwpIHsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgc3dhcCgmc1tqXSwgJnNbaiArIDFdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKiDmiJDnuL7jga7jg5fjg6rjg7Pjg4ggKi8KICAgIHByaW50U2Vpc2VraShzKTsKCiAgICByZXR1cm4gMDsKfQ==