通项公式: while(n!=0){ a[i]=n%d; n=(n/d); i++; } 其中n为要转换的十进制的数。d为要转换的数制,如二进制为2.
#include<iostream> using namespace std; int main() { int i,n,d,a[100];//n 为要转换的十进制数,d为要转为的数制 while(cin>>n>>d){ i=0; while(n!=0){ a[i]=n%d; n=(n/d); i++; } while(i--) cout<<a[i]; cout<<endl; } return 0; }缺点:因为数组a存放的是数字,上述代码只能转换小于10的数制。在16进制下,其实当a[i]的值为11时,我们只要建立一个映射就可以了,11对应输出B。可以建立另一个数组,将数组a作为下标。
改进:通用的的进制的转换(16以内):
#include<iostream> using namespace std; int main() { int i,n,d,k,a[100];//n 为要转换的十进制数,d为要转为的数制 char Hex[16] ; for(i=0;i<10;i++)Hex[i]='0'+i; for(i=10;i<16;i++)Hex[i]='A'+(i-10); while(cin>>n>>d){ i=0; while(n!=0){ a[i]=n%d; n=(n/d); i++; } while(i--){ k=a[i]; cout<<Hex[k]; } cout<<endl; } return 0; }