栈-10进制任意转换

设计思路

例如讲10进制转换为2进制计算思路为:

利用循环将每一个余数都压入栈中,再遍历出栈

转换代码:

/*进制转换
*/
scStack *sysConvert(int num,int system,scStack *sys){while(num > 0){syS = push(syS,num % system);num /= system;}return syS;   //返回栈顶
}

如果10进制转换成16进制则10->a \ 11->b \ 12->c \ 13->d \ 14->e \ 15->f

则在出栈的时候判断一下是否为大于等于10的数

/*余数出栈
*/
void pop(scStack *stack){while(stack){scStack *top = stack;top->elem >= 10 ? printf("%c",top->elem + 'a' - 10) : printf("%d",top->elem);stack = stack->next;free(top);}cout<<endl<<"转换完毕!"<<endl;
}

运行结果

10->2


10->16

代码如下

#include <iostream>
#include <malloc.h>
using namespace std;/**** 结 构 体 声 明 ****/
typedef struct scStack{struct scStack *next;int elem;
}scStack;/**** 函 数 声 明 ****/
//进制转换函数,num为10进制数,system为转换目标进制,sys为栈空间
scStack *sysConvert(int num,int system,scStack *sys);
scStack *push(scStack *stack,int elem);               //入栈
void pop(scStack *stack);                             //出栈/*进制转换
*/
scStack *sysConvert(int num,int system,scStack *sys){while(num > 0){syS = push(syS,num % system);num /= system;}return syS;   //返回栈顶
}/*余数入栈
*/
scStack *push(scStack *stack,int elem){scStack *newStack = (scStack *)malloc(sizeof(scStack));newStack->elem = elem;newStack->next = stack;stack = newStack;return stack;
}/*余数出栈
*/
void pop(scStack *stack){while(stack){scStack *top = stack;top->elem >= 10 ? printf("%c",top->elem + 'a' - 10) : printf("%d",top->elem);stack = stack->next;free(top);}cout<<endl<<"转换完毕!"<<endl;
}/*主函数
*/
int main(){scStack *stack = NULL; //初始化栈int num,system;cout<<"请输入一个10进制数:";cin>>num;cout<<"请输入想要转换为多少进制:";cin>>system;stack = sysConvert(num,system,stack);pop(stack);return 0;
}

C语言栈实现进制转换相关推荐

  1. 用C语言栈实现进制转换

    #include<stdio.h> #include<stdlib.h> #include<windows.h> #define MAXSIZE 100 typed ...

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

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

  3. c语言进制转换pdf下载,C语言实现任意进制转换.doc

    C语言实现任意进制转换.doc includestdio.h#includemath.h#includestring.hvoid dtox(double num,int jz)char xnum100 ...

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

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

  5. C语言中用栈实现进制转换,利用栈实现进制转换问题

    进制转换问题 建立顺序栈或链栈,编写程序实现十进制数到二进制数的转换. 输入 输入只有一行,就是十进制整数. 输出 转换后的二进制数. 样例输入 10 样例输出 1010 十进制怎么转为二进制?十进制 ...

  6. c语言oj答案进制转换,C语言编程的进制问题问题

    在我们的编译器,我用的是ADS   开发平台,现在RTC模块编程时,2410作为上位机,如下代码: n = rBCDDATE; if(n==1) time->day =0x31 ; 波斯历的日期 ...

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

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

  8. 基础算法4 —— 结构体(成绩统计) + 栈(模拟进制转换 + 优秀的拆分) + 指针

    结构体 结构体的实际应用场景: 在实际问题中,一组数据往往具有不同的数据类型.比如,某次期末考试中要记录一个学生的考试信息,除了有姓名(char)外,还有班级(int).性别(char).语文.数学. ...

  9. 从0开始学习C语言————数组、进制转换、函数

    数组: 什么是数组: 变量的组合,是一种批量定义变量的方式 定义: 类型 数组名[数量]; int num1,num2,num3,num4,num5; int arr[5]; 使用:数组名[下标]; ...

最新文章

  1. WPF中如何将ListViewItem双击事件绑定到Command
  2. vc中出现stack overflow错误(VS设置默认栈大小)
  3. Win32ASM学习[2]:运算符
  4. 建造者模式什么时候使用?
  5. 怎么把一张暗的照片调亮_拍摄一张好照片有哪些步骤?看完这篇实操文章你就懂了...
  6. 距离之和最小 V3 51Nod - 1110(带权中位数或者爆搜)
  7. 工作以后就不怎么想学习了
  8. JAVA零为扩展_与Java的初遇——数据类型扩展
  9. 芯片烧录软件Android版,HiTool官方版
  10. VMware5.5-VMware补丁程序VUM
  11. 电力监控服务器维修,地铁电力监控系统(PSCADA)发生故障应该如何处理
  12. 人艰不拆~找实习之路。
  13. 微软MSN博客申请使用全功略(转)
  14. console.log(0.2+0.4===0.6)// true or false??
  15. 有哪些好用的App云测试平台
  16. UV法测量cod原理及特点
  17. Android GPU呈现模式分析功能,手机流畅度。仅供参考
  18. SMP、COW、PVP、MPP计算机相关
  19. MySQL:数据库压力测试报告
  20. springboot电子阅览室app 毕业设计-附源码016514

热门文章

  1. Flowable 流程实例的挂起(暂停)与激活
  2. 《AutoCAD全套园林图纸绘制自学手册》一1.3 园林布局
  3. SAS|where keep rename
  4. mysql后台密码_mysql怎么改网站后台密码
  5. Webug4.0 越权修改密码
  6. CCA OBSS/PD
  7. c语言实现补码转换成原码(原->补同理)
  8. C 和 C++ 开源库的清单
  9. 企业如何选择合适的CRM系统 CRM系统推荐
  10. Android高级-阿里VLayout使用和原理分析