C++实现数字进制转换器

C++实现数字进制转换器

刷题中遇到一些进制转化的题目,由于从十进制转化为其他进制(十以内)方法完全相同,因此总结为一个进制转换器作为练习,当作一个练习记录。代码没有经过优化,请诸位大佬轻喷。

十进制转其他进制的原理很多博主介绍的非常详细,这里不再赘述了。代码如下

(在存储转换结果的时候,由于最终需要逆序输出,因此可以使用栈直接进行操作,更方便。这里使用的是较原始的数组)

#include <iostream>
using namespace std;
int main()
{
    int number;  //被转化的数字
    cout<<"输入要转换的数字 :";
    cin>>number;
    int jinzhi;   //设置转化为几进制,2进制就设置为2,3进制就设置为3 (特别注意:仅限10进制以下使用,即转换2-9进制有效)
    cout<<"输入转换为几进制 :";
    cin>>jinzhi;
    int mid_trans[100];   //暂时存储转换结果
    memset(mid_trans,-1,sizeof(mid_trans));   //初始化数组所有元素为-1
    int yu = number;
    int k=0;
    while(yu>=jinzhi)
    {
        mid_trans[k]=yu%jinzhi;  //将转换结果暂时保存在mid_trans数组中
        yu = yu/jinzhi;
        k++;
    }
    mid_trans[k]=yu;
    int Final[100];
    int jj=0;
    memset(Final, -1, sizeof(Final));
    for(int i=0;i<100;i++)    //将转化结果存放在最终结果数组中
    {
        if(mid_trans[i]!=-1)
        {
            Final[jj]=mid_trans[i];
            jj++;
        }
        else break;
    }
    cout<<"转化结果为:";
    for(int i=jj-1;i>=0;i--)   //逆序输出结果
    {
        cout<<Final[i]<<" ";
    }
    cout<<endl;
    return  0;
}

运行结果
在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这是一个不错的编程项目,需要掌握基本的C++编程知识以及Qt框架的使用。 以下是一些参考的实现思路: 1. GUI界面设计 推荐使用Qt来实现图形用户界面,可以通过Qt Creator来快速创建界面。主要需要设计输入框、输出框、转换按钮、历史记录等控件,并将它们进行布局。 2. 进制转换C++中,可以使用库函数`std::stoi`和`std::to_string`来实现字符串与数字之间的转换,例如: ```cpp std::string str = "123"; int num = std::stoi(str); // 将字符串转换为数字 std::string new_str = std::to_string(num); // 将数字转换为字符串 ``` 对于不同进制之间的转换,可以使用以下算法: - 二进制转换为十进制:将每一位乘以2的n次方后相加 - 八进制转换为十进制:将每一位乘以8的n次方后相加 - 十六进制转换为十进制:将每一位乘以16的n次方后相加 - 十进制转换为二进制:不断除以2,直到商为0,将每一步的余数倒序排列即可 - 十进制转换为八进制:不断除以8,直到商为0,将每一步的余数倒序排列即可 - 十进制转换为十六进制:不断除以16,直到商为0,将每一步的余数倒序排列即可 3. 历史记录 可以使用文件来保存历史记录,每次转换时将输入和输出记录到文件中。在界面中添加历史记录按钮,点击后可以显示之前的记录。 4. 转换结束后操作 在界面中添加重新输入按钮和下一步转换按钮,用户可以选择直接进行下一次转换,或者重新输入一个数进行转换。 以上是一个简单的实现思路,如果想要获得更高的分数,可以增加一些创新点,例如: - 支持更多进制之间的转换(如二进制与八进制之间的转换) - 支持浮点数的进制转换 - 支持同时转换多个数,将它们显示在同一个历史记录中 - 界面美化,增加动画效果等

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值