【PTA代码+图示】10进制转换成16进制 (堆栈操作)

简介: 【PTA代码+图示】10进制转换成16进制 (堆栈操作)

【PTA代码+图示】10进制转换成16进制 (堆栈操作)


💗题目 :

要求实现十进制(正整数)到十六进制的转换,用户输入10进制的数,要求输出该数的16进制表示

注意: 要求输出的英文字母全部都是大写


💗思路 :

十六进制是一种基数为16的数制,其中0到9的数字与A到F的字母表示10到15。

我们可以采用余数法来将10进制正整数转换成16进制,我们选择 栈数据结构 来作为容器.


💗步骤 :

  1. 循环取余: 首先,我们初始化一个栈(Stack),然后进入一个循环,直到输入的十进制数 n 变为0。
  2. 余数计算: 在每次循环中,计算 n 除以16的余数,这个余数表示十六进制中的一个位。余数的范围是0到15。
  3. 将余数入栈: 将余数(0到15之间的整数)入栈,即使用 push 方法将余数添加到栈中。
  4. 整除: 然后,将 n 除以16,以准备进行下一次循环。这相当于将 n 右移4位。
  5. 取出栈顶元素: 循环结束后,堆栈中将包含十六进制数的各个位(从低位到高位)。我们从堆栈中弹出这些位。
  6. 十进制转十六进制: 对于每个弹出的位,如果它小于10,就将其打印为数字;如果大于等于10,就将其转换为十六进制字母,例如’A’到’F’。
  7. 打印: 最后,打印这些数字和字母,从低位到高位,以获得输入十进制数的十六进制表示。

💗图解 :

💗代码 :

package day04;
import java.util.Scanner;
import java.util.Stack;
public class Test01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个十进制的正整数:");
        int n = scanner.nextInt();
        hexConversion(n);
    }
    public static  void hexConversion( int n){
        Stack stack = new Stack();
        //循环取余
        while(n!=0){
            int remainder = n % 16;
            stack.push(remainder);//压栈
            n/=16;
        }
        //进制转换->输出
        while(!stack.empty()){
            int digit = (int)stack.pop();
            if (digit<10){
                System.out.print(digit);
            }else{
                char hexChar = (char) ('A' + (digit - 10));
                System.out.print(hexChar);
            }
        }
    }
}

💗结果 :


💕求三连!!!

目录
相关文章
|
6月前
|
C语言
c语言编程练习题:7-50 输出华氏-摄氏温度转换表
c语言编程练习题:7-50 输出华氏-摄氏温度转换表
79 0
|
6月前
|
机器学习/深度学习 编译器 C语言
【C语言】数据输出的域宽控制(如何在输出数据时控制0占位)(如何输出前导0)(保留几位小数)(乘法口诀表打印不齐)等问题
【C语言】数据输出的域宽控制(如何在输出数据时控制0占位)(如何输出前导0)(保留几位小数)(乘法口诀表打印不齐)等问题
107 0
C语言:十进制、BCD码互换
C语言:十进制、BCD码互换
C语言:十进制、BCD码互换
|
5月前
|
C语言
C语言---二进制位置0或者置1
C语言---二进制位置0或者置1
|
11月前
|
C语言
C语言第三十二弹---打印整数二进制的奇数位和偶数位
C语言第三十二弹---打印整数二进制的奇数位和偶数位
|
11月前
|
C语言
C语言第三十弹---打印一个整数的每一位数
C语言第三十弹---打印一个整数的每一位数
|
算法 测试技术 C++
剑指offer(C++)-JZ20:表示数值的字符串(算法-模拟)
剑指offer(C++)-JZ20:表示数值的字符串(算法-模拟)
C语言和栈的基本操作实现进制数的转换
C语言和栈的基本操作实现进制数的转换
|
C语言
C语言:写一个代码,使用 试除法 打印100~200之间的素数(质数)-2
思路二: 总体思路: 因为偶数除了 2 都不是素数,且题目范围中没有 2 , 所以可以只生成 100~200 之间的奇数,可以排除一半的数字, 效率提升一倍。
118 0
|
C语言
C语言:写一个代码,使用 试除法 打印100~200之间的素数(质数)-1
思路一:使用试除法 总体思路: (一). 使用外循环:生成 100~200 之间的数。 (二). 设置内循环:生成 2 ~ i-1 的数。
125 0