栈的应用之进制转化

顺序栈的代码:

不再赘述:点击打开链接

							//栈的应用-----进制转化
#include"stack.h"
int main()
{
	Stack st;
	InitStack(&st);
	int select;
	int num1;     //要转化的数
	int num2;	  //转化之后各个位的数
	int flag = 1; //控制循环结束
	while(flag)
	{
		cout<<"****************进制转换*****************"<<endl;
		cout<<"*[1]十转二                     [2]十转八*"<<endl;
		cout<<"*[3]十转十六                   [4]退出  *"<<endl;
		cout<<"please choose the function num you:"<<endl;
		cin>>select;
		switch(select)
		{
		case 1: //2进制转化
			cout<<"input the num you want to transform:"<<endl;
			cin>>num1;
			while(num1)
			{
				Push(&st,num1%2);
				num1 /= 2;
			}
			cout<<"the result is :"<<endl;
			while(!IsEmpty(&st))
			{
				Pop(&st,&num2);
				cout<<num2;
			}
			cout<<endl;
			break;
		case 2: //8进制转化
			cout<<"input the num you want to transform:"<<endl;
			cin>>num1;
			while(num1)
			{
				Push(&st,num1%8);
				num1 /= 8;
			}
			cout<<"the result is :"<<endl;
			while(!IsEmpty(&st))
			{
				Pop(&st,&num2);
				cout<<num2;
			}
			cout<<endl;
			break;
		case 3: //16进制转化
			cout<<"input the num you want to transform:"<<endl;
			cin>>num1;
			while(num1)
			{
				Push(&st,num1%16);
				num1 /= 16;
			}
			cout<<"the result is :"<<endl;
			while(!IsEmpty(&st))
			{
				Pop(&st,&num2);
				if(num2 > 9)//A---F中的数
				{
					cout<<(char)(num2 - 10 + 'A');	//强制类型转化
				}
				else
					cout<<num2;//0----9中的数
			}
			cout<<endl;
			break;
		case 4:
			select = 0;
			break;
		default:
			break;
		}
	}
	destory(&st);
	return 0;
}

时间: 2024-07-31 14:25:57

栈的应用之进制转化的相关文章

c语言进制转化

#include <stdio.h> // 进制转化 int main(void) { int i1 = 12; int i2 = 88; int i3 = 0x32C; printf("八进制输出i1 = %o\n", i1); // 14 printf("十六进制输出i2 = %x\n", i2); // 58 printf("十六进制输出i3 = %x\n", i3); // 32c printf("十进制输出i3 =

Java Integer 进制转化的实现(附源码),对模与补码的理解

1.toBinaryString方法的实现 1 public static String toBinaryString(int i) { 2 return toUnsignedString0(i, 1); 3 } 4 private static String toUnsignedString0(int val, int shift) { 5 // assert shift > 0 && shift <=5 : "Illegal shift value";

计算机基础知识_进制转化

进制转化 一.任何一个进制转化为10进制的方式 156的十进制可以看做1*10^2 + 5*10^1  +   6*10^0 首先我们看一下156 ,平方,次方等等都是根据后面有多少位决定的,如果用计算机计算,则正好是156 33是一个八进制可以看做3*8^1+3*8^0 次方  换算出来就是10进制 如果你本身是x进制,那么你的数字就看做  num * x^位数  比如我有一个16进制的数字,转为10进制 16进制在计算机中表示方法: 1 2 3 4 5 6 7 8 9 a b c d e f

python数据结构:进制转化探索

*********************************第一部分******************************************************************* *********************************************************************************************************************** # 输入excel的行号,输出对应列的序号(从0开

标识符,进制转化,原反补码等

标识符 Java对包.类.方法.参数.变量等要素命名时使用的字符序列. 规则:***** 1.由字母(含中.英.日.俄等).数字.下划线_和美元符号$组成. 2.不能以数字开头   int 123a=1; 3.区分大小写  int a=1和int A=1是不一样的. 4.长度无限制.(一般编程长度不超过15个字符) 5.不能是Java中的保留字和关键字    int class="1"    int ainta=1 保留字和关键字都有哪些?我们知道以后应该避开它们. 标识符命名习惯:*

进制转化之递归 &amp;&amp; 栈

将10进制转换成2进制,是除以2得到的余数,再倒序排列,这可以用递归实现,也可以用数据结构--栈实现. 先看递归实现: 1 #include<stdio.h> 2 void to_two(int num); 3 int main() 4 { 5 int a = 10; 6 to_two(a); 7 8 return 0; 9 } 10 /*递归实现把一个数转成16/8/2进制*/ 11 //转16/8/2进制分别求余16/8/2,再除以16/8/2 12 //10 转 2进制 13 void

一个卓有成效的汇编优化范例--使用SSE2指令优化进制转化

我的一个感兴趣的编程方向是大数计算,因此用汇编语言写了很多大数计算方面的小程序,上周突然想出一个使用SSE2指令将整数转为16进制字符串的好主意,遂付诸实现.原以为至多可提速500%,那知测试后发现,相对于最初的C语言版本,速度竟提高20倍以上,兴奋之余,遂有了这篇博客文章. 这个程序主要示范将64bit一个整数转化为16进制字符串的功能,功能和算法都比较简单.我相信许多人都写过类似的程序,但不知有没有人尝试去你优化它.这个示范程序包括3个C语言版和1个使用SSE2指令的汇编语言版.下面我们给出

栈的实现,进制数转换以及符号匹配

//seqstack.h #ifndef _SEQSTACK_H #define _SEQSTACK_H #define STACK_SIZE 20 typedef int ElemType; //若要使用功能5 请将int 改为char #include<iostream> #include<assert.h> using namespace std; typedef struct Stack { ElemType *base; int capacity; int top; }S

java:数据结构(二)栈的应用(进制转换)

说到进制转换,java已经封装了基本的方法,在竞赛中使用封装的方法自然能节省大量时间 另一位仁兄介绍的封装好的方法: https://blog.csdn.net/m0_37961948/article/details/80438113 如果不想看上面的全部,我总结了两条基本方放,记下就可以随意转化: 掌握这两个方法就可以实现任意进制的随便转化 (这个是针对竞赛,如果是需要学习底层,大家还在看api研究吧) 再看一个水题: 题目描述 写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字