一般我们求的较多的就是十进制转二进制,八进制,十六进制,这样的转换我们只需要不断的取余即可,然后输出 附上代码: #include<iostream> using namespace std; int main() { char A[]={'A','B','C','D','E','F','G','H','I','J'}; int N,R;//N代表要转换的数,R代表要转换成R进制; cin>>N>>R;//R为正 int B[1000]; cout<<N<<"="; int x=0; while(N!=0) { B[x]=N%R; N/=R; x++; } x--; for(int i=x;i>=0;i--)//倒叙输出 { if(B[i]>=10) cout<<A[B[i]-10];//超出10,用字母表示 else cout<<B[i]; } cout<<"(base"<<R<<")"; return 0; } 然而出了将一个数转换为正进制数,我们还有将一个数转换为负进制数。遇到了负进制数,我们取余的时候余数会出现负的情况。 我们就要处理这个负数的情况。 我们可以经过以下的变换: N/R=B.....X: N是被除数,R是除数(R为负数),B是商,X是余数。 B*R+X=N : B*R+X-R+R=N: (B+1)*R+X-R=N: 经过这样的变换之后那么X-R就是正数了