天天看點

十進制到二進制轉換十進制到二進制轉換

十進制到二進制轉換

Description

進制轉換是計算機文化的基礎内容。

使用程式将進制進行轉換,可以考查你對進制轉換的掌握程度。

将一個任意位數的十進制數轉換為二進制數你能夠做到嗎?

Input

首先是一個正整數n(n<=100)表明本題有n個正整數需要轉換。

然後是n行資料,每行表示一個待轉換的正整數k(0〈K〈65536)。

Output

輸出n個轉換後的二進制數。

每行輸出1個。

Sample Input

3

5

12

34000

Sample Output

101

1100

1000010011010000

Code(C++):

#include <iostream>
using namespace std;
void fun(int n);
int main()
{
	int n,a[10000],i;
	cin>>n;
	for(i=0;i<n;i++)
	{
		cin>>a[i];
	}
	for(i=0;i<n;i++)
	{
		fun(a[i]);
		cout<<endl;
	}
	return 0;
} 
void fun(int n)
{
	if(n)
	{
		fun(n/2);
		cout<<n%2;	
	}	
}
           

Summary

原先沒有使用遞歸函數,直接以整型一次性輸出結果,當輸入資料較大時(如34000)會發生資料溢出,結果錯誤。

Expand

可使用C語言提供的itoa()函數,以字元串形式輸出所需進制資料。

itoa()函數有3個參數:第一個參數是要轉換的數字,第二個參數是要寫入轉換結果的目标字元串,第三個參數是轉移數字時所用 的基數。

#include <stdio.h>
#include <stdlib.h>
void main (void)
{
  int num = 34000;
  char str[100];
  itoa(num, str, 2);
  printf("%s\n" ,str);
 
}