进制转换(10进制——n进制)

所需知识:栈
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
#include<malloc.h>
#include<string>typedef int Status;
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0// ------栈的顺序存储结构表示----------
#define STACK_INIT_SIZE 100     // 存储空间初始分配量
#define STACK_INCREMENT 10  // 存储空间分配增量
typedef int  ElemType;
typedef struct {ElemType *base;     // 栈底指针ElemType *top;   // 栈顶指针int stacksize;   // 栈空间大小
} SqStack;void InitStack(SqStack &S)
{// 构造一个空栈Sif(!(S.base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType))))exit(OVERFLOW);     // 存储分配失败S.top = S.base;S.stacksize = STACK_INIT_SIZE;
}void DestroyStack(SqStack &S)
{// 销毁栈S,S不再存在free(S.base);S.base = NULL;S.top = NULL;S.stacksize = 0;
}void Push(SqStack &S, ElemType e)
{if(S.top - S.base >= S.stacksize) { // 栈满,追加存储空间S.base = (ElemType *)realloc(S.base, (S.stacksize + STACK_INCREMENT) * sizeof(ElemType));if(!S.base)exit(OVERFLOW);           // 存储分配失败S.top = S.base + S.stacksize;S.stacksize += STACK_INCREMENT;}*(S.top)++ = e;
}Status Pop(SqStack &S, ElemType &e)
{// 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;// 否则返回ERRORif(S.top == S.base)return ERROR;e = *--S.top;return OK;
}Status GetTop(SqStack S, ElemType &e)
{// 若栈不空,则用e返回S的栈顶元素,并返回OK;// 否则返回ERRORif(S.top > S.base) {e = *(S.top - 1);return OK;}elsereturn ERROR;
}Status StackEmpty(SqStack S)
{// 若栈S为空栈,则返回TRUE,否则返回FALSEif(S.top == S.base)return TRUE;elsereturn FALSE;
}
关键函数代码

//思路

1.将数据a每次取余进制数,并进栈
2.对数据a进行修改,每次讲a整除进制数
3.直到a<0为止

//将10进制数a转换为n进制数
int conversion(int a,int n)
{SqStack S;InitStack(S);while(a){Push(S,a%n);a/=n;}int e;while(S.top!=S.base){Pop(S,e);printf("%d",e);}return 0;
}
可执行程序代码
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
#include<malloc.h>
#include<string>typedef int Status;
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0// ------栈的顺序存储结构表示----------
#define STACK_INIT_SIZE 100     // 存储空间初始分配量
#define STACK_INCREMENT 10  // 存储空间分配增量
typedef int  ElemType;
typedef struct {ElemType *base;     // 栈底指针ElemType *top;   // 栈顶指针int stacksize;   // 栈空间大小
} SqStack;void InitStack(SqStack &S)
{// 构造一个空栈Sif(!(S.base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType))))exit(OVERFLOW);     // 存储分配失败S.top = S.base;S.stacksize = STACK_INIT_SIZE;
}void DestroyStack(SqStack &S)
{// 销毁栈S,S不再存在free(S.base);S.base = NULL;S.top = NULL;S.stacksize = 0;
}void Push(SqStack &S, ElemType e)
{if(S.top - S.base >= S.stacksize) { // 栈满,追加存储空间S.base = (ElemType *)realloc(S.base, (S.stacksize + STACK_INCREMENT) * sizeof(ElemType));if(!S.base)exit(OVERFLOW);           // 存储分配失败S.top = S.base + S.stacksize;S.stacksize += STACK_INCREMENT;}*(S.top)++ = e;
}Status Pop(SqStack &S, ElemType &e)
{// 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;// 否则返回ERRORif(S.top == S.base)return ERROR;e = *--S.top;return OK;
}Status GetTop(SqStack S, ElemType &e)
{// 若栈不空,则用e返回S的栈顶元素,并返回OK;// 否则返回ERRORif(S.top > S.base) {e = *(S.top - 1);return OK;}elsereturn ERROR;
}Status StackEmpty(SqStack S)
{// 若栈S为空栈,则返回TRUE,否则返回FALSEif(S.top == S.base)return TRUE;elsereturn FALSE;
}
//将10进制数a转换为n进制数
int conversion(int a,int n)
{SqStack S;InitStack(S);while(a){Push(S,a%n);a/=n;}int e;while(S.top!=S.base){Pop(S,e);printf("%d",e);}return 0;
}int main(){int a,n;printf("输入要转化的10进制数(仅限整数)a和要转化的进制n:  ");scanf("%d%d",&a,&n);conversion(a,n);
}

数据结构——进制转换(10—n)相关推荐

  1. Python进制转换10进制转换为16进制,不使用hex函数

    笔试中遇到的问题 Python进制转换10进制转换为16进制,不使用hex函数 给定一个整数,编写一个算法将这个数转换为十六进制数.对于负整数,我们通常使用 补码运算 方法. 注意: 十六进制中所有字 ...

  2. c# .net 16进制转换10进制

    业务调用 #region C#十六进制字符串转十进制 { Console.WriteLine("-----------十六进制字符串转十进制---------");//H:十六进制 ...

  3. 利用10位AD转换器 及 LED 数码管,实现由AD转换器采集温度,并用数码管显示。温度超出一定范围,LED 指示灯闪烁报警。(主要分析进制16进制转换10进制,并用数码管显示问题)

    ** 题目: ** 利用原有的电路 AD 及 LED 数码管显示等例子,进行整合.实现由 AD转换器采集温度(用可调电阻模拟),温度在数码管上显示.当温度超出一定范围,用 LED 指示灯进行闪烁报警. ...

  4. C++16进制转换10进制

    废话不多,直接上代码: #include <iostream> #include <cmath> //要用到pow()函数必须要这个库 using namespace std; ...

  5. 威纶通TK6071iQ触摸屏通过宏指令与modbus温湿度传感器通信,16进制转换10进制。

    我查了百度上面的资料,很少有关于这一方面的知识,都是靠自己不断搜索,然后尝试出来,也非常感谢网上的前辈们把一点点的疑问解答了.我这里总结一下. 1,首先是触摸屏连接仪表,线都是485两条线接.. 2, ...

  6. 16进制转换10进制的方法

    2019独角兽企业重金招聘Python工程师标准>>> 之所以想到这个问题,是看阻塞队列大小的时候,看不懂: public static final int   MAX_VALUE ...

  7. shell 进制转换 10转16

    两种方式 10 转 16 printf "%X\n" 15 echo "obase16;15" | bc

  8. java 10zhuan8,Java代码 10进制转2、8、16进制转换 / 2、8、16进制转10进制转换

    public static void main(String[] args) { int i = 10; System.out.println("***********10进制转换2进制.8 ...

  9. python16进制转10进制_python 字节串及10进制,16进制相关转换

    进行协议解析时,总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 整数之间的进制转换: 10进制转16进制: hex(16) ==> 0x10 16进制转10进制: in ...

最新文章

  1. LoadRunner12使用教程(三)——Action迭代
  2. 算法入门经典-第七章 例题7-2-2 可重集的排列
  3. LINUX下GDB反汇编和调试
  4. 应力循环次数60ant_恒温恒湿箱循环试验失效分析
  5. activePerl的PPM如何使用http代理
  6. python 批量修改密码
  7. python可变参数函数二阶导数公式_python中函数的可变参数
  8. 局域网(信息学奥赛一本通-T1391)
  9. 练习图200例图纸讲解_实物图+电气图纸讲解:教你学会看配电系统图,不收藏,可惜了...
  10. Netty工作笔记0048---Http服务过滤资源
  11. servlet请求转发
  12. 性能测试中容易混淆的概念
  13. 解决Tuxera NTFS for Mac软件安装问题
  14. tomcat source code in eclipse
  15. 视频搬运伪原创 视频修改MD5值
  16. 计算机无法安装蓝牙驱动,windows10系统安装蓝牙驱动图文教程|windows10系统如何安装蓝牙驱动...
  17. 【应急响应】Linux入侵排查
  18. 激励机制:区块链的幕后英雄
  19. python基础篇——函数
  20. audio接线图解_图文:主板跳线(排线)连接技巧HD AUDIO连线接法

热门文章

  1. Docker 部署dotnetcore
  2. 在ASP.NET Core中使用百度在线编辑器UEditor
  3. 编程语言的发展趋势及未来方向(1):历史回顾及趋势概述
  4. Android Studio开发基础之细节问题笔记
  5. Android之TrafficStats实现流量实时监测
  6. (9)有一些人在学习编程的时候总以为代码是死板的
  7. k8s mysql数据同步_K8s——MySQL实现数据持久化
  8. 里rust怎么找蓝图_Rust错误处理
  9. 神奇却又随处可见的斐波那契曲线...
  10. 被清华免试录取的围棋天才,横扫60位围棋大师的最强AI,竟然都输给了高中生!?...