• ベストアンサー

C言語での計算

C言語初心者で、計算するプログラムを作ってみようと思い、少ない知識で十進数を二進数にするプログラムを作ってみましたが、うまくいきません。 #include <stdio.h> #include <math.h> main () { int s, t, r; double x=10,y,n; printf("十進数は"); scanf("%d",&s); n = s / 2; r = s % 2; y = pow(x, n); t = y + r; printf("二進数は%d",t); return 0; } コンパイルして実行してみると、3つ問題が見つかりました。 (1)十進数が0のとき、二進数が1と表示される。 (2)十進数が1のとき、二進数が2と表示される。 (3)十進数が20以上のとき、正しい値が表示されない。 問題箇所を指摘していただけると幸いです。 よろしくお願いします。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

powは 引数1の引数2乗を計算する関数です したがって 0 を入力した場合 nは 0/2 = 0 rは 0%2 = 0 yは pow(10,0) = 1 tは 1+0 ですから 1が表示されます これは期待通りの計算でしょうか 入力されたデータが 0になるまで繰り返す必要があるともいます tを0で初期化する sを2で割ったときのあまりをrに代入 ... 1) sを2で割った値に更新する sが0ならループ終了 tを10倍してあまりrを加える 1)に戻って繰り返す

yata16
質問者

お礼

何も考えずやっていました・・・。ありがとございました。

その他の回答 (2)

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

> 十進数を二進数にする 手で計算するとき、どういう手順を踏みますか?

yata16
質問者

お礼

明らかに自分の勉強不足でした・・・。 ありがとございました。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

とりあえず、ループを使って下さい。 十進数を二進表記する際に「繰り返し」の操作が必要なことをまずは思い出しましょう。

yata16
質問者

お礼

すいません、よく考えたらすごい馬鹿みたいなことやってました・・・。 ありがとうございました。

関連するQ&A

専門家に質問してみよう