从低位向高位计算,例如 0.75[8] = ((5/8+7)/8)[10]
#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 1000;
char s[MAXN];
int ans[MAXN];
int main()
{
while (cin >> s)
{
memset(ans, 0, sizeof(ans));
int digit;
int j, k;
int num = 0; //十进制数的小数位数
int len = strlen(s);
for (int i = len - 1; i > 1; i--)
{
digit = s[i] - '0';
j = 0;
k = 0;
while (j < num || digit > 0)
{
digit = digit * 10 + ans[j++];
ans[k++] = digit / 8;
digit %= 8;
}
num = k;
}
cout << s << " [" << 8 << "] = 0.";
for (int i = 0; i < num; i++)
cout << ans[i];
cout << " [" << 10 << "]" << endl;
}
return 0;
}
继续加油。