• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:c言語についての質問です。)

C言語での数値演算プログラムの実行エラー

このQ&Aのポイント
  • C言語での数値演算プログラムの実行エラーについて説明します。
  • プログラムをコンパイルして実行すると、正しく動作しない現象が発生します。
  • その原因は、scanf関数での数値の入力に起因しています。

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

具体的に、どう「正しく動きません」なのですか? 修正する場合に、「どんな風に『正しく動作しない』のか?」が重要な手掛りです。 return 0;の後に、main関数の終了を表わる } が抜けているだけっていうことは無いですよね? switch ~ case ですが、注意が必要なのは「caseはただのラベル」というものです。 caseもdefaultも無い状態でも、コンパイルは正常終了します。 switch(x) { printf("ここ") ; } というプログラムでも「間違い」では無いのです。 (実行した場合、意図した動作をするかどうかはともかく) このプログラムだと、その「caseが無い」状態になっています。 その代りに「case1」「case2」「case3」「case4」というラベルが定義されています。ですが、使われていません。 コンパイル時に、警告を増やす設定にしてコンパイルしてください。 gccなら -Wall オプションを付けます。Visual Studioなら警告レベルを高いものにする。 そうすれば、case1,case2,case3,case4が「未使用ラベル」として警告されると思います。

その他の回答 (2)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

追記: #1にあるscanf ですが、 scanf("%lf",&b) であり、 %lf は「空白(改行文字も含む)を読みとばしてから、数を読み込む」ものなので、今回は問題ありません。

  • maiko0318
  • ベストアンサー率21% (1483/6969)
回答No.1

scanf("%lf",&a); ここに問題があります。 入力要求ですが、数字を入れたあと、\n(enter)しますよね。 これが残って次の scanf("%lf",&b); で読み取られるのです。

関連するQ&A