• C/C++语言100题练习计划 90——10 进制转 x 进制(进制转换实现)


    名人说:博学之,审问之,慎思之,明辨之,笃行之。——《中庸》
    进度:C/C++语言100题练习计划专栏,目前90/100

    🥇C/C++语言100题练习专栏计划目的:巩固练习C/C++语言,增强上机、动手实践能力,交流学习!

    一、问题呈现

    1.问题描述

    Problem Description

    给定一个十进制整数 n n n 和一个小整数 x x x。将整数 n n n 转为 x x x 进制。对于超过十进制的数码,用 AB … 表示。

    2.输入输出

    Input

    第一行一个整数 n n n
    第二行一个整数 x x x

    Output
    输出仅包含一个整数,表示答案。

    3.测试样例

    Sample Input

    1000
    2
    
    • 1
    • 2

    Sample Output

    1111101000
    
    • 1

    ★提示:

    【数据规模和约定】
    保证 n n n 不超过 1 0 9 10^9 109 x x x 不超过 36 36 36

    二、源码实现

    #include
    #include
    #include
    typedef long long ll;//定义long long类型为ll
    using namespace std;
    string c="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//存数
    
    void f(ll x,ll m)
    {
    	if(x/m)
    		f(x/m,m);//递归
    	cout<<c[x%m];//输出进制转换后的值
    }
    
    int main()
    {
    	ll n,x;
    	//输入十进制整数n和小整数x
    	cin>>n>>x;
    	if(x==0)
    	{
    		puts("0");
    		return 1;
    	}
    	f(n,x);
    	cout<<endl;
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    ★关于本题思路及进制转换方法

    1、本题思路简述

    题意给定一个十进制整数 n n n 和一个小整数 x x x。将整数 n n n 转为 x x x 进制。对于超过十进制的数码,用 AB … 表示。
    从问题描述来看,要使用进制转换相关知识进行求解
    进制转换,肯定要讲一下短除法。就是每次看余数并做除法。
    比如 10 转换 2 进制。
    13 mod 2=1
    6 mod 2=0
    3mod2=1
    1mod2=1
    最后倒序枚举余数即可。
    那么,我们可以有两种方案,递归和存数组。
    存数组,字面意思,把余数存下来,最后翻转,输出。
    递归,每次准备着输出数,但先递归后面的余数,最后返回来输出。
    以上代码实现使用的是递归,看到这里的小伙伴可以尝试存数组的方式。

    2、进制转换举例

    1️⃣十进制--->二进制

    在这里插入图片描述
    (图片原图来源网络,二次创作,侵删)

    2️⃣十进制-->八进制

    10进制数转换成8进制的方法,和转换为2进制的方法类似,唯一变化:除数由2变成8。
    来看一个例子,如何将十进制数120转换成八进制数。
    用表格表示:
    在这里插入图片描述
    120转换为8进制,结果为:170。

    等等…这些进制转换方法可能不唯一,但是用这种方法去实现都是类似的。

    三、测试结果

    1000
    2
    1111101000
    
    --------------------------------
    Process exited after 3.239 seconds with return value 0
    请按任意键继续. . .
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder)
    如果对大家有帮助的话,希望大家能多多点赞+关注!这样我动力会更足哦! ღ( ´・ᴗ・` )比心

  • 相关阅读:
    文件包含漏洞
    代码随想录算法训练营第六天 |18. 四数之和、344.反转字符串、541. 反转字符串II
    如何把PDF转换成Word文档?给大家分享三种转换方法
    以报时机器人为例详细介绍tracker_store和event_broker
    Kubernetes 基于 helm 部署高可用 harbor
    【从零开始学习 SystemVerilog】6.1、SystemVerilog 接口—— Interface 概述
    C#开发的OpenRA游戏之雷达地图
    《剑指 Offer》专项突破版 - 面试题 47 : 二叉树剪枝(C++ 实现)
    DOM系列之创建元素
    【进阶玩法】策略+责任链+组合实现合同签章
  • 原文地址:https://blog.csdn.net/qq_51646682/article/details/126841521