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

算法应该采用短除法

十进制: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;
}

 

 

posted @ 2020-05-02 08:26  chuyaoxin  阅读(806)  评论(0编辑  收藏  举报