栈实现任意进制转换
还可以通过数组、字符串常量实现。
不多说,看代码。如下:
在这里插入代#include <iostream>
#include <cstdio>
#include <stack>
using namespace std;
int main()
{
stack<char> s;
int mod,value,base;
scanf("%d,%d",&value,&base);//输入要转换的数以及要进制
while(value)
{
mod=value%base;
if(mod<10)
s.push(mod+'0');
else
s.push((mod-10)+'A');
value/=base;
}
printf("0x");//16进制位0x
while(!s.empty())
{
printf("%c",s.top());
s.pop();
}
return 0;
}
附加:求一个数的各个位数之和
int ConvSum(int m,int base)
{
int sum=0;
while(m)
{
sum+=m%base;
m/=base;
}
return sum;
}
`