(1)for
(2)(total=(i==5?0:total)+i)\u0026gt;0\u0026amp;\u0026amp;i\u0026lt;100
(3)total;{
(1)は、その後に (;;) の形式があることから、C言語の文法として for 以外には許されません。
(2)は、この for 文の中で処理すべき内容が空であることから、ここで三つの処理を済ませなければなりません。さらに文法上その処理は一つの式でなければなりません。しかもその式の値はループの継続条件になりますので i \u0026lt;= 100 と同値である必要があります。
三つの処理とは、
・total の初期化
・ループ終了時に total に i の合計が格納されるように、各ループごとに total に i を加算
・i \u0026lt;= 100 であるか否かの検査
の三つです。
回答では、三項演算子により初回ならゼロ、それ以外なら total を選択することで初期化と、それに i を加算することでループごとの i を加算すること、そしてその結果を改めて代入することで実現しています。またこれは必ずゼロより大きくなることがアルゴリズム上保証されていますので、これがゼロより大きいかの検査として、論理和演算子で i \u0026lt;= 100 と結合することで、単一の式で表現した上に最終的な式の値が i \u0026lt;= 100 と同値になるようにしています。
ところが、ここで実際に i \u0026lt;= 100 と同値にしますと、最初に i \u0026gt; 100 となった時にも i が total に加算されてしまいます。
なので回答では i == 100 の時には継続条件から外れるように、最後を i \u0026lt;= 100 から i \u0026lt; 100 へと補正しています。
(3)は、次の行の } が文法エラーを起こすので、{ を入れる必要があります。問題文に記載の total = は無意味ですので、自分自身である total を代入することで何も書いていないのと同じ結果が得られるようにしています。
実行結果は、
5の倍数は
5の倍数の合計は1050
となります。