「みんな教えて! 選手権!!」開催のお知らせ

以下のプログラムは入力されたデータを基に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

A 回答 (4件)

#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
「10進数からN進数に変換するプログラミン」の回答画像4
    • good
    • 2
この回答へのお礼

ありがとうございます!

お礼日時:2024/07/05 10:37

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



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

ありがとうございます!

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

ビットシフト

    • good
    • 1

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A