C語言 十進位制轉二進位制 使用遞迴
阿新 • • 發佈:2019-01-31
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
程式結束!