数据结构实践项目--------进制转换器

 


#include <stdio.h>
#include <string.h>
#include <math.h>
int top=-1; //top 变量时刻表示栈顶元素所在位置
void push(char* a,char elem)
{
    a[++top]=elem;
}
void pop(char* a)
{
    if(top==-1)
    {
        return;
    }

    //输出时要按照正确的格式显示给用户
    if (a[top]>=10)
    {
        printf("%c",a[top]+55);
    }
    else{
        printf("%d",a[top]);

    }
    top--;
}


//将各进制数转换成十进制数
int scaleFun(char* data,int system)
{
    int k=(int)strlen(data)-1;
    int system_10_data=0;
    int i;
    for(i=k;i>=0;i--)
    {
        int temp;

        //字符转数字
        if(data[i]>=48 && data[i]<=57)
        {
            temp=data[i]-48;
        }
        else
        {
            temp=data[i]-55;
        }

        //按权相加获得10进制 
        system_10_data+=temp*pow(system,k-i);
    }
    return system_10_data;
}

int main()
{
    char data[100];
    printf("进制转换器,请输入原数据的进制(2-36):");
    int system;
    scanf("%d",&system);
    getchar();      //清除回车符
    printf("请输入要转换的数据:");
    scanf("%s",data);
    getchar();
    int system_10_data=scaleFun(data,system);
    printf("请输入转换后的数据的进制:");
    int newSystem;
    scanf("%d",&newSystem);
    getchar();

/*十进制整数转换为 N 进制整数采用“除 N 取余,逆序排列”法。具体做法是:
将 N 作为除数,用十进制整数除以 N,可以得到一个商和余数;
保留余数,用商继续除以 N,又得到一个新的商和余数;
仍然保留余数,用商继续除以 N,还会得到一个新的商和余数;
把先得到的余数作为 N 进制数的低位数字,后得到的余数作为 N 进制数的高位数字,
依次排列起来,就得到了 N 进制数字。*/

    while(system_10_data/newSystem)
    {
        push(data,system_10_data%newSystem);
            system_10_data/=newSystem;
    }
    push(data,system_10_data%newSystem);

    printf("转换后的结果为:\n");
    while(top!=-1)
    {
        pop(data);
    }
    printf("\n");

}
root@book-virtual-machine:/mnt/hgfs/lua/C++# g++  -std=c++11 salman_0119.cpp -o salman_0119
root@book-virtual-machine:/mnt/hgfs/lua/C++# ./salman_0119
进制转换器,请输入原数据的进制(2-36):10
请输入要转换的数据:100
top==-1请输入转换后的数据的进制:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Oracle Database 11g初学者指南 基本信息 原书名: Oracle Database 11g, A Beginner's Guide 原出版社: McGraw-Hill Osborne Media 作者: (美)Ian Abramson    Michael Abbey    Michael Corey 译者: 窦朝晖 出版社:清华大学出版社 ISBN:9787302218937 上架时间:2010-2-20 出版日期:2010 年1月 开本:16开 页码:288 版次:1-1 内容简介   本书能使读者快捷地掌握oracle database 11g的基础知识。通过自我评估教程,介绍了核心数据库技术、管理员职责、高可用性以及大型数据库特性。本书带领读者循序渐地学习数据库设置、管理、编程、备份和恢复。还深入介绍了sql和pl/sql。为了易于学习,这本独特的oracle press指南是这样组织的:    ·核心概念——oracle database 11g主题呈现在按逻辑组织的章节中    ·主要内容——每章要介绍的具体内容列表    ·实践练习——演示如何应用在每章学到的关键技术    ·学习效果测试——对学习效果的快速自我评估    ·注意——与所介绍主题相关的额外信息    ·章节测验——每章结束时的测验测试读者对所学知识的掌握程度 作译者 作者   Ian Abramson是IOUG(Independent Oracle Users Group)现任总裁,现居加拿大多伦多,他是业界资深技术顾问,为电信、CRM、公用事业和其他行业的客户提供实现方案的专业指导。他的关注方向包括Oracle产品集,以及其他前沿技术和这些技术在优化数据仓库设计和部署的应用。他还是各种技术会议的主讲人,包括COLLABORATE、Oracle OpenWorld和其他地方与区域会议。   Michael Abbey是公认的数据库管理、安装、开发、应用迁移、性能调优和实现方面的权威。在过去的14年中,他与IanAbramson和MichaelCorey为OraclePress合著了一系列图书.Abbey在国际Oracle用户团体非常活跃,经常出席COLLABORATE、OraclecOpenWorld和区域性用户组会议.   Michael J.Corey是Ntirety(ThecDatabasecAdministrationcExperts)的创始人和CEO.Michael的数据库情结可追溯到Oraclec3.0.Michael是IOUG(www.ioug.org)的前总裁和早期的Oraclec Press作者.他经常在世界各地的商业和技术会议上行学术交流.他的博客是http://michaelcorey.ntirety.com   Michelle Malcher是一名高级数据库管理员,在数据库开发、设计和管理方面具有十多年经验.她是性能调优、安全、数据建模和超大型数据库环境数据库体系结构方面的专家.她是IOUG Best Practices Tip Booklet的特约作者.Michelle积极参加IOUG活动,是特殊兴趣组的负责人.在技术会议和用户组会议上她乐于展现和分享有关Oracle数据库主题的思想.她的Email是[email protected]. 目录 封面 -14 封底 -13 扉页 -12 版权 -11 关于作者 -10 前言 -8 目录 -5 第1章 数据库基础 1 1.1 数据库定义 2 1.2 Oracle Database 11g的体系结构 3 1.2.1 控文件 4 1.2.2 联机重做日志 4 1.2.3 System表空间 4 1.2.4 Sysaux表空间 4 1.2.5 默认的临时表空间 5 1.2.6 Undo表空间 5 1.2.7 服务器参数文件 5 1.2.8 后台程 5 1.2.9 数据库管理员 7 1.3 Oracle Database 11g的基本数据类型 8 1.3.1 varchar2 8 1.3.2 数字 9 1.3.3 日期 9 1.3.4 时间戳 9 1.3.5 clob 10 1.3.6 blob 10 1.4 表 10 1.5 存储对象 11 1.5.1 视图 12 1.5.2 触发器 12 1.5.3 过程 13 1.5.4 函数 13
本书是在第3版《MCS:51单片机应用设计》一书的基础上,从应用的角度,详细地介绍了MCS:51单片机的硬件结构、指令系统、各种硬件接口设计、各种常用的数据运算和处理程序、接口驱动程序以及MCS:51单片机应用系统的设计,并对MCS:51单片机应用系统设计中的抗干扰技术以及各种新器件也作了详细的介绍。本书突出了选取内容的实用性、典型性。书中的应用实例,大多来自科研工作及教学实践,且经过检验。内容丰富、详实。本书可作为工科院校的本科生、研究生、专科生单片机课程的教材以及毕业设计的参考资料,也可供从事自动控、智能、仪器、仪表、电力、电子、机电一体化以及各类MCS:51单片机应用的工程技术人员参考。 第1章 单片机概述 1.1 什么是单片机 1.2 单片机的历史及发展概况 1.3 8位单片机的主要生产厂家和机型 1.4 单片机的发展趋势 1.5 单片机的应用 1.6 MCS-51系列单片机 思考题及习题 第2章 MCS—51单片机的硬件结构 2.1 MCS-51单片机的硬件结构 2.2 MCS-51的引脚 2.2.1 电源及时钟引脚 2.2.2 控引脚 2.2.3 I/O 引脚 2.3 MCS-51的微处理器 2.3.1 运算器 2.3.2 控器 2.4 MCS-51存储器的结构 2.4.1 程序存储器 2.4.2 内部数据存储器 2.4.3 特殊功能寄存器(SFI{) 2.4.4 位地址空间 2.4.5 外部数据存储器 2.5 并行L/O端口 2.5.1 P0口 2.5.2 P1 口 2.5.3 p2口 2.5.4 P3口 2.5.5 PO-P3口电路小结 2.6 时钟电路与时序 2.6.1 时钟电路 2.6.2 机器周期和指令周期 2.6.3 MCS-51的指令时序 2.7 MCS-51的复位和复位电路 2.7.1 复位操作 2.7.2 复位电路 思考题及习题 第3章 MCS—51单片机指令系统 3.1 指令系统概述 3.2 指令格式 3.3 指令系统的寻址方式 3.4 MCS-51单片机指令系统分类介绍 3.4.1 数据传送类指令 3.4.2 算术操作类指令 3.4.3 逻辑运算指令 3.4.4 控转移类指令 3.4.5 位操作指令 3.5 MCS-51汇编语言的伪指令 思考题及习题 第4章 MCS—51的中断系统 4.1 中断的概念 4.2 MCS-51中断系统的结构 4.3 中断请求源 4.4 扣断控 4.4.1 中断允许寄存器m 4.4.2 中断优先级寄存器IP 4.5 中断响应 4.6 外部中断的响应时间 4.7 外部中断的触发方式选择 4.7.1 电平触发方式 4.7.2跳沿触发方式 4.8 中断·清求的撤消 4.9 中断服务程序的设计 4.10 多外部中断源系统设计 4.10.1 定时器/计数器作为外部中断源的使用方法 4.10.2 中断和查询结合的方法 4.10.3 用优先权编码器扩展外部中断源 思考题及习题 第5章 MCS—51的定时器/计数器 5.1 定时器/计数器的结构 5.1.1 工作方式寄存器TMOD 5.1.2 定时器/计数器控寄存器TCON 5.2 定时器/计数器的4种工作方式 5.2.1 方式0 5.2.2 方式1 5.2.3 方式2 5.2.4 方式3 5.3 定时器卅数器对外部计数输入信号的要求 5.4 定时器卅数器编程和应用 5.4.1 方式0应用 5.4.2 方式1应用 5.4.3 方式2的应用 5.4.4 方式3的应用 5.4.5 门控位CATE的应用—测量脉冲宽度 5.4.6 实时时钟的设计 5.4.7 运行中读定时器/计数器 思考题及习题 第6章 MCS—51的串行口 6.1 串行口的结构 6.1.1 串行口控寄存器SCON 6.1.2 特殊功能寄存器PCON 6.2 串行口的4种工作方式 6.2.1 方式0 6.2.2 方式1 6.2.3 方式2 6.2.4 方式3 6.3 多机通讯 6.4 波特率的设定 6.4.1 波特率的定义 6.4.2 定时器T1产生波特率的计算 6.5 串行口的编程和应用 6.5.1 串行口方式1应用编程(双机通讯) 6.5.2 串行口方式2应用编程 6.5.3 串行口方式3应用编程(双机通讯) 思考题及习题 第7章 MCS—51扩展存储器的设计 7.1 概述 7.2 系统总线及总线构造 7.2.1 系统总线 7.2.2 构造系统总线 7.2.3 单片机系统的串行扩展技术 7.3 读写控、地址空间分配和外部地址锁存器 7.3.1 存储器扩展的读写控 7.3.2 存储器地址空间分配 7.3.3 外部地址锁存器 7.4 程序存储器EPROM的扩展 7.4.1 EPROM芯片介绍 7.4.2 程序存储器的操作时序 7.4.3 典型的EPROM接口电路 7.5 静态数据存储器的扩展 7.5.1 常用的静态RAM(SRAM)芯片 7.5.2 外扩数据存储器的读写操作时序 7.5.3 典型的外扩数据存储器的接口电路 7.6 EPROM和RAM的综合扩展 7.6.1 综合扩展的硬件接口电路设计 7.6.2 外扩存储器电路的工作原理及软件设计 7.7 E2PROM的扩展 7.7.1 常用的E2PROM芯片 7.7.2 E2PROM的工作方式 7.7.3 MCS—51扩展Z2PROM的方法 7.8 ATMEL89C51/89C55单片机的片内闪烁存储器 7.8.1 89C51的性能及片内闪烁存储器 7.8.2 片内闪烁存储器的编程 7.9 其他的特殊存储器简介 思考题及习题 第8章 MCS—51的UO接口扩展 8.1 I/O扩展概述 8.1.1 I/O接口的功能 8.1.2 I/O端口的编址 8.1.3 I/O数据的几种传送方式 8.1.4 常用的I/O接口电路芯片 8.2 MCS—51扩展可编程并行I/O芯片8255A 8.2.1 8255A芯片介绍 8.3 MCS—51与可编程RAM/IO芯片8155H的接口 8.3.1 8155H芯片介绍 8.3.2 MCS—51与8155H的接口及软件编程 8.4 用74LSTIL电路扩展并行I/O口 8.4.1 用74LS377扩展8位并行输出口 8.4.2 用74LS373扩展8位并行输入口 8.4.3 用三态门扩展8位并行输入口 8.4.4 采用74LSTrL的I/O接口扩展应用举例 8.5 用MCS—51的串行口扩展并行口 8.5.1 用741j165扩展并行输入口 8.5.2 用74LS164扩展并行输出口 思考题及习题 第9章 MCS—5重与键盘、显示器、拨盘、打印机的接口设计 9.I LED显示器接口原理 9.1.1 LED显示器结构 9.1.2 LED显示器工作原理 9.2 键盘接口原理 9.2.1 键盘输入应解决的问题 9.2.2 键盘接口的工作原理 9.2.3 键盘工作方式 9.2.4 双功能键的设计 9.3 键盘/显示器接口设计实例 9.3.1 利用8155H芯片实现键盘/显示器接口 9.3.2 利用8031的串行口实现键盘/显示器接口 9.3.3 利用专用键盘/显示器接口芯片8279实现键盘/显示器接口 9.4 MCS-51与液晶显示器(比D)的接口 9.4.1 1尤D显示的分类 9.4.2 点阵式液晶显示模块介绍 9.4.3 8031与I尤D模块(LCM)的接口及软件编程 9.5 MCS—51与微型打印机的接口 9.5.1 MCS—51与TPUP—40A/16A微型打印机的接口 9.5.2 MCS—51与CPl6微型打印机的接口 9.5.3 MCS—5l与XLF微型打印机的接口 9.6 MCS—51单片机与BCD码拨盘的接口设计 9.6.1 BCD码拨盘 9.6.2 BCD码拔盘与单片机的接口 9.7 MCS—51与功能开关的接口设计 思考题及习题 第10章 MCS—51与D/A、A/D的接口 10.1 MCS—51与DAC的接口 10.1.1 D/A转换器概述 10.1.2 MCS—51与8位DACO832的接口 10.1.3 MCS—51与12位DACl208系列的接口 10.1.4 MCS—51与nACl230系列的接口 10.2 MCS—51与ADC的接口 10.2.1 A/D转换器概述 10.2.2 MCS—51与ADC08凹(逐次逼近型)的接口 10.2.3 MCS-51与AD574(逐次逼近型)的接口 10.2.4 MCS—51与A/D转换器MCl4433(双积分型)的接口 10.2.5 MCS—51与ICL7135(双积分型)的接口 10.2,6 MCS—51与ICL7109(双积分型)的接口 10.3 MCS—51与V/F转换器的接口 10.3.1 用V/F转换器实现A/D转换的方法 10.3.2 常用V/F转换器LMX31简介 10.3.3 V/F转换器与MCS—51单片机接口 10.3.4 LM331应用举例 思考题及习题 第11章 MCS—5亚的功率接口 11.1 MCS—51输出驱动能力及其外围集成数字驱动电路 11.1.1 MCS—51片内I/O口的驱动能力 11.1.2 外围集成数字驱动电路 11.2 MCS—51的开关型功率接口 11.2.1 MCS—51与光电耦合器的接口 11.2.2 MCS—51与继电器的接口 11.2.3 MCS—51与晶闸管的接口 11.2.4 MCS—51与集成功率电子开关输出接口 11.2.5 MCS—51与固态继电器的接口 1.1.2.6 低压开关量信号输出技术 第12章 MCS—5重的串行通讯接口技术 12.1 各种标准串行通讯接口 12.1.1 RS—232C接口 12.1.2 lis—422A接口 12.1.3 RS—485接口 12.1.4 20mA电流环串行接口 12.1.5 各种串行接口性能比较 12.2 MCS—51单片机双机串行通讯技术 12.2.1 双机通讯接口设计 12.2.2 双机通讯软件设计 12.3 MCS—51的多机通讯技术 12.3.1 多机通讯原理 12.3.2 多机通讯接口设计 12.3.3 多机通讯软件设计 12.4 PC机与MCS-51单片机的双机串行通讯 12.4.1 PC机异步通讯适配器 12.4.2 RS-232C至RS-422/贴-485的转换方法 12.4.3 PC机与8031单片机双机通讯的接口设计 12.4.4 PC机与8031双机通讯的软件设计 12.5 PC机与多个M帕—51单片机间的串行通讯 12.5.1 多机通讯原理 12.5.2 多机通讯接口设计 12.5.3 多机通讯软件设计 12.6 串行通讯中的波特率设置技术 12.6.1 PC机中波特率的产生 12.6.2 MCS—51单片机串行通讯波特率的确定 12.6.3 波特率相对误差范围的确定方法 12.6.4 SMOD位对波特率的影响 第13章 MCS—51的其他扩展接口及实用电路 13.1 MCS—51单片机与日历时钟芯片的接口设计 13.1.1 DSl2887日历时钟芯片的性能及引脚说明 13.1.2 使用说明 13.1.3 M帕—51与DSl2887的接口设计 13.2 MCS—51单片机报警接口 13.2.1 鸣音报警接口 13.2.2 语音报警接口 13.3 MCS—51与可编程定时器/计数器芯片8253的接口 13.3.1 8253的内部结构、引脚及端口编址 13.3.2 8253工作方式和控字定义 1.3.3,3 8253的工作方式与操作时序 13.3.4 MCS—51与8253的接口和编程实例 13.4 MCS—51与微处理器监控器MAX690A/MAX692A的接口 13.4:1 MAX690A/MAX692A简介 13.4.2 工作原理 13.4.3 MCS—51单片机与MAX690A/MAX692A的接口 13.5 高精度电压基准 13.5.1 精密电压基准MCl403(5G1403) 13.5.2 单片集成精密电压芯片AD584 13.1.3 其他电压基准 第14章 MCS—51程序设计及实用子程序 14.1 查表程序设计 14.2 数据极值查找和数据排序 14.2.1 数据极值查找 14.2.2 数据排序 14.3 散转程序设计 1.4.3.1 使用转移指令的散转程序 14.3.2 使用地址偏移量表的散转程序 14.3.3 使用转向地址表的散转程序 14.3.4 利用RET指令实现的散转程序 14.4 循环程序设计 14.4.1 单循环定时程序 14.4.2 多重循环定时程序 14.5 定点数运算程序设计 14.5.1 定点数的表示方法 14.5.2 定点数加减运算 14.5.3 定点数乘法运算 14.5.4 定点数除法 14.6 浮点数运算程序设计 14.6.1 浮点数的表示 14.6.2 浮点数的加减法运算 14.6.3 浮点数乘除法运算 14.6.4 定点数与浮点数的转换 14.7 码转换 14.7.1 二码与ASCII码的转换 14.7.2 二码到BCD码的转换 14.7.3 BCD码到二码的转换 14.8 数字滤波 14.8.1 算术平均值法 14.8.2 滑动平均值法 14.8.3 防脉冲干扰平均值法 第15章 MCS—51应用系统设计、开发与调试 15.1 MCS—51应用系统设计 15.1.1 设计步骤 15.2 应用系统的硬件设计 15.3 MCS-51单片机系统举例 15.3.1 89C51最小应用系统 15.3.2 8031最小应用系统 15.3.3 典型应用系统 15.3.4 数据采集系统 15.4 应用系统的软件设计 15.5 单片机应用系统的开发和调试 15.5.1 仿真开发系统简介 15.5.2 用户样机开发调试过程 第16章 MCS—51应用系统的可靠性及抗干扰设计 16.1 干扰的来源 16.2 供电系统干扰及抗干扰措施 16.2.1 电源噪声来源、种类及危害 16.2.2 供电系统的抗干扰设计 16.3 过程通道干扰的抑措施 16.3.1 隔离措施 16.3.2 长线传输干扰的抑 16.4 空间干扰及抗干扰措施 16.4.1 接地技术 16.4.2 屏蔽技术 16.5 反电势干扰的抑 16,6 印刷电路板的抗干扰设计 16.6.1 地线及电源线设计 16.6.2 去耦电容的配置 16.6.3 存储器的布线 16.6.4 印板的布线原则 16.6.5 印板上的器件布置 16.6.6 印板的板间配线、连接和安装 16.7 软件抗干扰措施 16.7.1 软件抗干扰的前提条件 16.7.2 软件抗干扰的一般方法 16.7.3 软件滤波 16.7.4 开关量输入/输出软件抗干扰设计 16.7.5 指令冗余及软件陷阱 16.8 “看门狗”技术和故障自动恢复处理 16.8.1 “看门狗”技术 参考文献

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寰宇C++

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值