visual studio2019,c语言栈实现进制转换

这篇博客介绍了如何使用C++编程实现将十进制数转换为任意进制的方法。通过定义一个栈结构体,实现了栈的初始化、入栈、出栈、进制转换和销毁等操作。代码中包含了主函数、栈初始化函数、入栈函数、进制转换函数、出栈函数和销毁栈的函数,详细展示了具体的转换过程。
摘要由CSDN通过智能技术生成

1.先打开visual studio2019

 

如果是2017版本的

 

 

 2.输入代码

#include <iostream>
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#define MAXSIZE 100
    typedef struct                       //定义栈的结构体
    {
        int data[MAXSIZE];
        int top;
    }zhan, * Pe;
    //声明函数
    Pe begin();                    //栈的初始化
    void push(Pe S, int x);        //入栈函数
    Pe zhuanjinzhi(int m, int n);    //进制转换函数
    void destroy(Pe * S);            //销毁栈
    void out(Pe S);               //出栈函数
    int main()                        //主函数
    {
        Pe S;                        //初始化S栈
        int x, y;
        printf("输入要转换的十进制数和要转换的进制:\n");
        scanf_s("%d %d", &x, &y);    //2019的版本需要在scanf后加_s才能使用
        S = zhuanjinzhi(x, y);        //调用zhuanjinzhi函数
        out(S);                        //输出
        destroy(&S);                //销毁栈
    }
    Pe begin()                        //初始化栈
    {
        Pe S;
        S = (Pe)malloc(sizeof(zhan));    //申请内存
        if (S)
            S->top = -1;
        return S;
    }    
    void push(Pe S, int x)                //进栈
    {
        S->top++;
        S->data[S->top] = x;
    }
    Pe zhuanjinzhi(int m, int n)        //转进制,获得两个值,一个是要转的十进制m的值,一个是转成n进制
    {
        Pe S;
        S = begin();
        int k;
        while (m != 0)
        {
            k = m % n;
            push(S, k);                    //让结果进栈
            m = m / n;
        }
        return S;
    }
    void destroy(Pe * S)                //销毁栈
    {
        if (*S)
            free(*S);                    //释放
        *S = NULL;
    }
    void out(Pe S)                        //输出栈
    {
        while (S->top != -1)
        {
            printf("%d", S->data[S->top]);
            S->top--;
        }
    }

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值