• ベストアンサー

5桁までの2進数を10進数に変換するプログラム(C言語)

自分で、プログラムを作ったのですが、エラーがしこたまでます、どこがわりのか、みていただきたいのですが、どこが違うのでしょうか?よろしくお願いします。 #include<stdio.h> main() { int x; int a,b,c,d,e,f; printf("5桁までの数値を入力してください"); scanf("%d",&x); if(x>11111) printf(”警告5桁以上です。"); a=(x/10000); if(a!=0) x=x-10000; b=(x/1000); if(b!=0) x=x-1000; c=(x/100); if(c!=0) x=x-100; d=(x/10); if(d!=0) x=x-10; e=(x/1); if(e!=0) x=x-1; f=a*16+b*8+c*4+d*2+e*1; }

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

> if(x>11111) printf(”警告5桁以上です。"); ここのprintfが全角ダブルコーテーションで始まっているのが原因ではないかな。 これを直せばエラーは止まりそうな予感。

その他の回答 (4)

回答No.5

yasuyuki007と申します。 #1さんがご指摘の箇所を修正すれば、 コンパイル&リンクは正常に通ります。 ただ、このままではこのプログラムは期待通りの結果は出しません。以下に改善すべき点を記述しておきますので、ご参考までに。 変換元の数値を入力する際、"%d"で受け取っている。 →十進数での入力となってしまい、二進数での入力にならない。#4さんのアドバイスにもある通り、 "%s"での入力にして、その後で0または1以外の入力はエラーとするようなチェックルーチンを入れるべき。 #3さんが指摘されているように、せっかくの変換結果を出力しないのはもったいないと思う。

  • nano_cat
  • ベストアンサー率24% (26/106)
回答No.4

エラーがでた時は、エラーのでた最初の行を // にするとかしたらいいよ。 ところで、 2進数の入力を、scanf("%d" ~ でするって? "%s"で文字として受け取れば?その方が何かといい と思う。

  • katouka09
  • ベストアンサー率50% (130/256)
回答No.3

提示したソースでは5桁以上入力しても変換処理が行われるし、変換結果って画面に表示しないの?

  • sunasearch
  • ベストアンサー率35% (632/1788)
回答No.2

No.1の方がご指摘の箇所を直せば、 エラーなく動作しました。

関連するQ&A