• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語のプログラムでうまく動きません。)

C言語のプログラムでうまく動かない

このQ&Aのポイント
  • 大きい数字を小さい数字で割るプログラムが正しく動かない
  • 分母が0の場合には不定と表示し、それ以外の場合には正しい商を求めるプログラム
  • 問題のプログラムでは不定と表示される場合があり、答えが正しく表示されない

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

  • ベストアンサー
  • umihiko29
  • ベストアンサー率100% (2/2)
回答No.6

すこし初心者レベルからは外れてしまいますが、どうしてこうなったのかの説明を。 ひとつめのif文でif("syou>=1")となっているので これは必ず真となります(文字列ポインタはNULLではない、つまり0ではないので C言語の仕様により真になる) よってelse以下の処理が実行されることはありません。 次のif文も()内が文字列なので同様に真となりprintf("不定です");が x, yにどんな値を入力しても実行されます。 (ただし、yに0が入っている場合はif文の前に止まる可能性アリ) また、printf("答えは%fです。",&syou);は変数syouのアドレス(メモリの番地、 プログラム実行の度に変わる)を そのまま小数の値として表示しようとするため、よく分からない値が出てくることになります。 (今回はたまたま0になったのでしょう。)

その他の回答 (5)

  • devman
  • ベストアンサー率42% (20/47)
回答No.5
回答No.4

処理の順番おかしくね? if ( y == 0 ) {   if ( x == 0 ) { 不定 }   else { 不能 } } else {   x/y を出力 }

回答No.3

気になった点です。 (1)printfの書式で%fの場合には&は不要です。アドレスが表示されることになります。 (2)scanf直後の割り算は危険です。母数に0を入力された場合エラーになります。 (3)xとyはintなのでsyouは整数しか入らないと思います。計算時にキャストするか変数型をdoubleにする必要があると思います。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

if 文の記述方法が誤っています。 両端を""でくくってはいけません。 if("syou>=1") は if (syou >=1) if("y==0") は if (y==0) if("x==0") は if(x==0) のようにしてください。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

if文で、式を引用符で囲んでいるのが、すごくおかしいような気がします。

関連するQ&A

専門家に質問してみよう