gpt4 book ai didi

c - 如何使 printf 从右到左

转载 作者:行者123 更新时间:2023-12-02 15:16:02 25 4
gpt4 key购买 nike

我已经编写了这段用于将十进制数转换为二进制数的代码,但它打印的数字反之亦然,我该如何进行这项工作?我可以使用 getch 命令来实现吗?我们目前正在学习 getch。

#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
for(;n>0;n=n/2){
int d = n%2;
printf("%d", d);
}
return 0;
}

最佳答案

你可以通过使用递归函数来解决这个问题:

#include <stdio.h>

void print_binary(int n)
{
if (n != 0) {
print_binary(n/2);
printf("%d ", n%2);
}
}

int main() {
int n;
scanf("%d", &n);
print_binary(n);
return 0;
}

通过在递归调用返回后打印,数字以相反的顺序打印。

每次调用 print_binary 时,它都会使用参数 n/2 调用自身,然后打印最低有效位。但是,每个递归调用都做同样的事情。

下面是 n 等于 11(二进制 1011)时调用堆栈的样子:

main
scanf
print_binary(11)
print_binary(5)
print_binary(2)
print_binary(1)
print_binary(0)
printf("%d ", 1);
printf("%d ", 0);
printf("%d ", 1);
printf("%d ", 1);

您可以看到,这导致首先打印最高有效位。

关于c - 如何使 printf 从右到左,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40430524/

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