電子書籍の厳選無料作品が豊富!

以下のプログラムは入力されたデータを基に10進数からN進数に変換するプログラムなのですが変換後の表示が逆になってしまいます。(10110000と表示したいのに00001101となる)。そこで計算結果を配列に記憶しておいて、全部が終わってから桁を逆順に表示するプログラムに修正したいのですがどうすればいいか教えていただけませんか?
#include <stdio.h>
int main( void ){
int base; //基数
scanf( "%d", &base ); //データ1行目
int num;
while( scanf( "%d", &num ) != EOF ){
do {
printf( "%X", num%base );
num /= base;
} while( num > 0 );
printf( "\n" );
}
return 0;
}
入力データ
2
176
128
248
2
68
95
64
97
159
37

  • 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
  • 今の自分の気分スタンプを選ぼう!
あと4000文字

A 回答 (4件)

「10進数からN進数に変換するプログラミン」の回答画像4
    • good
    • 0

c++ だとreverse関数がありますね。



c言語だと no.2 さんの解答
(n進数変換のために使用した変数 i を
再利用して、右端の桁から逆順に表示
している)でいいと思います。
    • good
    • 1
この回答へのお礼

ありがとうございます!

お礼日時:2024/07/04 16:19

#include <stdio.h>



#define NDIGIT (sizeof(int)*8)

int main( void ) {
  int base; //基数
  scanf( "%d", &base ); //データ1行目

  char digits[NDIGIT];
  int num, i;
  while( scanf( "%d", &num ) != EOF ) {
   i = 0;
   do {
    digits[i++] = num%base;
    num /= base;
   } while( num > 0 );

   while( --i >= 0 )
     printf( "%d", digits[i] );
   printf( "\n" );
  }

  return 0;
}
    • good
    • 2
この回答へのお礼

ありがとうございます!

お礼日時:2024/07/04 16:19

ビットシフト

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!