ID非公開さん
2022/6/21 10:49
1回答
プログラミングの問題が分かりません。お願いします。
プログラミングの問題が分かりません。お願いします。 以下に示す3人の学生の2回分の英語と数学の試験の点数について,各学生の各教科の2回分の点数の合計点、2教科平均点そして順位を出力するプログラムを作成せよ 英語 数学 first=[30 66] 一人目 78 90 二人目 90 54 三人目 second=[60 76] 55 30 40 81 sum[i][j]=first[i][j]+second[i][j] 実行結果 2回分の合計点 90 142 133 120 130 135 各学生の2教科平均点 58.0 63.2 66.2 順位 3 2 1
ベストアンサー
#include <stdio.h> typedef struct { int e; int m; } SCORE; typedef struct { int id; SCORE f; SCORE s; int sum_e; int sum_m; double ave; int rank; } PERSON; int main(void) { PERSON p[3], temp; int i, j; printf("first(英語 数学)\n"); for (i = 0; i < 3; i++) { p[i].id = i; scanf("%d %d", &p[i].f.e, &p[i].f.m); p[i].sum_e = p[i].f.e; p[i].sum_m = p[i].f.m; } printf("second(英語 数学)\n"); for (i = 0; i < 3; i++) { scanf("%d %d", &p[i].s.e, &p[i].s.m); p[i].sum_e += p[i].s.e; p[i].sum_m += p[i].s.m; } for (i = 0; i < 3; i++) { p[i].ave = (int)((p[i].sum_e + p[i].sum_m) / 4.0 * 10) / 10.0; } for (i = 0; i < 2; i++) { for (j = i; j < 3; j++) { if (p[i].ave < p[j].ave) { temp = p[i]; p[i] = p[j]; p[j] = temp; } } } for (i = 0; i < 3; i++) { p[i].rank = i + 1; } for (i = 0; i < 2; i++) { for (j = i; j < 3; j++) { if (p[i].id > p[j].id) { temp = p[i]; p[i] = p[j]; p[j] = temp; } } } printf("2回分の合計点\n"); for (i = 0; i < 3; i++) { printf("%d %d\n", p[i].sum_e, p[i].sum_m); } printf("各学生の2教科平均点\n"); for (i = 0; i < 3; i++) { printf("%.1f ", p[i].ave); } printf("\n順位\n"); for (i = 0; i < 3; i++) { printf("%d ", p[i].rank); } return 0; } ー 実行結果 ー first(英語 数学) 30 66 78 90 90 54 second(英語 数学) 60 76 55 30 40 81 2回分の合計点 90 142 133 120 130 135 各学生の2教科平均点 58.0 63.2 66.2 順位 3 2 1
質問者からのお礼コメント
本当にありがとうございます!
お礼日時:6/21 13:42