「 キーボードから 10 進数 m と,基数 n を入力すると,m を n 進数に変換して表示するプログラムを作れ. ただし,mの範囲は10進数で0~65535,nは2~16とし,この範囲でない値が入力された場合には,再 度入力を促すようにせよ.また,表示する値が 10 以上の値の場合には英小文字の a~f を用いよ。」という問題で自分なりに調べプログラムを書いてみました。
しかし例えば16進数の場合365と入力すると 16d を出したいのですが 1613 と出てしまいます。どうすれば変換できるのでしょうか?
またm,nの範囲を指定して指定外ならば再度入力を促す方法も教えていただければと思います。
#include <stdio.h> #include <string.h> int main() { int m=-1, n=1; char buf[1024]; char ss[1024]; while(m<0) { scanf("%d", &m); } while(n<2) { scanf("%d", &n); } sprintf(ss, " (%d)", n); while(m > 0) { int amarm; amarm=m % n; sprintf(buf, " %d%s", amarm, ss); strcpy(ss, buf); m=m/n; } puts(ss); return 0; }
提示のコードではどういう出力がされるんでしょうか。
入力/出力をそのままコピペして提示してください
回答2件
あなたの回答
tips
プレビュー