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;
}

代码解析

  1. 定义字符数组hexChars: 用于存储16进制的字符,方便后续将余数转换为对应的字符。
  2. convertToM函数: 该函数用于实现十进制到m进制的转换。
    • 处理num为0和num为负数的特殊情况。
    • 使用循环不断取余数,并将余数添加到结果字符串中。
    • 如果m为16,则将余数转换为对应的16进制字符,否则直接转换为字符串。
  3. main函数: 从标准输入读取十进制数和目标进制,调用convertToM函数进行转换,最后将结果输出到标准输出。

总结

本文介绍了使用C++实现十进制到二进制、八进制、十进制、十六进制的转换,并给出了相应的代码实现和解析。通过学习本篇文章,你可以了解如何使用C++进行进制转换,以及如何处理特殊情况。希望本篇文章对你有所帮助!

C++进制转换计算器:不用vector实现十进制到二进制、八进制、十进制、十六进制转换

原文地址: https://www.cveoy.top/t/topic/qCd0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录