質問です

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
sweden

質問です

#1

投稿記事 by sweden » 15年前

今学校の課題で、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]);
}
}
}

kerotan0820

Re:質問です

#2

投稿記事 by kerotan0820 » 15年前

質問するときは<pre>と</pre>でコードを囲んだほうがいいですよ

詳しくはこのサイトの規約と注意事項をどうぞ
http://dixq.net/board/board.html

回答は申し訳ありませんが出来ません;

Mist

Re:質問です

#3

投稿記事 by Mist » 15年前

提示したプログラムは2進数の変換は一応できていますけど、bを配列にしているのに"k=0"の位置がおかしいのでb[0]しか使用していないし、20行目にbreakがあるからその後の行が実行されませんね。
意図を察するにbの配列に1ビットづつの値を入れたいんでしょうけどそうはなっていないですね。
で、逆順表示ですが上記の配列へのデータセットがきちんとできたとすれば以下のようにしてください。
全部書くと勉強にならないので※部分に何をいれるかは考えてください。
if (n==0) {
    m=※;
    while(m >= 0) {
        printf("%d", b[m]);
        m--;
    }
    break;
}

閉鎖

“C言語何でも質問掲示板” へ戻る