进制转换问题
输入一个n进制数s,将其从n进制转换为m进制,并将转换后的数输出。
对于我来说是还债题 (因为不知道拖了多长时间了)。以前一直觉得麻烦,现在想想也还好。主要是注意数字s一定要用字符串存储(可能就是之前不会string才拖着的)
话不多说,直接上代码
// 进制转换.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include <algorithm>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <cmath>
using namespace std;
int n, m, num = 0, sum = 0, counts;
string s;
int num_change[10000];
int main()
{
cout << "输入需要转化的数字:" << endl;
cin >> s;
cout << "输入原进制:" << endl;
cin >> n;
cout << "输入目的进制:" << endl;
cin >> m;
for (int i = 0; i < s.size(); i++)
{
if (s[i] < 'A')
{
num = pow(n, s.size() - i - 1);
num *= s[i] - '0';
sum += num;
}
else if (s[i] >= 'A')
{
num = pow(n, s.size() - 1 - i);
num *= s[i] - 'A' + 10;
sum += num;
}
}
while (sum > 0)
{
num_change[counts++] = sum % m;
sum /= m;
}
cout << "转换为" << m << "进制为: " << endl;
for (int i = counts - 1; i >= 0; i--)
{
if (num_change[i] > 10) printf("%c", num_change[i] - 10 + 'A');
else printf("%d", num_change[i]);
}
cout << endl;
return 0;
}
运行结果
0 条评论