#include<iostream.h> #include<math.h> void f1(int m, int n) { //转整数部分 if(m) {
f1(m/n,n); if(n<10) cout<<m%n; else m%n>=10? cout<<char(m%n-10+'A') :
cout<<m%n; } } void f2(double m, int n) { //转小数部分 while(m) { if(n<10)
cout<<int(m*n); else m*n>=10? cout<<char(int(m*n)-10+'A') : cout<<int(m*n); m =
m*n - int(m*n); } } void f(double m, int n) { f1(m, n); if(int(m) == m) return;
cout<<'.'; m -= int(m); f2(m, n); } void f10(char c[], double m) { cout<<'
'<<c<<" 转换成"<< 2<<"进制 = "; f(m, 2); cout<<endl; cout<<' '<<c<<" 转换成"<< 8<<"进制 =
"; f(m, 8); cout<<endl; cout<<' '<<c<<" 转换成"<<16<<"进制 = "; f(m,16); cout<<endl;
} double fn_10(char c[], int n) { char z[100]; int i = 0, j; double b = 0;
cout<<' '<<c<<" 转换成10进制 = "; while(*c != '.' && *c != '\0') z[i++] = *c++; i--;
if(*c == '\0') c--; for(j = 0; j <= i; j++) if(z[j] < 65) b += (z[j]-48) *
pow(n,i-j); else b += (z[j]-55) * pow(n,i-j); for(c++, j = -1; *c != '\0' ;
c++, j--) if(*c < 65) b += (*c-48) * pow(n,j); else b += (*c-55) * pow(n,j);
cout<<b<<endl; return b; } void main() { cout<<" 进制转换\n"; char c[100]; int n;
cout<<"\n 输入一数与它的进制: "; cin>>c>>n; cout<<endl; f10(c, fn_10(c,n)); }

十进制转换为二进制思想简述:

1.迭代到最底层,最底层的余数就是最高位,最底层没有余数;

2.依次往顶层递归,每一次的余数就是其底层的低位,其上层的高位;

3.一直回到顶层,取得所有的数据之后,逆序输出余数,即为进制转换之后的解。

技术
©2019-2020 Toolsou All rights reserved,
Chrome OS,对程序员和Windows意味着什么?,互联网营销C#中字典的排序方法face_recognition的5个应用实例精准手机号抓取,运营商大数据蚂蚁集团香港IPO获得中国证监会批准连硅谷都撑不住了?远程办公的技术人员可能被减薪创建数据mysql库流程访客手机抓取方法程序员python表白代码你不知道的鸿蒙——HarmonyOS