C语言 输入一个十进制数,要求分别定义不同的函数将十进制转换成八进制和十六进制,并输出?

输入一个十进制数,转换成对应的八进制和十六进制,并输出。要求分别定义不同的函数将十进制转换成八进制和十六进制。想问一下我这个哪里错了函数和数组的组合学得不好... 输入一个十进制数,转换成对应的八进制和十六进制,并输出。要求分别定义不同的函数将十进制转换成八进制和十六进制。想问一下我这个哪里错了 函数和数组的组合学得不好 展开
 我来答
最大的宝宝
2019-12-22 · TA获得超过828个赞
知道小有建树答主
回答量:1569
采纳率:67%
帮助的人:397万
展开全部
你的问题还真不好说,大方向没问题,细节上得加强。为了尽可能简单,我用了全局变量,除非必要,滥用它是一个非常不好的习惯。
自己要学会不使用全局变量,怎么实现相同的功能。另外了解一下使用%o,%x,%a这几种格式时printf的输出结果
int a[100] = { 0 }; // 转换后的值
int flag = 0; // 符号

// 把x转换为base进制数
int convert(int x, int base)
{
int i = 0;
flag = 0;

if (x < 0)
{
flag = 1;
x = -x; // 确保是非负整数
}

if (base <= 0)
{
printf("进制输入错误\n");
return 0;
}

while (x)
{
a[i++] = x % base;
x /= base;
}
i--;

return i; // 返回位数
}

int eight(int x)
{
return convert(x, 8);
}

int sixteen(int x)
{
return convert(x, 16);
}

/* 非常简陋,只处理16进制以下的情形 */
void printf_num(int i)
{
printf("\n");

if (flag)
printf("-"); // 负号
while (i >= 0)
{
if (a[i] > 9 && a[i] < 16)
printf("%c", a[i] + 55); // 输出A-F
else
printf("%d", a[i]); // 输出0-9
i--;
}
}

int main() {

int x, i;

printf("请输入一个十进制整数:");
scanf("%d", &x);

i = eight(x);
printf_num(i);

i = sixteen(x);
printf_num(i);

return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式