通过算法·实现任意进制之间的转换
?这里 我们 采取 递归 实现 本次操作处理 因为最后要倒序排列的操作处理
所以我们采取递归的操作处理 每次/2 之后再次进入递归之后直到最后一个位置
这个需要大家对递归有一定理解
10进制转2进制
void binary_(int n)
{
if (n / 2)
{
binary_(n / 2);//只要这个数字大于2就可以继续除
printf("%d", n % 2);
}
else
{
printf("%d", n);
}
}
int main()
{
//任意进制的转换 10转2进制
int n;
cin >> n;
binary_(n);
return 0;
}
二进制转10进制
需要函数包装实现操作处理
int f(int n)
{
int i = 0;
int sum = 0;
int k = 0;
while (n)
{
k = n % 10;
n = n / 10;
sum = sum +k* pow(2, i);//不同的次方
i++;
}
return sum;
}
int main()
{
int n = 0;
int m = 0;
cin >> n;
m = f(n);
cout << m << endl;
}
然后我们要做到任意进制的转换实现
10进制转8进制
10进制转7进制
10进制转6进制
只需要换成 m就可以
void binary_(int n)
{
if (n / 2)
{
binary_(n / 2);//只要这个数字 这里可以直接除以m m就可以直接除以任意
printf("%d", n % 2);//直接 除以m m可以换成任意数据 只要是数据就可以
}
else
{
printf("%d", n);
}
}
int main()
{
//任意进制的转换
int n;
cin >> n;
binary_(n);
return 0;
}
int f(int n)
{
int i = 0;
int sum = 0;
int k = 0;
while (n)
{
k = n % 10;
n = n / 10;
sum = sum +k* pow(m, i);//不同的次方 这里写成 m 就可以因为我们是为了次方的不同8就代表是8的幂次方 由于我们写的都是10次方只不过是我们自己克制自己以8进制去书写而已 所以还得这样操作 8进制转2进制 我们先转换成10进制 然后10进制转成2进制就好了
i++;
}
return sum;
}
int main()
{
int n = 0;
int m = 0;
cin >> n;
m = f(n);
cout << m << endl;
}
|