然后把正整数转为二进制八进制十六进制

一、正整数的转换介绍?

正整数换为二进制是不断求余数和整除的

例如:正整数转为二进制

          10%2=0,0进入栈里,10/2=5

           5%2=1,1进入栈里,5/2=2

           2%2=1,1进入栈里,2/2=1

          1%2=1;1进入栈里,1/2=0

例如:正整数转为八进制

          10%8=2,2进入栈里,10/8=1

           1%8=1,1进入栈里,1/8=0

正整数转为十六进制时余数大于10是字母abcde

对应ASCLL码表,当把余数大于10时减去11加上‘a'用整数来入栈

出栈时在用char类型来接收,用(char)来强制转换

例如:   int a1;

            13%16=13,a1=13-11+’a',a1来入栈

            char val=char(a1),把a1打印出来

二、使用步骤

1.用的头文件

代码如下(示例):

#include<stdio.h>
using namespace std;
#include<iostream>
#include<stdlib.h>
#include<assert.h>

2.读入数据

代码如下:

 
#include<stdio.h>
using namespace std;
#include<iostream>
#include<stdlib.h>
#include<assert.h>
#ifndef STACK_H
#define STACK_H
typedef int Type;
#define STACK_SIZE 10//栈的最大大小
typedef struct Stack//栈的结构体声明
{
    //数据域
    Type data[STACK_SIZE];
    //栈顶元素下标
    int top;
}stack;
//栈的函数功能声明
//栈的初始化
stack* stack_init();
//入栈
void stack_push(stack* st, Type val);
//出栈
void stack_pop(stack* st);
//获取栈顶元素
Type stack_top(stack* st);
//判断栈是否为空
bool stack_empty(stack* st);
//判断栈是否满了
bool stack_full(stack* st);
//十进制转为二进制
void Ten_er(stack* st, Type val);
//十进制转为八进制
void Ten_b(stack* st, Type val);
//十进制转为十六进制
void Ten_L(stack* st, Type val);
#endif

int main()
{
    //十进制数转换成二进制输出  栈的特性
    //创建栈
    //把十进制转二进制取得的余数放入栈中输出
    Type n = 0;
    Type val = -1;
    stack* st = stack_init();//创建栈
    cout << "1.是十进制转为二进制\n";
    cout << "2.是十进制转为八进制\n";
    cout << "3.是十进制转为十六进制\n";
    cout << "0.是结束转换\n";
    cin >> n;
    while (n) {
        switch (n)
        {
        case 1:
            Ten_er(st, val);
            cout << endl;
            break;
        case 2:
            Ten_b(st, val);
            cout << endl;
            break;
        case 3:
            Ten_L(st, val);
            cout << endl;
            break;
        }
        cin >> n;
    }

    return 0;

}
stack* stack_init()
{
    stack* temp = (stack*)malloc(sizeof(stack));
    assert(temp);//弹出错误窗口
    temp->top = -1;//初始化栈顶元素下标为-1,-1栈中没有元素
    return temp;
}

//入栈
void stack_push(stack* st, Type val)
{
    assert(st);//判断栈是否存在
    //判断栈是否满了
    assert(!stack_full(st));
    //从栈顶插入元素
    st->data[++st->top] = val;
}

//出栈
void stack_pop(stack* st)
{
    assert(st);//判断栈是否存在
    //判断栈是否为空
    assert(!stack_empty(st));
    //记录当前栈顶元素
    Type val;
    for (; st->top > -1;)
    {
        val = st->data[st->top];
        if (val > 10) {
            char va1 = (char)val;
            cout << va1;
            st->top--;
        }
        else {
            cout << val;
            st->top--;
        }
    }
}

//获取栈顶元素
Type stack_top(stack* st)
{
    assert(st);//判断栈是否存在
    //判断栈是否为空
    assert(!stack_empty(st));
    return st->data[st->top];
}
//判断栈是否满了
bool stack_full(stack* st)
{
    return st->top >= STACK_SIZE;
}

//判断栈是否为空
bool stack_empty(stack* st)
{
    return st->top == -1;//栈空了
}

//十进制转为二进制
void Ten_er(stack* st, Type val) {
    printf("请输入一个正整数:\n");
    //输入一个正整数
    cin >> val;
    for (int i = val; i > 0; i /= 2)
    {
        //将得到的余数入栈
        stack_push(st, i % 2);
    }
    printf("正整数%d的二进制形式为:\n", val);
    while (!stack_empty(st))
    {
        //二进制依次出栈
        stack_pop(st);
    }
}

//十进制转为八进制
void Ten_b(stack* st, Type val) {
    printf("请输入一个正整数:\n");
    //输入一个正整数
    cin >> val;
    for (int i = val; i > 0; i /= 8)
    {
        //将得到的余数入栈
        stack_push(st, i % 8);
    }
    printf("正整数%d的二进制形式为:\n", val);
    while (!stack_empty(st))
    {
        //十进制依次出栈
        stack_pop(st);
    }
}

//十进制转为十六进制
void Ten_L(stack* st, Type val) {
    printf("请输入一个正整数:\n");
    //输入一个正整数
    cin >> val;
    for (int i = val; i > 0; i /= 16)
    {
        //将得到的余数入栈
        if (i % 16 > 10) {
            Type a1 = i % 16 - 10 + 'a';
            stack_push(st, a1);
        }
        else {
            stack_push(st, i % 16);
        }
    }
    printf("正整数%d的十六进制形式为:\n", val);
    while (!stack_empty(st))
    {
        //十六进制进制依次出栈
        stack_pop(st);
    }
}



总结

这里对文章进行总结:
以上就是今天要讲的内容,本文仅仅简单介绍了正整数的转换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
以下是将十进制数转为二进制八进制十六进制的方法: 1. 将十进制数转为二进制:使用bin()函数,该函数返回一个字符串,表示给定整数的二进制形式。例如,将十进制数10转换二进制数,可以使用以下代码: ```python dec_num = 10 bin_num = bin(dec_num) print("The binary representation of", dec_num, "is", bin_num) ``` 输出结果为: ``` The binary representation of 10 is 0b1010 ``` 可以看到,bin()函数返回的字符串以“0b”开头,表示这是一个二进制数。 2. 将十进制数转为八进制:使用oct()函数,该函数返回一个字符串,表示给定整数的八进制形式。例如,将十进制数10转换八进制数,可以使用以下代码: ```python dec_num = 10 oct_num = oct(dec_num) print("The octal representation of", dec_num, "is", oct_num) ``` 输出结果为: ``` The octal representation of 10 is 0o12 ``` 可以看到,oct()函数返回的字符串以“0o”开头,表示这是一个八进制数。 3. 将十进制数转为十六进制:使用hex()函数,该函数返回一个字符串,表示给定整数的十六进制形式。例如,将十进制数10转换十六进制数,可以使用以下代码: ```python dec_num = 10 hex_num = hex(dec_num) print("The hexadecimal representation of", dec_num, "is", hex_num) ``` 输出结果为: ``` The hexadecimal representation of 10 is 0xa ``` 可以看到,hex()函数返回的字符串以“0x”开头,表示这是一个十六进制数。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yun~704

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值