[英]trying to make decimal to binary converter using recursion in c
我需要用遞歸在 c 中制作一個十進制到二進制轉換器,但輸出是錯誤的,例如十進制 = 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));
}
我需要更改哪一部分提前謝謝
OP 的代碼輸出順序錯誤,因為它需要在打印之前遞歸以首先打印最高有效數字。
代替
printf ("1"); // prints least significant digit
biner (a / 2); // prints most significant digits
更像
biner (a / 2); // prints most significant digits
printf ("1"); // prints least significant digit
真的不需要返回值,讓biner()
可以完成所有打印。
由於代碼沒有嘗試打印符號,不妨使用unsigned a
。
如果a == 0
OP 的代碼會無限遞歸。 僅在a >= 1
遞歸。 (左邊有一個二進制數字。)
d
為 0 或 1,要打印的二進制數字可以使用putchar('0' + d)
建議簡化:
#include <stdio.h>
void biner(unsigned a) {
if (a > 1) { // Do binary digits exist to the left?
biner(a/2); // Print them.
}
putchar('0' + a%2); // Now print the least significant digit.
}
int main(void) {
unsigned a;
printf("Masukan angka ");
scanf("%u", &a);
biner(a);
putchar('\n');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.