編寫一個算法,將一個非負的十進制整數N轉換為另一個基數為B的B進制整數。
#include <iostream>
#include<string.h>
using namespace std;
//所要的十進制轉B進制的函數
void shift(int B,int before)
{
char B_num[B];
if(B<10){for(int i=0;i<B;i++)B_num[i]=i+48;}
else
{
for(int i=0;i<B;i++)B_num[i]=i+48;
for(int j=10;j<B;j++)B_num[j]='A'+j-10;
}//定義好大於10的各個位置表示符號
string result="";
int n;int m;
while(before>=B)
{
n=before/B;
m=before%B;
result+=B_num[m];
before=n;
}
result+=B_num[n];
cout<<"轉換成功,結果是:"<<endl;
for(int i=result.length()-1;i>=0;i--)cout<<result[i];
cout<<endl;
}
int main()
{
L:int num;int B;
cout<<"要將十進制數轉換為多少進制的數?"<<endl;
cin>>B;
cout<<"請輸入原始的數據"<<endl;
cin>>num;
shift(B,num);
goto L;
return 0;
}
實驗結果截圖如下: