- ベストアンサー
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以上のとき、正しい値が表示されない。 問題箇所を指摘していただけると幸いです。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
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)に戻って繰り返す
お礼
何も考えずやっていました・・・。ありがとございました。