C語言實現十進位制轉換為二進位制
/*
* 檔名:二進位制轉換.c
* 功能描述:把10進位制數轉換為二進位制數
* 編寫人:王廷雲
* 編寫日期:2017-1-10
*/
#include <stdio.h>
#define NR (sizeof(int)*8) // 二進位制位的個數
void deciToBin(int num); // 十進位制轉換為二進位制函式宣告
/* 主函式 */
int main(void)
{
int num;
fprintf(stdout, "請輸入一個正整數:");
/* 獲取並檢查使用者輸入 */
while (1)
{
if (fscanf(stdin, "%d", &num) != 1)
{
fprintf(stderr, "輸入錯誤!請重新輸入:");
while (getchar() != '\n'); // 去掉多餘的非法字元
continue;
}
else if (num < 0) // 輸入的數不能為負數
{
fprintf(stderr, "請輸入錯誤!請輸入正整數:");
continue ;
}
else
break;
}
fprintf(stdout, "對應二進位制為:");
#if 1 /* 方法一: 不使用遞迴 */
char bitArr[NR];
int i = -1;
/* 演算法:棧的數學模型 */
do {
i += 1;
bitArr[i] = num % 2;
num /= 2;
} while (num != 0);
/* 逆序列印 */
for (i ; i >= 0; i--)
{
fprintf(stdout, "%d", bitArr[i]);
}
fputc('\n', stdout);
#else /* 方法二: 使用遞迴 */
if (num == 0)
{
fprintf(stdout, "0\n");
}
else
{
deciToBin(num); // 呼叫第歸函式
fputc('\n', stdout);
}
#endif
return 0;
}
/*
* @函式名:deciToBin
* @函式功能:實現十進位制轉換為二進位制
* @引數:需要轉換的十進位制整數
*/
void deciToBin(int num)
{
/* 第歸結束條件 */
if (num == 0)
{
return;
}
/* 第歸呼叫 */
deciToBin(num/2);
/* 逆序列印 */
fprintf(stdout, "%d", num%2);
}
相關推薦
C語言實現十進位制轉換為二進位制
/* * 檔名:二進位制轉換.c * 功能描述:把10進位制數轉換為二進位制數 * 編寫人:王廷雲 * 編寫日期:2017-1-10 */ #include <stdio.h> #
C語言實現十進位制轉換成二進位制
#include<stdio.h> //現定義一個數組,然後把用2整除這個數,得到商和餘數,再用商繼續除以2,直到值為0結束迴圈, //然後把這些餘數放在陣列中,輸出即可; int main() { int n ,temp,s[100],i=0;printf(
用C語言程式實現十進位制轉換為二進位制
題目: 寫一個函式,輸入一個10進位制數,輸出它的2進位制,例如:輸入9,輸出1001 思路: 十進位制數轉換為其他進位制時,轉換成幾進位制就除以幾進位制求餘。 程式碼: #include "stdio.h" #define N 100 int main() {
用位運算實現十進位制轉換為二進位制
程式碼如下: 1 #include <iostream> //將十進位制數轉化為二進位制數,位運算的取位操作 2 using namespace std; 3 int main() 4 { 5 unsigned short i; 6
C語言實現十進位制數轉二進位制數的演算法
因為C語言的printf函式的格式化輸出只支援八進位制和十六進位制的輸出,所以二進位制需要自己實現。 這其中有幾個難點,一是演算法,二是資料結構。可以用二不斷除被除數取餘數,倒序輸出,還可以像我這麼想,用位運算和移位操作進行輸出,因為本身在記憶體中就是二級制的形式存放的,可
C++實現十進位制轉換為任意進位制
十進位制數在C++中用什麼表示? 一個十進位制數,在程式中用什麼方式轉換為其他進位制,和在數學中的思路一樣嗎?? 輸出的結果用什麼表示比較方便? 下面的程式中digit思考為什麼要用靜態變數? #include <iostream> #include <
C語言實現十進位制轉二進位制
程式碼如下: # include <stdio.h> int main() { int i, n = 0, b[16]; scanf("%d", &i);
將十進位制轉換為二進位制、八進位制、十六進位制
將十進位制轉換為其它進位制時比較複雜,整數部分和小數部分的演算法不一樣。 1) 整數部分 十進位制整數轉換為 N 進位制整數採用“除 N 取餘,逆序排列”法。具體做法是: 將 N 作為除數,用十進位制整數除以 N,可以得到一個商和餘數; 保留餘數,用商繼續除以 N,又得到一個新的商和餘數;
Python 十進位制轉換為二進位制 高位補零
這裡需要使用內建函式''.format() 高位補零 >>> a = 2 >>> b = '{:08b}'.format(a) 輸出結果為八位二進位制,且高位補零。 高位不補零 >>> b = '{:8b}'.for
Python下十進位制轉換為二進位制
前兩天,在讀高中的姨弟找我,說他資訊考試有一道題不會,要在Python下把十進位制轉換為二進位制,問我會不會,我沒學過Python,C只學會了皮毛,靠著一丁點對程式設計的瞭解,網上查了查,總算拼湊出來了。PS:Python下是有現成函式的,只不過不符合題目要求,所以沒用程式碼
C語言中將數字轉換為字串的方法
C語言提供了幾個標準庫函式,可以將任意型別(整型、長整型、浮點型等)的數字轉換為字串。以下是用itoa()函式將整數轉換為字串的一個例子: # include <stdio. h> # include <stdlib. h> void main (vo
使用移位操作、位與操作把十進位制轉換為二進位制
針對上篇文章c++的寫法,改寫成java的寫法,測試發現有下面兩種,但是現在我還不能完全理解,暫時記錄,後面理解後再詳細註解。 public class BaseTest { public stat
c語言time(0)轉換為當前時間
時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數 在C語言中可以通過time()函式獲取到當前的秒數 引數為0則函式返
C/C++語言實現十進位制正整數轉化為2-16進位制的數並輸出
<h3>/<span style="font-size:18px;">/將一個十進位制的正整數轉化為H進位制並輸出--拓展 在此先研究對於正整數的進位制轉換 以及2-16的進位制與十進位制的轉換 #include <IOSTREAM> using namespace s
資料結構|用棧實現十進位制轉換成二進位制(實驗3.5)
一、實驗目的 1、熟練掌棧的結構特點,掌握棧的順序儲存結構和實現。 2、學會使用棧解決實際問題。 二、實驗內容 1、自己確定結點的具體資料型別和問題規模,建立一個順序棧,實現棧的壓棧和出棧操作。 三、實驗步驟 1、依據實驗內容分別說明實驗程式中用到的資料型別的
用c語言實現輸入和為n的迴文數
#include<stdio.h> int main() { int a,b,c,d,e,f,n; scanf("%d",&n); if(1<=n<=54) { f
用遞迴函式實現十進位制轉換為十六進位制輸出
遞迴函式的定義,不應出現無終止的遞迴呼叫。而應定義為有限次數、有終止的遞迴呼叫函式。 對於一個問題,只要能夠知道遞迴定義式,及邊界條件(即遞迴終止的條件),就可以編寫一個遞迴函式。 #include <stdio.h> #define BASE
C語言實現1個無符號整型的十進位制數,按照要求轉換為二進位制並輸出
輸入1個無符號整型的十進位制數,將其轉換成二進位制,並輸出。(6分) 題目內容: 從鍵盤輸入1個小於65536的無符號整型的十進位制數,將其轉換成二進位制,並輸出。 具體要求完成的功能如下: 1)如輸入負數,則顯示 “請輸入非負數” 2)如超過65535,則顯示
c語言實現二進位制數轉換為十進位制
// 二進位制轉十進位制.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "stdio.h" int xn(int num,int n)//
二十四進制編碼串轉換為32位無符號整數(C語言實現)
bool while open 參數錯誤 hint div 第一個字符 bsp opened typedef int BOOL; #define TRUE 1; #define FALSE 0; #define UINT_MAX 0xffffffff