- 题目描述:
输入一个十进制数N,将它转换成R进制数输出。
- 思路:
通过对n以m为模取余的方式,获得m进制下n的每一位数。
- 细节:
首先是n的正负讨论,再者是余数大于等于10的情况,最后是若m大于10应以字符数组来储存数据。
- 源代码:
#include<iostream> #include<cmath> using namespace std; int main() { int n,r; int a[10000]; char b[10000]; while(cin>>n>>r) { int t=0,i=0,j; int k=abs((double)n); if(r<10) { while(k!=0) { t=k%r; a[i]=t; i++; k=k/r; } if(n>0) { for(j=i-1;j>=0;j--) cout<<a[j]; cout<<endl; } if(n<0) { a[i-1]=a[i-1]*(-1); for(j=i-1;j>=0;j--) cout<<a[j]; cout<<endl; } } if(r>10) { while(k!=0) { t=k%r; if(t>9) { if(t==10) b[i]='A'; if(t==11) b[i]='B'; if(t==12) b[i]='C'; if(t==13) b[i]='D'; if(t==14) b[i]='E'; if(t==15) b[i]='F'; } else { b[i]=t+48; } i++; k=k/r; } if(n>0) { for(j=i-1;j>=0;j--) cout<<b[j]; cout<<endl; } if(n<0) { cout<<"-"; for(j=i-1;j>=0;j--) cout<<b[j]; cout<<endl; } } } }