1. 程式人生 > >Linux下的c基礎程式設計——十進位制轉二進位制(遞迴法)

Linux下的c基礎程式設計——十進位制轉二進位制(遞迴法)

今天我們來用遞迴法寫一個十進位制轉二進位制的小程式。

首先大家要明白十進位制轉二進位制的演算法。

第一步先對2進行取餘。餘數就是二進位制的最後一位。

第二步對2進行整除所得的數再進行對2取餘

第三步用遞迴迴圈往復以上過程。

例如求5的二進位制。

5先對2取餘,餘1,最後一位就是1.然後5/2等於2,再對而進行取餘,餘0,倒數第二位就是0。然後2/2等於1,1再對2取餘,餘1,所以5的二進位制就是101.

下面附上我的程式碼,如有不合理的地方請指正!

#include <stdio.h>

void to_binary(int n)
{
	int r;

	r = n % 2;

	if(n >= 2)
	{
		to_binary(n/2);
	}

	putchar('0' + r);

	return;
}

int main()
{
	int n;

	printf("enter a number(q to quit)!\n");

	while((scanf("%d",&n)) == 1)
	{	
		printf("Binary equivalent:");
		to_binary(n);

		printf("\n");
		printf("enter a number(q to quit):\n");
	}
    return 0;
}

下面附上我的執行截圖


相關推薦

Linuxc基礎程式設計——十進位制二進位制

今天我們來用遞迴法寫一個十進位制轉二進位制的小程式。 首先大家要明白十進位制轉二進位制的演算法。 第一步先對2進行取餘。餘數就是二進位制的最後一位。 第二步對2進行整除所得的數再進行對2取餘 第三步用遞迴迴圈往復以上過程。 例如求5的二進位制。 5先對2取餘,餘1,最後一位

C語言 十進位制二進位制 使用

decimalToBinary.c: #include<stdio.h> void decimalToBinary(int n); void main() { int n;

二進位制十進位制十進位制二進位制百度經驗

 轉成二進位制主要有以下幾種:正整數轉二進位制,負整數轉二進位制,小數轉二進位制; 1、  正整數轉成二進位制。要點一定一定要記住哈:除二取餘,然後倒序排列,高位補零。         也就是說,將正的十進位制數除以二,得到的商再除

Java十進位制二進位制演算法

用遞迴演算法求一個int的二進位制字串; 思路是:遞迴最簡單情況(遞迴出口)是0和1;其餘的是先呼叫遞迴算出n/2的二進位制字串,然後加上n時的位數(n % 2)。 import java.util

C++資料結構4 二分查詢方法

二分查詢比順序查詢效率高很多 同樣的100萬個資料,順序查詢需要50萬次,而二分查詢需要20次左右既可以了。但是二分查詢需要的資料是已經排列好的,無序的資料則用不了二分查詢。 #include &l

C語言-求數字階乘函式

/* * C語言 求數字的階乘 */ #include <stdio.h> #include <stdlib.h> long jiecheng(int n); void main() { int n=0; pri

linuxC語言程式設計解決warning : incompatible implicit declaration of built-in function問題

         在C語言程式設計過程中,偶遇如下warning,雖然並不影響最終的編譯結果,但是看著warning也很無語,畢竟強迫症。        我們可以發現被警告沒有宣告的都是常用

linuxC語言程式設計操作MySQL資料庫

原文地址:http://www.2cto.com/database/201506/407827.html 在實際應用中,我們不可能在命令列登入進資料庫進行資料的查詢、插入等操作,使用者一般是使用一個介面良好的應用程式軟體來對資料進行管理。為了方便應用程式的開發,MySQ

linuxC語言程式設計日誌1:基於TCP協議的伺服器/客戶端程式

  基於TCP協議的伺服器/客戶端程式  首先我們看一下使用TCP協議進行網路通訊的程式基本模型:伺服器首先進行初始化操作:呼叫函式socket建立一個套接字,函式bind將這個套接字與伺服器的公認地址繫結在一起,函式listen將這個套接字換成傾聽套接字,然後呼叫函式acc

十進位制二進位制C++

除二取餘法 相信大家應該都知道,十進位制轉k進位制的方法常用的就是除k取餘的方法,這裡針對這個方法,給出了C++的程式碼。需要注意的是,除二取餘的方法,對於餘數的選取是從後往前取的,所以在程式碼中,也要解決這個問題才行。 思路分析  模仿不停地除2的過程,每次除2之後用

linux C語言程式設計2——程序的建立,掛起,解掛,程序間通訊

在 linux 下利用C語言實現程序的建立,掛起和解掛操作 #include <stdio.h> #include <sys/stat.h> #include <sy

C++/C語言中十進位制二進位制的常見方法

        用一個演算法實現十進位制數向二進位制數轉換,我們考慮得到7的二進位制表示,奇數的二進位制形式最後一位肯定是1,而偶數的二進位制最後一位肯定是0。可以通過7%2來計算二進位制最後一位數是0或者1。即對於十進位制整數n而言,二進位制表示的最後一位肯定可以用n%2計

Linux C 網路程式設計之 多執行緒通訊 例項

簡單示例,有不對的地方,歡迎指點。 伺服器端 /* ============================================================================ Name : sockThreadServer

C語言實現十進位制二進位制

程式碼如下: # include <stdio.h> int main() { int i, n = 0, b[16]; scanf("%d", &i);

JS十進位制二進位制控制位數

主要需求:十進位制轉二進位制,控制指定的位數。 轉化顯示後的二進位制數為bin-bit中輸入的數字寬度。dec-number為5,bin-bit為5,則轉化後數字為00101。如果bin-bit小於轉化後的二進位制本身位數,則使用原本的位數,如dec-number為5,bin-bit為2,依然輸出101,但

黑馬《linux基礎程式設計》學習筆記81到84

八十一. lstat和stat函式的區別  八十二. 檔案屬性相關的函式  首先是access.c #include <stdio.h> #include <stdlib.h> #include <unistd.h>

黑馬《linux基礎程式設計》學習筆記76到80

七十六. 非阻塞讀終端 #include <unistd.h> #include <fcntl.h> #include <errno.h> #include <string.h> #include <stdlib.h> #include

Linux由域名程式設計解析ip地址 段錯誤(吐核)

#include<stdio.h> #include<sys/socket.h> //提供socket函式及資料結構 #include<netdb.h> //提供設定及獲取域名的函式 int main(int argc,char *arg

Linux解壓分包文件zipzip/z01/z02

.com blank linu clas question multiple 壓縮 linux 方法 分包壓縮的zip文件不能被7z解壓,且這種格式是Windows才能創建出來,在Linux下不會以這種方式去壓包。下面是在Linux下處理這種文件的做法: 方法一:

ubuntuc語言對mysql進行CRUD增刪改查

Step 1:登入mysql mysql -u root -p Step 2:在資料庫中新增資料: create database foo; use foo; CREATE TABLE children( childno int(11) NOT NULL