今学校の課題で、10進数を2進数に変換するプログラムを作成しています。2進数に変換するところまではできたのですが結果を表示するときは逆順に表示しなければだめ、というところまではきたのですが、逆順に表示する方法が思いつきません。考えたプログラムは下の通りなのですが、逆順に表示する方法を教えてほしいです。
#include<stdio.h>
main(){
int a,c,n,m,k,b[1000];
printf("10進数で数を入力してください");
scanf("%d",&n);
if(n==0){
m=0;
b[m]=0;
printf("%dです。",0);
}
while(n>0){
k=0;
a=n%2;
b[k]=a;
c=n/2;
n=c;
printf("%d",b[k]);
k=k+1;
if(n==0){
break;
m=k;
printf("%d",b[m]);
}
}
}
質問です
Re:質問です
質問するときは<pre>と</pre>でコードを囲んだほうがいいですよ
詳しくはこのサイトの規約と注意事項をどうぞ
http://dixq.net/board/board.html
回答は申し訳ありませんが出来ません;
詳しくはこのサイトの規約と注意事項をどうぞ
http://dixq.net/board/board.html
回答は申し訳ありませんが出来ません;
Re:質問です
提示したプログラムは2進数の変換は一応できていますけど、bを配列にしているのに"k=0"の位置がおかしいのでb[0]しか使用していないし、20行目にbreakがあるからその後の行が実行されませんね。
意図を察するにbの配列に1ビットづつの値を入れたいんでしょうけどそうはなっていないですね。
で、逆順表示ですが上記の配列へのデータセットがきちんとできたとすれば以下のようにしてください。
全部書くと勉強にならないので※部分に何をいれるかは考えてください。
意図を察するにbの配列に1ビットづつの値を入れたいんでしょうけどそうはなっていないですね。
で、逆順表示ですが上記の配列へのデータセットがきちんとできたとすれば以下のようにしてください。
全部書くと勉強にならないので※部分に何をいれるかは考えてください。
if (n==0) { m=※; while(m >= 0) { printf("%d", b[m]); m--; } break; }