2

クラスの宿題に取り組んでいます。課題の一部では、基数 10 から 2 進数に変換し、2 進数を char 型の配列として表します。何らかの理由で、右端のビットを計算していません。どんな助けでも大歓迎です。

#include <stdlib.h>
#include <stdio.h>
xtractmsg(int a)
{
   int rem,i,b,j,quotient;
   char binaryNumber[16];



   for(i = 0; i <= 16; i++){

        if(a == 0)
           binaryNumber[i]='0';
        else{

           rem = a % 2;

           if(rem == 0)
                   binaryNumber[i]='1';
           else
                  binaryNumber[i]='0';
          a=a/2;
        }


   }

    for(j=15; j>=0;j--)
        printf("%c,%d",binaryNumber[j]);


}

入力は 10 で、出力は 0000000000000101 です。

4

2 に答える 2

2

宿題なので直接の回答はしません。残りを取得した後、何をするかをよく見てください。手に入れたところに印刷して、見たものを分析してみてください。

無関係だが間違っているfor(i = 0; i <= 16; i++)、最終的には存在しない17番目の要素に書き込みます。

于 2013-03-19T22:30:13.700 に答える
0

ここで 2 つのことに対処する必要があります。

ループ条件が 1 つ間違っています-:

for(i = 0; i < 16; i++) {

ロジックを逆にする必要があります-:

if(rem == 0)
    binaryNumber[i]='0';
else
    binaryNumber[i]='1';
于 2013-03-19T22:46:52.340 に答える