十進制到二進制轉換
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);
}