数制转换 九度教程第44题 a进制数转换为b进制数 不同进制之间相互转换
程序员文章站
2022-03-13 12:09:59
...
题目链接
解题思路:
1、将a进制数转换成十进制数;
2、将十进制数转换成b进制数;
3、使用do while 循环,可以确保即使被转换数字是 0 ,程序也能正常工作。
AC代码:
#include<iostream>
#include<string.h>
using namespace std;
char ans[50];
int main() {
int a, b;
long long tmp;
char n[50];
while (cin >> a >> n >> b) {
tmp = 0;//保存转换之后的十进制数
int x = 0;
int weight = 1;//保存权重
int len = strlen(n);
for (int i = len-1; i >= 0; i--) {//倒序遍历
if (n[i] >= '0' && n[i] <= '9') {
x = n[i] - '0';
}
else if (n[i] >= 'a' && n[i] <= 'z') {
x = n[i] - 'a' + 10;
}
else if (n[i] >= 'A' && n[i] <= 'Z') {
x = n[i] - 'A' + 10;
}
tmp += x * weight;
weight *= a;
}
int time = 0;//保存结果字符串的长度
int panduan;
do {//使用do while 循环
panduan = tmp % b;
if (panduan > 9) {
ans[time++] = panduan - 10 + 'A';
}
else {
ans[time++] = panduan + '0';
}
tmp /= b;
} while (tmp > 0);
for (int i = time - 1; i >= 0; i--) {
cout << ans[i];
}
cout << endl;
}
}
上一篇: 泛型知识点