利用一个函数实现十进制数转换成二进制,八进制,十六进制。利用的是栈的后进先出的思想。算法简单。

#include

#include

#include

#define STACK_INIT_SIZE 100

#define STACKINCREMENT 10

#define OVERFLOW -2

#define OK 1

#define ERROR -1

typedef struct{

int *base;

int *top;

int stacksize;

} SqStack;

int InitStack(SqStack &S);

int GetTop(SqStack S,int &e);

int Push(SqStack &S,int e);

int Pop(SqStack &S,int &e);

int InitStack(SqStack &S);

int StackEmpty(SqStack S);

void JinZhi(SqStack &S,int e,int cj);

int main()

{

int N,Cho;

int cj;

SqStack S;

InitStack(S);

printf("请选择转换类型:1:十进制->二进制 2:十进制->八进制 3:十进制->十六进制 \n");

printf("请输入你的选择:");

scanf("%d",&Cho);

switch(Cho)

{

case 1:cj=2;printf("你选择的是十进制转换成二进制\n\n");printf("请输入要转换的十进制数:");scanf("%d",&N);break;

case 2:cj=8;printf("你选择的是十进制转换成八进制\n\n");printf("请输入要转换的十进制数:");scanf("%d",&N);break;

case 3:cj=16;printf("你选择的是十进制转换成十六进制\n\n");printf("请输入要转换的十进制数:");scanf("%d",&N);break;

default:printf("请从1-3中选择!");

}

JinZhi(S,N,cj);

return OK;

}

void JinZhi(SqStack &S,int N,int cj)

{

int e;

char jz;

while(N)

{

Push(S,N%cj);

N=N/cj;

}

printf("转换后的值: ");

while(!StackEmpty(S))

{

Pop(S,e);

if(e>=10)

{

switch(e)

{

case 10:jz='a';break;

case 11:jz='b';break;

case 12:jz='c';break;

case 13:jz='d';break;

case 14:jz='e';break;

case 15:jz='f';break;

}

printf("%c",jz);

}

else

printf("%d",e);

}

printf("\n");

}

int InitStack(SqStack &S)

{

S.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));

if(!S.base) exit(OVERFLOW);

S.top=S.base;

S.stacksize=STACK_INIT_SIZE;

return OK;

}

int GetTop(SqStack S,int &e)

{

if(S.top==S.base) return ERROR;

e=*(S.top-1);

return OK;

}

int Push(SqStack &S,int e)

{

if((S.top-S.base)>=S.stacksize)

{

S.base=(int *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int));

if(!S.base) exit(OVERFLOW);

S.top=S.base+S.stacksize;

S.stacksize+=STACKINCREMENT;

}

*S.top++=e;

return OK;

}

int Pop(SqStack &am

p;S,int &e)

{

if(S.top==S.base) return ERROR;

e=*--S.top;

return OK;

}

int StackEmpty(SqStack S)

{

if(S.top!=S.base) return 0;

}

c语言十进制转换成二进制八进制十六进制,十进制数转换成二进制,八进制,十六进制(c语言)...相关推荐

  1. TP5-金钱转换,将小写的金钱数转换成大写格式

    function convertMoney($num) {$c1 = "零壹贰叁肆伍陆柒捌玖";$c2 = "分角元拾佰仟万拾佰仟亿";$num = round ...

  2. c语言字符串转成二进制,C语言中字符串如何转换为二进制、八进制、十进制、十六进制...

    在C语言某个程序当中需要把文本16进制转换成对应的16进制数,比如字符串"0x1a"转换成10进制的26,可以用以下函数来实现 相关函数: atof, atoi, atol, st ...

  3. c语言中十进制转化二进制八进制十六进制,进制转换:二进制、八进制、十六进制、十进制之间的转换...

    对于基础薄弱的读者,本节的内容可能略显晦涩和枯燥,如果觉得吃力,可以暂时跳过,用到的时候再来阅读.但是本节所讲的内容是学习编程的基础,是程序员的基本功,即使现在不学,迟早也要回来学. 上节我们对二进制 ...

  4. python--预测未来子女的身高、计算能量的消耗、为自己的手机充值、将指定的十进制数转换成二进制、八进制、十六进制

    将指定的十进制数转换成二进制.八进制.十六进制 def fun():num=int(input('请输入一个十进制的整数:'))print(num,'的二进制数为:',bin(num)) #内置函数- ...

  5. python十六进制转换成八进制_Python 进制转换 二进制 八进制 十进制 十六进制

    全局定义一定不要丢了 全局定义 base = [str(x) for x in range()] + [ chr(x) for x in range(ord('A'),ord('A')+)] 二进制 ...

  6. c++二进制转十进制_进制转换:二进制、八进制、十进制、十六进制相互转换

    将二进制.八进制.十六进制转换为十进制 二进制.八进制和十六进制向十进制转换都非常容易,就是"按权相加".所谓"权",也即"位权". 假设当 ...

  7. C语言二进制、八进制、十进制、十六进制深入探究

    首先来一篇好文:C语言中的二进制数.八进制数和十六进制数 C语言中的整数除了可以使用十进制,还可以使用二进制.八进制和十六进制. 二进制数.八进制数和十六进制数的表示 一个数字默认就是十进制的,表示一 ...

  8. C++控制不同进制输出(二进制,八进制,十进制,十六进制)各种进制之间的转换

    目录 1.输出(头文件讲解) 2.格式控制 常用的I/O流控制符 4.各种进制之间的转换(进制大乱斗) 4.1.写在前面 4.2整体框架搭建 4.3菜单函数 4.4用户输入选择(main函数体中) 4 ...

  9. 二进制、八进制、十进制、十六进制的转换

    为什么需要八进制和十六进制? 编程中,我们常用的还是10进制--必竟C/C++是高级语言. 比如: int a = 100,b = 99; 不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以 ...

最新文章

  1. 指针空间的申请与释放
  2. mysql 批处理文件传参_如何实现批处理文件传参数给SQLPLUS
  3. rsync远程同步的基本配置与使用
  4. GDB 内写脚本调试程序
  5. [流媒体]实例解析MMS流媒体协议,下载LiveMediaVideo[4]
  6. 第十二届蓝桥杯省赛JavaC组【第二场】真题——详细答案对照(完整版)
  7. POJ 3617 Best Cow Line(最佳奶牛队伍)
  8. 使用 typescript ,提升 vue 项目的开发体验(1)
  9. python内置的数据结构_Python内置数据结构
  10. FPGA实现按键消抖及短时间按键和长时间按键不同动作
  11. DedeAMPZ多站点配置+支持.htaccess伪静态
  12. oracle执行大sql,mybatis连接oracle执行sql语句出现ORA
  13. volatile分析
  14. jdbc 事务没有回滚_《Spring Cloud Alibaba》微服务搭建之Seata分布式事务quot;发现问题quot;(十四)...
  15. 设计不难学,这10款软件总有一款适合你
  16. 编程c 语言怎么表示倍数,C语言里怎么表示是3的倍数
  17. 赛元SC92F7250单片机开发
  18. Linux系统1.md
  19. python求素数对(质数对)个数
  20. JS 中 0/1 与 true/false 是否相等

热门文章

  1. ICRA2020重磅来袭——SLAM文章汇总
  2. 关于磁盘分区管理工具
  3. Gunicorn 配置
  4. 中计播客 | 360回归A股首日跌停 “大安全”能否撑起4000亿市值?
  5. java 并发map_专用于高并发的map类-----Map的并发处理(ConcurrentHashMap)
  6. 软件测试-等价类作业
  7. textfield java_Java中怎么把运行结果显示到textfield中
  8. Flutter TextField 垂直居中
  9. 啊啊啊啊啊,终于解决电脑hardlock.sys蓝屏问题啦,顺利下载modelsim软件
  10. [ROS] 什么是ROS、ROS的优缺点