问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图
我想要达到的结果
将void xie(char *buffer, int x, int base)函数里循环改为使用递归调用,三个参不变
#include <stdio.h>
void swap(char *a, char *b)
{
char t = *a;
*a = *b;
*b = t;
}
void xie(char *buffer, int x, int base)
{
char *p = buffer;
if (x == 0)
{
*p++ = '0';
}
else
{
while (x > 0)
{
int n = x % base;
if (n < 10)
*p++ = '0' + n;
else
*p++ = 'A' + n - 10;
x /= base;
}
}
*p = '\0';
--p;
while (buffer < p)
swap(buffer++, p--);
}
int main()
{
char buffer[255];
int bases[] = {2, 5, 6, 8, 13, 16, 20}, x;
scanf("%d", &x);
for (int i = 0; i < sizeof(bases) / sizeof(int); i++)
{
xie(buffer, x, bases[i]);
printf("%d: %s\n", bases[i], buffer);
}
return 0;
}