【发布时间】:2020-06-19 07:32:42
【问题描述】:
我需要在 c 中使用递归进行十进制到二进制转换器 但输出错误 ex 十进制 = 22,正确的二进制 = 10110,输出 = 01101
所以这是我想出的代码
#include <stdio.h>
int biner (int a){
if (a == 1)
return 1;
else if (a % 2 == 1)
{
printf ("1");
return biner (a / 2);
}
else
{
printf ("0");
return biner (a / 2);
}
}
int main () {
int a;
printf ("Masukan angka ");
scanf ("%d", &a);
printf ("%d", biner (a));
}
我需要改变哪一部分 提前致谢
【问题讨论】:
-
您的程序计算并反向显示结果。
-
我已经把输入、输出和预期放在代码前面了。
-
请解释您的代码的想法。您想在递归时打印吗?你想返回然后打印的东西吗?你似乎正在尝试两者兼而有之。第一步是决定并清理它。然后可以提出解决方案。我建议将您的代码更改为不返回任何内容,并且仅在递归时打印。 IE。做一个空函数。不要返回。不要尝试打印 biner() 的返回值。
-
请尝试显示所有值 0 到 31 的输出。您会注意到其中一些甚至不匹配反向模式。确保所有
ifs 的所有路径都打印出一些东西。
标签: c recursion binary converters