- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語 初心者です。)
C言語初心者の合格者一覧ソースコードのわからない部分について
このQ&Aのポイント
- C言語の初心者が合格者一覧のソースコードについて不明な点があります。
- 特に、if (tensu[i] >= 60)の部分で、succs[snum++] = i;の意味が理解できません。
- 具体的には、iにどの値が代入されるのか、理解できません。回答をお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No.1の者です。 具体的な例を使って説明してみます。 5人の点数が、順に73, 58, 60, 41, 84だとします。 くだんのif文で、合格圏かどうか(60以上かどうか)を判定します。 0人目:60以上なので、合格 succs[snum]、つまりsuccs[0]に0を代入し、snumを1増やす(1になる) 1人目:60以上でないので、不合格 2人目:60以上なので、合格 succs[snum]、つまりsuccs[1]に2を代入し、snumを1増やす(2になる) 3人目:60以上でないので、不合格 4人目:60以上なので、合格 succs[snum]、つまりsuccs[2]に4を代入し、snumを1増やす(3になる) これで、全員の合否を判定しました。 このときのsnum(つまり3)が、合格者の人数です。 また、合格者の番号はsuccs[0]~succs[2]の値、 つまり0番、2番、4番です。
その他の回答 (1)
- asuncion
- ベストアンサー率33% (2127/6289)
回答No.1
> if (tensu[i] >= 60){ > succs[snum++] = i; > } i番目の人の点数が60点以上ならば その人は合格なので、 合格者のsnum番目にiを代入し、 その後、snumをインクリメントしています。
質問者
お礼
丁寧な回答有難うございます。 またよろしくお願いします。 できれば補足についてコメントしていただけたら幸いです。
質問者
補足
丁寧に解説していただき、ありがとうございます。 ということは、処理の流れなのですが、 succs[snum] = i → succs[0] snum = snum + 1 → succs[1] と理解していいのでしょうか!? もう一度、回答お願いします。
お礼
ありがとうございます。(嬉) 凄くわかりやすいです。 ありがとうございます。(嬉) もう少し、教えてもらいたいのですがよろしいでしょうか? よければ、回答おねがいします。 この問題の最後の方に、 for (i = 0; i < snum; i++) printf("%2d (%3d点)\n",succs[i] + 1, tensu[succs[i]]); と、あるのですが、同じようにsuccs[i] + i と tensu[succs[i]] についても説明していただけないでしょうか? どうかよろしくお願いします。