#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)); }
浮点数转化为 2,8,16进制的数
最新推荐文章于 2023-02-27 10:41:42 发布