C++进制转换计算器:不用vector实现十进制到二进制、八进制、十进制、十六进制转换
C++进制转换计算器:不用vector实现十进制到二进制、八进制、十进制、十六进制转换
学完进制转换之后,小明同学发现每次手动计算都很麻烦,于是他想利用编程知识来实现一个进制转换计算器。他将他的思路列了出来:输入一个十进制整数,将其转换成m进制数输出。但是小明的技术有限,于是他想请你来帮他实现。
题目描述
输入描述 输入包括一行,包含两个整数,第一个为十进制数,第二个为m
输出描述 输出一行,表示转换后的m进制数
样例1 输入
10 2
输出
1010
提示 该数为int范围内的非负整数,m仅包含2 8 10 16
代码实现
#include <iostream>
#include <string>
using namespace std;
// 定义字符数组,用于存储16进制的字符
char hexChars[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
// 十进制转换为m进制的函数
string convertToM(int num, int m) {
string result;
// 处理特殊情况,如果num为0,则直接返回'0'
if (num == 0) {
return '0';
}
// 处理负数的情况,将num取绝对值,结果加上负号
if (num < 0) {
result += '-';
num = -num;
}
// 不断取余数,将余数添加到结果中,直到num为0
while (num > 0) {
int remainder = num % m;
// 如果m为16,将余数转换为对应的16进制字符
if (m == 16) {
result = hexChars[remainder] + result;
} else {
result = to_string(remainder) + result;
}
num /= m;
}
return result;
}
int main() {
int num, m;
cin >> num >> m;
string result = convertToM(num, m);
cout << result << endl;
return 0;
}
代码解析
- 定义字符数组hexChars: 用于存储16进制的字符,方便后续将余数转换为对应的字符。
- convertToM函数: 该函数用于实现十进制到m进制的转换。
- 处理num为0和num为负数的特殊情况。
- 使用循环不断取余数,并将余数添加到结果字符串中。
- 如果m为16,则将余数转换为对应的16进制字符,否则直接转换为字符串。
- main函数: 从标准输入读取十进制数和目标进制,调用convertToM函数进行转换,最后将结果输出到标准输出。
总结
本文介绍了使用C++实现十进制到二进制、八进制、十进制、十六进制的转换,并给出了相应的代码实现和解析。通过学习本篇文章,你可以了解如何使用C++进行进制转换,以及如何处理特殊情况。希望本篇文章对你有所帮助!
原文地址: https://www.cveoy.top/t/topic/qCd0 著作权归作者所有。请勿转载和采集!