求十进制整数的任意进制转换

算法应该采用短除法

十进制:10 转换成 二进制:1010

 (第一次) 10%2 = 0 , 10/2 = 5

​ (第二次) 5 % 2 = 1 , 5/2 = 2

​ (第三次) 2 % 2 = 0 , 2/2 = 1

​ (第四次) 1 % 2 = 1 , 1/2 = 0
不难看出,短除算法计算的结果是从低位开始的(逆序的)

#include<iostream>
using namespace std;

void change(int a,int b)
{
    int i,cnt=0;       //cnt来数转换后的长度
    int number[500]={0};
    while(a)            //a为0时结束运算
    {
        number[cnt]=a%b;
        cnt++;
        a=a/b;
    }
    for(i=cnt-1;i>=0;i--)      //将转换后的结果逆序输出
    {
        cout<<number[i];
    }
}

int main()
{
    int x,n;
    cin>>x>>n;  //输入十进制整数和进制类型
    change(x,n);
    return 0;
}

 

猜你喜欢

转载自www.cnblogs.com/cyx-b/p/12816752.html
今日推荐