後者のコードは
cin >> year;
WesternToShouwa(year);
って書いてて year が書き換わることを期待してるんやろ?

前社は 代入により書き換えてる
yearA = WesternToShouwa(year@);

@は呼び出しの前後で変わっていない が 代入演算子により Aで書き換えてる