• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プログラムの勉強でわからないところがあります)

プログラムの勉強でわからないところがあります

このQ&Aのポイント
  • 明解C言語の入門編、演習4-3で二つの整数値を読み込んで、小さい方の数以上で大きい方の数以下の整数を全て加えた値を表示するプログラムを作成するものなのですが、うまくいかなく困っています。
  • 他の書き方でやれば普通にいけると思うのですが、どうしてこれだとできないのかがわからないとすっきりしなくって・・・
  • whileあたりがおかしいのかと思ったのですが、どこがおかしいのかわからなくって・・小さい方の数字に1ずつ足していって、大きい方の数字と等しくならない限り続けるように作ったつもりなのですが・・・

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

> 大きい方の数字と等しくならない限り続けるように作ったつもりなのです そうなってないですね。 while() の中身は、「大きい方の数字と等しくないか、小さい方の数字と等しくないかどちらかの条件が満足される限り」です。 n1 と n2 の大小関係は、プログラムの実行中変化しませんから、num と sub のいずれかは「変化しない」ことになります。 つまり、大きいほうか小さいほうかは、永久に等しくなりません。 実際、n1 と n2 の大小関係は不明なのですが、わざわざ、n3 と n4 に「大小関係がはっきりするように」再設定しています。 これがあるのに、「大小関係が不明」という前提でプログラムを書くのが間違い(と言わないまでも、無駄)です。 あと、wa が初期化してない気がします。

その他の回答 (1)

  • sepgp34
  • ベストアンサー率0% (0/1)
回答No.2

はじめまして。 No1さんの回答に同意です。 間違いではありませんが、補足です。 せっかくn3、n4という小さい数値と大きい数値を設定しているのであれば、 do-while文中のif文を使用しなくてよいかと思われます。 あと、No1さんがおっしゃるように初期化漏れが多いですね。 変数はきちんと初期化しておきましょう。 amagatsu はdo-whileを使用しておりますが、 単純にfor文を使用する方法ではだめですか? for(min値からmax値まで){ 和変数に加算していく } の方が簡単な気がします。