写一个程序,将输入的十进制数据M 转换为八进制数据M8,将其调试通过。

在此基础上修改程序,实现十进制数据M 向N 进制(2或8或16)的转换。

(1)采用顺序存储结构实现栈。

#include<stdio.h>
#include<stdlib.h>
#include<process.h>
#define STACK_INIT_SIZE 100
#define status int
#define SElem int
#define ERROR 0
#define OK 1
typedef struct
{SElem *base;SElem *top;int stacksize;
} SqStack;void Init_SqStack(SqStack &S)
{S.base=(SElem *)malloc(STACK_INIT_SIZE*sizeof(SElem));if(!S.base)exit(1);S.top=S.base;S.stacksize=STACK_INIT_SIZE;
}status Gettop_SqStack(SqStack S,SElem &e)
{if(S.base==S.top) return ERROR;else e=*(S.top-1);return OK;
}status Push_SqStack(SqStack &S,SElem e)
{if(S.top-S.base==S.stacksize){S.base=(SElem *)realloc(S.base,(S.stacksize+10)*sizeof(SElem));if(!S.base) return ERROR;S.top==S.base+S.stacksize;}else *S.top++=e;return OK;
}status Pop_SqStack(SqStack &S,SElem &e)
{if(S.base==S.top) return ERROR;else e=*(--S.top);return OK;
}status Empty_SqStack(SqStack S)
{if(S.base==S.top) return true;else return false;
}void conversion()
{SqStack S;SElem e;int N;Init_SqStack(S);printf("请输入十进制数:");scanf("%d",&N);while(N){Push_SqStack(S,N%8); //将输入的十进制数除以8的余数入栈N=N/8;   //商赋给N}printf("转换为八进制为:");while(!Empty_SqStack(S)){Pop_SqStack(S,e);printf("%d",e);}printf("\n");
}int main()
{conversion();
}

代码运行效果图

(2)采用链表结构实现栈。

#include <stdio.h>
#include <malloc.h>
#include <math.h>typedef struct Qnode //队列结点
{int data;struct Qnode  *next;
} QNode, *QueuePtr;typedef struct
{QueuePtr  front;  //队头指针QueuePtr  rear;   //队尾指针
} LinkQueue;void QueueTraverse (LinkQueue Q) //遍历显示队列
{QueuePtr p;for(p=Q.front->next; p!=Q.rear; p=p->next)printf("%d ",p->data);printf("%d ",p->data);
}
int main()
{LinkQueue Q;int e,m[100],i;QueuePtr p;Q.front=Q.rear=(QueuePtr) malloc(sizeof(QNode)); //初始化链队列Q.front->next=NULL;           //初始化结束printf("请输入要转化的十进制数字,并以-1结尾:\n");scanf("%d",&e);          //入队列while(e!=-1){p=(QueuePtr)malloc(sizeof(QNode));p->data=e;p->next=NULL;Q.rear->next=p;Q.rear=p;scanf("%d",&e);}                //入队列结束printf("十进制数字为:\n");QueueTraverse(Q);printf("\n");printf("转换为八进制后变为:\n");p=Q.front->next;      //转换数制do{e=p->data;i=0;while(e>=8)     //修改数制改变这里{m[i]=e%8;   //修改数制改变这里e=e/8;       //修改数制改变这里i++;}m[i]=e;for(; i>=0; i--)printf("%d",m[i]);printf("\n");p=p->next;}while(p!=Q.rear);e=p->data;i=0;while(e>=8)             //修改数制改变这里{m[i]=e%8;           //修改数制改变这里e=e/8;               //修改数制改变这里i++;}m[i]=e;for(; i>=0; i--)printf("%d",m[i]);       //转换结束printf("\n");while(Q.front)                 //销毁队列{Q.rear=Q.front->next;free(Q.front);Q.front=Q.rear;}         //销毁结束
}

代码运行效果图

进制转换(数据结构实验报告)相关推荐

  1. 利用栈和递归实现进制转换——数据结构实验报告

    一.实验名称:栈的应用--进制转换 二.实验目的 熟练掌握栈的两种存储方式的具体实现过程,并分别使用递归和非递归两种方式,实现进制转换. 三.实验要求 顺序栈和链栈两种存储方式任选一种,实现从十进制到 ...

  2. 单片机进制转换实现(报告+源码)

    用4x4矩阵及LCD1602液晶显示实现各进制转换 摘要:在计算机及其相关的各领域中,数制的二进制.八进制.十进制和十六进制之间的相互转换可谓无处不在.为满足相关领域人员对进制转换计算的需求,特此利用 ...

  3. 进制转换数据结构c语言不用栈,急求!!!用数据结构(C语言)利用栈实现十进制向二(八)进制转换,要有注释,谢谢!...

    匿名用户 1级 2013-12-05 回答 #include #include #include typedef unsigned int data_type; //结点数62616964757a68 ...

  4. 蓝桥杯 笔记整理【JavaB组省赛真题、约数、全排列模板、排列组合、等差等比求和公式、eclipse快捷键、集合、快速求a^n、进制转换(Integer、BigInteger)、动态数组Vector】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  5. 2131数据结构实验之栈与队列一:进制转换

    数据结构实验之栈与队列一:进制转换 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 输入一个十进制非负整数,将其转换成对 ...

  6. 数据结构实验之栈与队列一:进制转换

    Description 输入一个十进制非负整数,将其转换成对应的 R (2 <= R <= 9) 进制数,并输出. Input 第一行输入需要转换的十进制非负整数: 第二行输入 R. Ou ...

  7. c语言进制转换实验报告,c语言_各种进制转换.docx

    c语言_各种进制转换.docx c 语言 各种进制转换 计算机中常用的数的进制主要有二进制.八进制.十六进制. 2 进制,用两个阿拉伯数字0.1: 8 进制,用八个阿拉伯数字0.1.2.3.4.5.6 ...

  8. 数据结构实验三 用栈实现进制转换和计算器

    在c++中栈已经有stl容器定义过了,在这里面我就不写栈的定义的那部分了(因为太麻烦了) 进制转换非常简单,尤其是这次只要求了十以内进制的转换,我们只需要先输入要转换的进制t,然后输入要转换的数n,每 ...

  9. 数据结构学习笔记:利用栈实现进制转换

    数据结构学习笔记:利用栈实现进制转换 一.除基倒取余法示意图 二.编写十进制转换成二进制Python程序 1.源代码 2.运行结果 其实Python提供了一

  10. 《解题报告》(第19讲) 进制转换(一) - 入门

    由于进来的晚,前面的算法虽然都补卡了,但是解题报告还没有写完,doing中 <算法零基础100讲>(第19讲) 进制转换(一) - 入门_英雄哪里出来-CSDN博客 剑指 Offer 15 ...

最新文章

  1. 只有程序员才懂的手势 | 每日趣闻
  2. DzzOffice增加应用对扩展名文件的支持设置,将会在Beta中提供。
  3. C++ vector的释放
  4. 122_Power PivotPower BI不连续日期的日环比
  5. 线上排查 | 线上Redis负载暴涨100%,业务中断,这样排查很赞!
  6. Bailian2976 Bailian1936 All in All【字符串匹配】
  7. 类扩展(Class Extension)
  8. 【Python】模糊匹配搜索
  9. Java的对象和类 以学生管理系统为例
  10. 好看流光风格个人主页源码
  11. Android控件:在《第一行代码(第二版)》学习RecyclerView的踩坑经过
  12. 医疗物联网行业调研报告 - 市场现状分析与发展前景预测
  13. 【第三方服务】微信公众平台授权登录
  14. Java二叉树基础操作常见代码例题
  15. C语言把csv文件转xls,Excel怎么批量将CSV格式转换为xlsx或xls格式?VBA、宏、软件?...
  16. idea文件夹代颜色代表的含义
  17. 怎么简单快速一个钟头入侵网站
  18. chroma8000使用_台湾致茂MES系统Chroma8000上使用更安全敏捷
  19. iOS开发之企业开发者账号打包发布 App 到服务器上的流程
  20. 利用stylecloud制作更酷炫的词云图

热门文章

  1. 饥荒联机 linux手把手开服教程
  2. 51单片机定时器频率计算
  3. Android ContentProvider基础应用
  4. seo网站关键词优化-搜索词和搜索结果观察_百度搜索
  5. CentOS7.3服务器内网离线部署docker和容器
  6. 48、SD卡 FATFS 文件系统
  7. 大数据:一个未知的“方程式”
  8. 进程和线程的概念和区别
  9. DataStage:While reading data for column HUANZHEXM, the connector received Oracle error code ORA-1406
  10. no qualifying bean of type TransactionManager avaliable 错误