#include <stdio.h>

// 構造体の定義
struct student {
    int id;    /* 学籍番号 */
    int eng;   /* 英語の成績 */
    int math;  /* 数学の成績 */
    int sci;   /* 理科の成績 */
    int total; /* 合計点 */
};

// 値渡し関数（スライド通り）
void sum1(struct student s) {
    s.total = s.eng + s.math + s.sci;
}

// 参照渡し関数（★間接演算子をアロー演算子に書き換え箇所）
void sum2(struct student *p) {
    p->total = p->eng + p->math + p->sci;
}

int main() {
    // 構造体変数の初期化
    struct student s = {17001, 60, 100, 20};

    // sum1（値渡し）の呼び出しと結果出力
    sum1(s); /* 値渡し */
    printf("%7d %5d %5d %5d %10d\n", s.id, s.eng, s.math, s.sci, s.total);

    // sum2（参照渡し・アロー演算子版）の呼び出しと結果出力
    sum2(&s); /* 参照渡し */
    printf("%7d %5d %5d %5d %10d\n", s.id, s.eng, s.math, s.sci, s.total);

    return 0;
}
