|
再帰呼び出し (recursive call) は嫌いだ。
いきなり出力するのもいやだ。文字列で返して欲しい。
と思ったら、
#include <stdio.h>
#include <limits.h>
void conv(char *s, unsigned int x, unsigned int base)
{
char buf[sizeof(int) * CHAR_BIT], *p = buf;
do *p++ = "0123456789ABCDEF"[x % base]; while (x /= base);
do *s++ = *--p; while (p != buf);
*s = '\0';
}
int main(void)
{
unsigned int x; char buf[80];
while (scanf("%u", &x) == 1) {
conv(buf, x, 2); printf(" %s(2)", buf);
conv(buf, x, 3); printf(" %s(3)", buf);
conv(buf, x, 4); printf(" %s(4)", buf);
conv(buf, x, 5); printf(" %s(5)", buf);
conv(buf, x, 8); printf(" %s(8)", buf);
conv(buf, x, 10); printf(" %s(10)", buf);
conv(buf, x, 16); printf(" %s(16)\n", buf);
}
return 0;
}
|