Python和C语言利用栈分别实现进制转换

目录
  • 问题描述
  • C语言实现
  • Python实现

问题描述

利用栈的数据结构实现将十进制数转换成二进制数

C语言实现

顺序表的存储结构实现栈

代码:

#include <stdlib.h>
#include <stdio.h>

#define STACK_INIT_SIZE 100   //栈初始开辟空间大小
#define STACK_INCREMENT 10    //栈追加空间大小

//栈的结构体
typedef struct stack{
    int *base;
    int *top;
    int size;
}binStack;

//栈初始化
binStack stack_init()
{
    binStack bs;
    bs.base = (int *)malloc(sizeof(int)*STACK_INIT_SIZE);
    bs.top = bs.base;
    bs.size = STACK_INIT_SIZE;
    return bs;
}

//入栈
void push(binStack *bs, int e)
{
    if(bs->top - bs->base >= bs->size)
    {
        bs->size += STACK_INCREMENT;
        bs->base = realloc(bs->base, bs->size);
    }
    *(bs->top++) = e;
}

//出栈
int pop(binStack *bs)
{
    if(bs->top != bs->base)
    {
        bs->top--;
        return *bs->top;
    }
    return -1;
}

//主函数
void main()
{
    int dec;
    binStack bs = stack_init();
    printf("请输入十进制整数:\n");
    scanf("%d", &dec);
    while(dec)
    {
        push(&bs, dec%2);
        dec /= 2;
    }
    printf("转换后的二进制数是:\n");
    while(bs.top != bs.base)
    {
        printf("%d", pop(&bs));
    }
    printf("\n\n");
    system("date /T");
    system("TIME /T");
    system("pause");
    exit(0);
}

运行结果:

Python实现

对于stack我们可以使用python内置的list实现(也可以用链表实现),因为list是属于线性数组,在末尾插入和删除一个元素所使用的时间都是O(1),这非常符合stack的要求。

代码:

import datetime  //显示时间引入的库
import time      //
from pip._vendor.distlib.compat import raw_input  //使命令窗口不立即关闭引入的库

//栈类
class BinStack:
    def __init__(self):
        self.bs = []

    //入栈
    def push(self, e):
        self.bs.append(e)

    //出栈
    def pop(self):
        if self.bs:
            return self.bs.pop()
        else:
            raise LookupError("stack is empty!")

    //检查栈是否为空,是返回False,不是返回True
    def isEmpty(self):
        return bool(self.bs)

if __name__ == '__main__':
    binStack = BinStack()
    dec = int(input("请输入十进制整数:\n"))
    print("转换后的二进制数是:")
    while dec != 0:
        binStack.push(dec%2)
        dec //= 2
    while binStack.isEmpty() == True:
        print("{}".format(binStack.pop()), end="")
    else:
        print("\n")
    //打印时间
    datetime = datetime.datetime.now()
    print(datetime.strftime("%Y-%m-%d\n%H:%M:%S"))
    //使命令窗口不立即关闭
    input("Press Enter to exit…")

运行结果:

以上就是Python和C语言利用栈分别实现进制转换的详细内容,更多关于Python进制转换的资料请关注我们其它相关文章!

(0)

相关推荐

  • C语言每日练习之进制转换

    目录 分析 代码实现 网上参考 总结 分析 我一开始的想法是通过输入整数形式八进制来转换成十进制输出,后来发现用字符数组输入更方便.我这里就讲讲我用整型数据输入的转换思路: 我们都知道二进制由0和1组成,3位二进制组成在一起,就可以表示0-7这八个数,所以八进制实际上就是3位二进制的组合(同理十六进制是4位二进制的组合),C语言的位运算操作的是二进制,算术运算针对的是十进制,所以,我们可以通过位运算求出八进制的每一位数(3位二进制为1位),然后通过算术运算符+,将他们加起来.和十进制运算不同的地

  • python中常见进制之间的转换方式

    目录 1. 很多情况下需要进行不同进制之间的转换 下面的表格反应了常见进制之间的转换 2. 第二种是使用format函数进行转换 3. 手动转化 10进制转换为其他进制代码 其他的进制转为10进制代码 1. 很多情况下需要进行不同进制之间的转换 其中比较常用到的是python的内置函数进行进制的转换,一般使用内置函数进行转换的时候是先将控制台输入的字符串或者是自定义的字符串先转换为10进制然后将10进制转换为其他的进制,常见的是二进制.十进制.八进制.十六进制之间的转换,其中遵循一个原则是: 其

  • C语言实现进制转换函数的实例详解

    C语言实现进制转换函数的实例详解 前言: 写一个二进制,八进制,十六进制转换为十进制的函数 要求: 函数有两个参数,参数(1)是要转换为十进制的进制数,参数(2)是标示参数(1)是什么进制(2,8,16标示二进制,八进制,十六进制). 要有报错信息,比如参数是1012,但参数(2)是2,显然是进制数表示有错误. 系统表 pg_proc 存储关于函数的信息 内部函数在编译之前需要先定义在 pg_proc.h 中,src/include/catalog/pg_proc.h CATALOG(pg_pr

  • Python进制转换用法详解

    目录 使用int()转换 任意字符数字转换为10进制: 16进制转换为10进制:int(x,16) 8进制转换为10进制:int(x,8) 2进制转换为10进制:int(x,2) 使用bin(x) ,oct(x) 或hex(x) 转换: bin(x)转换为二进制: oct(x)转换为八进制: hex(x)转换为十六进制: 使用format() 转换 format(x,'b')转换为二进制 format(x,'o')转换为八进制 format(x,'d')转换为十进制 format(x,'x')转

  • python实现基本进制转换的方法

    本文实例讲述了python基本进制转换的方法.分享给大家供大家参考.具体如下: # Parsing string with base into a number is easy num = int(str, radix) # We have to write our own function for outputting to string with arbitrary base def itoa(num, radix): result = "" while num > 0: r

  • Python3进制之间的转换代码实例

    Python3进制之间的转换 在Python里面实现进制之间的转换是非常方便的,有专门的函数来进行这个操作: 下面直接上代码: # 进制之间的转换 a = 10 # 转换为二进制 print(bin(a)) # 结果为0b1010 # 转换为八进制 print(oct(a)) # 结果为0o12 # 转换为八进制 print(hex(a)) # 结果为0xa # 一个非十进制的数转换为十进制 print(int(0b1010)) # 结果为10 以上就是本文的全部内容,希望对大家的学习有所帮助,

  • C语言用栈实现十进制转换为二进制的方法示例

    本文实例讲述了C语言用栈实现十进制转换为二进制的方法.分享给大家供大家参考,具体如下: #include<stdio.h> #include<malloc.h> #include<math.h> #include<string.h> #include "process.h" #define SIZE 100 #define STACKINCREMENT 10 #define OK 1 #define ERROR 0 #define TRU

  • Python和C语言利用栈分别实现进制转换

    目录 问题描述 C语言实现 Python实现 问题描述 利用栈的数据结构实现将十进制数转换成二进制数 C语言实现 顺序表的存储结构实现栈 代码: #include <stdlib.h> #include <stdio.h> #define STACK_INIT_SIZE 100 //栈初始开辟空间大小 #define STACK_INCREMENT 10 //栈追加空间大小 //栈的结构体 typedef struct stack{ int *base; int *top; int

  • Python内置函数bin() oct()等实现进制转换

    使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x) Convert an integer number to a binary string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns

  • Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)

    使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x) Convert an integer number to a binary string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns

  • Python的输出格式化和进制转换介绍

    目录 复习 输出格式化 字符串如何进行格式化? 进制转换 思考题: 总结 Python输出格式化字符串如何进行格式化? 进制转换 复习 1.pycharm的使用 2.注释:单行.多行 3.变量:格式:变量名=值起名:命名规范(大驼峰.小驼峰.下划线) 4.值数据类型:int float str bool类型转换 :a = 10str(a) 5.name = input(‘提示语句’)所有键盘输入的内容都是字符串类型的 6.运算符算数 + - * / % // **赋值 = += -=……比较 >

  • 一篇教程教你学会Python进制转换(十进制转二进制、八进制、十六进制)

    一.导言 导语: 在计算机进行数据交换时,常常会有一个进制转换的过程,我们知道计算机只认0 和 1.在内存系统中,基本基于二进制进行运算的,但是有时候数据过于庞大,为了方便存储管理,计算机会使用十六进制存储数据,但是怎么实现数据转换呢? 我们人类由十根手指头,所以自然就使用十进制啦,每当我们数数字到10之后,于是就重0 开始继续数,所以逢十进一就这么来了. 对于其它进制呢,也是同样的,比如最常见的二进制,也就是逢二进一,慢慢来,依次类推,所以数学的世界是多么的奇妙呀! 今天给大家带来的是使用 P

  • python实现各进制转换的总结大全

    前言 玩ctf经常遇到进制转换的问题,就正好做一个进制转换总结,分享出来供大家参考学习,下面来一起看看详细的介绍: 字符串与十六进制转换 例如百度ctf 12月的第二场第一个misc 666C61677B65633862326565302D336165392D346332312D613031322D3038616135666137626536377D 比较简单的一种做法就是直接调用字符串的.decode('hex')解密即可, 但如果不用这个函数你会怎么解呢? 一种思路就是先2个分组,解出每组的

  • python binascii 进制转换实例

    如下所示: #coding:utf-8 import binascii a = 'worker' #先把worker转换成二进制数据然后在用十六进制表示 b = binascii.b2a_hex(a) print b #与b2a_hex相反 print binascii.a2b_hex(b) #这个功能和b2a_hex()一样 c = binascii.hexlify(a) print c #这个功能和a2b_hex()一样 print binascii.unhexlify(c) ######运

  • python 进制转换 int、bin、oct、hex的原理

    原理 十进制转n进制都可以使用倒除法:对十进制进行除n的运算,直到商为0为止,然后将各个步骤中得到的余数倒着写出来. n进制转十进制:(例子:二进制转十进制) 101001 => 2^5 + 2^3 + 1 = 32 + 8 + 1 = 41 10111 => 2^4 + 2^2 + 2 + 1 = 16 + 4 + 2 +1 = 23 同样类推一下,n进制转十进制就是将2为底换成n为底就好了 还有其他方法,比如使用中间二进制, 例如,将十进制转成八进制或者十六进制,先转成二进制再转成八进制或

随机推荐