- ベストアンサー
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; }
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> if(x>11111) printf(”警告5桁以上です。"); ここのprintfが全角ダブルコーテーションで始まっているのが原因ではないかな。 これを直せばエラーは止まりそうな予感。
その他の回答 (4)
- yasuyuki007
- ベストアンサー率55% (16/29)
yasuyuki007と申します。 #1さんがご指摘の箇所を修正すれば、 コンパイル&リンクは正常に通ります。 ただ、このままではこのプログラムは期待通りの結果は出しません。以下に改善すべき点を記述しておきますので、ご参考までに。 変換元の数値を入力する際、"%d"で受け取っている。 →十進数での入力となってしまい、二進数での入力にならない。#4さんのアドバイスにもある通り、 "%s"での入力にして、その後で0または1以外の入力はエラーとするようなチェックルーチンを入れるべき。 #3さんが指摘されているように、せっかくの変換結果を出力しないのはもったいないと思う。
- nano_cat
- ベストアンサー率24% (26/106)
エラーがでた時は、エラーのでた最初の行を // にするとかしたらいいよ。 ところで、 2進数の入力を、scanf("%d" ~ でするって? "%s"で文字として受け取れば?その方が何かといい と思う。
- katouka09
- ベストアンサー率50% (130/256)
提示したソースでは5桁以上入力しても変換処理が行われるし、変換結果って画面に表示しないの?
- sunasearch
- ベストアンサー率35% (632/1788)
No.1の方がご指摘の箇所を直せば、 エラーなく動作しました。