当前位置: 首页 > news >正文

【C语言】 利用栈完成十进制转二进制(分文件编译,堆区申请空间malloc)

        利用栈先进后出的特性,在函数内部,进行除二取余的操作,把每次的余数存入栈内,最后输出刚好就是逆序输出,为二进制数

        学习过程中,对存储栈进行堆区的内存申请时候,并不是很熟练,一开始还在想去接收的类型应该是什么,后面发现直接用S->data去进行接收即可,本身就是datytype *类型

1、使用栈,完成进制转换

输入:一个整数,进制数

输出:该数的对应的进制数

//zhuanhuan.h
#ifndef ZHUANHUAN_H
#define ZHUANHUAN_H
#include<stdio.h>
#include<stdlib.h>
#include<string.h>typedef int datatype;
#define MAX 10typedef struct Stack
{datatype *data;int top;
}Stack,*StackPtr;//创建栈
StackPtr stack_create();//判空
int stack_empty(StackPtr S);//判满
int stack_full(StackPtr S);//进制转换
void stack_zhuanhuan(StackPtr S,datatype e);//遍历栈
void stack_show(StackPtr S);#endif
//zhuanhuan.c
#include"zhuanhuan.h"//创建栈
StackPtr stack_create()
{StackPtr S = (StackPtr)malloc(sizeof(Stack));if(NULL == S){printf("创建失败\n");return NULL;}//为储存栈申请空间S->data = (datatype *)malloc(sizeof(S->data)*MAX);if(NULL == S->data){printf("创建失败\n");return NULL;}memset(S->data,0,sizeof(S->data)*MAX);S->top = -1;printf("创建成功\n");return S;
}//判空
int stack_empty(StackPtr S)
{return S->top == -1;
}//进制转换
void stack_zhuanhuan(StackPtr S,datatype e)
{if(NULL == S){printf("转换失败\n");return;}while(e)       //当e为0的时候退出循环{S->top += 1;    //每次存入时,top的指向都要先递增1后再去往里面去存内容S->data[S->top] = e % 2;e /= 2;}
}//遍历栈
void stack_show(StackPtr S)
{if(NULL == S || stack_empty(S)){printf("遍历失败\n");return;}printf("该数的二进制数是:");for(int i = S->top;i >= 0;i--){printf("%d",S->data[i]);}printf("\n");
}
//main.c
#include"zhuanhuan.h"int main(int argc, char const *argv[])
{int n = 0;//创建一个栈StackPtr S = stack_create();printf("请输入一个你需要转换的十进制数:");scanf("%d",&n);getchar();//在函数内部循环吧余数依次放入栈内stack_zhuanhuan(S,n);//栈会逆序输出,故刚好为二进制数stack_show(S);return 0;
}

 输出结果如下:

http://www.lryc.cn/news/404813.html

相关文章:

  • 如何解决ChromeDriver 126找不到chromedriver.exe问题
  • Anaconda下安装配置Jupyter
  • 蓝队黑名单IP解封提取脚本
  • 共享充电桩语音ic方案,展现它的“说话”的能力
  • ARM 单片机裸机任务调度框架
  • .Net 8 控制台程序部署(Linux篇)
  • LeetCode:x的平方根(C语言)
  • 深入浅出WebRTC—DelayBasedBwe
  • JAVA开发工具IDEA如何连接操作数据库
  • 简化AI模型:PyTorch量化技术在边缘计算中的应用
  • 拥抱AI时代:解锁Prompt技术的无限潜力与深远影响
  • 第123天:内网安全-域防火墙入站出站规则不出网隧道上线组策略对象同步
  • 博客建站4 - ssh远程连接服务器
  • MySQL--索引(3)
  • sql_exporter通过sql收集业务数据并通过prometheus+grafana展示
  • pytorch 笔记:torch.optim.Adam
  • 开源AI智能名片小程序:深度剖析体验优化策略,激活小程序生命力的运营之道
  • ML.Net 学习之使用经过训练的模型进行预测
  • 为什么 centos 下使用 tree 命令看不见 .env 文件
  • 数据库基础与性能概述及相关术语
  • docker基于外部缓存加速构建方案
  • 【C语言】 作业11 链表+实现函数封装
  • 【Ubuntu】Ubuntu20修改MAC地址
  • ClickHouse集成LDAP实现简单的用户认证
  • C语言-预处理详解
  • 计算机网络-VLAN间通信(三层通信)模拟实现
  • 【JAVA】数据类型及变量
  • 微软蓝屏事件暴露的网络安全问题
  • 11 - FFmpeg - 编码 AAC
  • OS Copilot初体验的感受与心得