質問: c言語の質問です 『名前 点数』名前と点数を空白を入れてキーボードから入力し、 名前1 点数1 名前2 点数2 と入力していき、入力の最後に C-d を入力します。
回答: こんなんかな・・・ 同点が二人以上いた場合は考慮していない。 #include struct rank { int n; char s[64]; } rank[3]; void ranksort3(struct rank r[3]) { if (r[2].n > r[0].n) { r[1] = r[0]; r[0] = r[2]; } else if (r[2].n > r[1].n) r[1] = r[2]; } struct rank mkst(char *s) { struct rank ret = { -1, "" }; sscanf(s, "%s%d", &ret.s, &ret.n); return ret; } int main() { if (fgets(rank[2].s, sizeof rank[2].s, stdin)) { rank[0] = mkst(rank[2].s); if (fgets(rank[2].s, sizeof rank[2].s, stdin)) { rank[1] = rank[2] = mkst(rank[2].s); ranksort3(rank); while (fgets(rank[2].s, sizeof rank[2].s, stdin)) { rank[2] = mkst(rank[2].s); ranksort3(rank); } printf("%s\n%s\n", rank[0].s, rank[1].s); } } return 0; }