C语言栈实现进制转换
栈-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语言栈实现进制转换相关推荐
- 用C语言栈实现进制转换
#include<stdio.h> #include<stdlib.h> #include<windows.h> #define MAXSIZE 100 typed ...
- c语言进制转换实验报告,c语言_各种进制转换.docx
c语言_各种进制转换.docx c 语言 各种进制转换 计算机中常用的数的进制主要有二进制.八进制.十六进制. 2 进制,用两个阿拉伯数字0.1: 8 进制,用八个阿拉伯数字0.1.2.3.4.5.6 ...
- c语言进制转换pdf下载,C语言实现任意进制转换.doc
C语言实现任意进制转换.doc includestdio.h#includemath.h#includestring.hvoid dtox(double num,int jz)char xnum100 ...
- 数据结构学习笔记:利用栈实现进制转换
数据结构学习笔记:利用栈实现进制转换 一.除基倒取余法示意图 二.编写十进制转换成二进制Python程序 1.源代码 2.运行结果 其实Python提供了一
- C语言中用栈实现进制转换,利用栈实现进制转换问题
进制转换问题 建立顺序栈或链栈,编写程序实现十进制数到二进制数的转换. 输入 输入只有一行,就是十进制整数. 输出 转换后的二进制数. 样例输入 10 样例输出 1010 十进制怎么转为二进制?十进制 ...
- c语言oj答案进制转换,C语言编程的进制问题问题
在我们的编译器,我用的是ADS 开发平台,现在RTC模块编程时,2410作为上位机,如下代码: n = rBCDDATE; if(n==1) time->day =0x31 ; 波斯历的日期 ...
- 数据结构实验三 用栈实现进制转换和计算器
在c++中栈已经有stl容器定义过了,在这里面我就不写栈的定义的那部分了(因为太麻烦了) 进制转换非常简单,尤其是这次只要求了十以内进制的转换,我们只需要先输入要转换的进制t,然后输入要转换的数n,每 ...
- 基础算法4 —— 结构体(成绩统计) + 栈(模拟进制转换 + 优秀的拆分) + 指针
结构体 结构体的实际应用场景: 在实际问题中,一组数据往往具有不同的数据类型.比如,某次期末考试中要记录一个学生的考试信息,除了有姓名(char)外,还有班级(int).性别(char).语文.数学. ...
- 从0开始学习C语言————数组、进制转换、函数
数组: 什么是数组: 变量的组合,是一种批量定义变量的方式 定义: 类型 数组名[数量]; int num1,num2,num3,num4,num5; int arr[5]; 使用:数组名[下标]; ...
最新文章
- WPF中如何将ListViewItem双击事件绑定到Command
- vc中出现stack overflow错误(VS设置默认栈大小)
- Win32ASM学习[2]:运算符
- 建造者模式什么时候使用?
- 怎么把一张暗的照片调亮_拍摄一张好照片有哪些步骤?看完这篇实操文章你就懂了...
- 距离之和最小 V3 51Nod - 1110(带权中位数或者爆搜)
- 工作以后就不怎么想学习了
- JAVA零为扩展_与Java的初遇——数据类型扩展
- 芯片烧录软件Android版,HiTool官方版
- VMware5.5-VMware补丁程序VUM
- 电力监控服务器维修,地铁电力监控系统(PSCADA)发生故障应该如何处理
- 人艰不拆~找实习之路。
- 微软MSN博客申请使用全功略(转)
- console.log(0.2+0.4===0.6)// true or false??
- 有哪些好用的App云测试平台
- UV法测量cod原理及特点
- Android GPU呈现模式分析功能,手机流畅度。仅供参考
- SMP、COW、PVP、MPP计算机相关
- MySQL:数据库压力测试报告
- springboot电子阅览室app 毕业设计-附源码016514