1. 程式人生 > >C語言 十進位制轉二進位制 使用遞迴

C語言 十進位制轉二進位制 使用遞迴

decimalToBinary.c:

#include<stdio.h>
void decimalToBinary(int n);
void main()
{
    int n;
    char again;
    do
    {
        printf("輸入10進位制:");
        scanf("%d",&n);
        printf("%d的二進位制:",n);
        decimalToBinary(n);
        printf("\n繼續[y/n]?:");
        scanf("%s",&again);
    }while(again=='y'||again=='Y');
    printf("程式結束!\n");
}
//long long decimalToBinary(int n)//二進位制轉成10進位制:除2取餘,逆序排列
void decimalToBinary(int n)
{
    static long long binary=0;
    static int i=1;//使用static,靜態區域性變數使得i可以累加
    int remainder=0;//餘數不使用,靜態區域性變數,每次遞迴的結果不互相干擾
    static int count=0;
    if(n!=0)
    {
        remainder=n%2;// 取餘數
//        printf("步驟=%d,%d/2--->餘數=%d,商=%d\n",++count,n,remainder,n/2);
        n=n/2;//除以2
        decimalToBinary(n);//求下一個餘數
        printf("%d",remainder);//遞迴返回是自然就逆序的,列印的餘數已經是逆序好的
    }
}

測試:

輸入10進位制:12
12的二進位制:1100
繼續[y/n]?:y
輸入10進位制:16
16的二進位制:10000
繼續[y/n]?:y
輸入10進位制:65535
65535的二進位制:1111111111111111
繼續[y/n]?:n
程式結束!