gpt4 book ai didi

c - Dec 到 bin 转换器函数向后打印结果

转载 作者:太空宇宙 更新时间:2023-11-04 05:52:44 24 4
gpt4 key购买 nike

作为练习的一部分,我必须重写一个递归函数,以使新函数不递归。这两个函数都需要将正十进制整数输入转换为它们的等效二进制数。

这是使用递归的代码:

void convert(int n) { //recursive
if (n > 0) {
convert(n/2);
printf("%d", n%2);
}

return;
}

这是我的代码:

void convert(int n) { //non-recursive
while (n > 0) {
printf("%d", n%2);
n/=2;
}

return;
}

我的代码的问题是,可以理解的是,我的二进制转换被倒着打印出来。例如,如果我输入数字 8,我的函数返回 0001,如果我输入 2,则返回 01,等等。

对于仅使用 stdio.h 库的快速修复有什么建议吗?

最佳答案

这是一个非递归版本,它产生与递归版本相同的结果并且不需要数组:

void convert(int n) {
int s;

for (s = 1; n/s/2 > 0; s *= 2)
;

for (; s >= 1; s /= 2) {
printf("%d", (n/s) % 2);
}
}

此版本处理零数和大数(但不处理负数)。

关于c - Dec 到 bin 转换器函数向后打印结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35660471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com