数制转换:十进制数N和其它d进制数的转换是计算机实现计算的基本问题,其解决方法很多,其中一种简单方法基于以下原理.N=(N div d)*d+N mod d (其中:div为整除运算,mod 为求余运算.)例如:10进制数1348转换为8进制为:2504.其运算过程如下:N N div d N mod d1348 168 4168 21 021 2 52 0 2假设现要编制一个满足下列要求的程序:对于输入的任意一个非负十进制整数,打印输出与其相等的八进制数,由于上述计算过程是从低位到高位顺序产生八进制数的各个位数,而打印输出,一般来说应从高位到低位进行,恰好和计算过程相反.因此,若将计算过程中得到的八进制数的各位顺序进栈,则按出栈序列打印输出的即为与输入对应的八进制数.算法描述如下:
void conversion()
{
InitStack(s);
scanf(" %d",N);
while(N)
{
push(s,n%8)
N=N/8;
}
while(!StackEmpty(s))
{
Pop(S,e);
printf("%d",e);
}
}
这个是利用栈的先进后出特性的最简单的例子.在这个例子中,栈操作的序列是直线式的,即先一味地进栈,然后一味的出栈.也许有人会提出疑问:用数组直接实现不也很简单吗?仔细分析上述算法不难看出,栈的引入简化了程序设计的问题,划分了不同的关注层次,使思考的范围缩小了.而用数组不仅掩盖了问题的本质,还要分散精力去考虑数组下标增减等细节.
完整代码实现:
#include<iostream>
#include<stack>
using namespace std;
void change(int n,int d)
{
stack<int>s;
int temp;
int i=0;
if(n<d)
{
cout<<n<<endl;
}
else
{
while(n)
{
temp=n%d;
s.push(temp);
n=n/d;
}
while(!s.empty())
{
temp=s.top();
cout<<temp;
s.pop();
}
cout<<endl;
}
}
void main()
{
int x,y;
cout<<"请输入你要转换的数字"<<endl;
cin>>x;
cout<<"请输入你要转换的进制"<<endl;
cin>>y;
change(x,y);
}
递归实现十进制转换为八进制:/*
Name: conversion.cpp
Copyright: www.52coder.net
Author: HeHe.wang
Date: 16-06-12 13:03
Description:
*/
#include <iostream>
using namespace std;
void conversion(int N,int d)
{
int temp=N%d;
N=N/d;
if(N==0)
cout<<temp;
else
{
conversion(N,d);
cout<<N%d;
}
}
int main()
{
conversion(7,2);
system("pause");
}
文章出自:我爱程序员
http://www.52coder.net/archives/1039.html 版权所有.本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源.
分享到:
相关推荐
大连理工大学数据结构上机
计算机专业数据结构的课程的内容,主要运用栈的原理解决一些问题
3、掌握用顺序栈进行数制转换的运算。 二、实验内容 1、以顺序存储结构,建立栈; 2、实现用顺序栈进行数制转换。 三、实验要求 1、认真阅读和理解与本实验有关的课本内容,预先写出源代码; 2、上机输入源程序、...
演示了使用栈完成两种简单的应用:数制转换和括号匹配,前者将10进制数转换成指定的进制数,后者计算一个字符串中的匹配括号对数。
基本思想: 数制转换方法 N = (Ndiv8)10´ 8+N mod 8 N:十进制数,div:整除运算,mod:求余运算。 计算时从低位到高位顺序产生八进制数的各个数位显示时按从高位到低位的顺序输出
实验二栈的应用(数制转换).pdf
实验二+++栈的应用(数制转换)知识分享.pdf
栈的简单应用:数制转换问题(将十进制数N转换为r进制的数) 若 N≠0,则将N % r 压入栈s中 ,执行2;若N=0,将栈s的内容依次出栈,算法结束。 2. 用N / r 代替 N
数据结构的重要算法应用 ,栈,进制转换,可用于计算的,栈的应用
数据结构的应用,用栈实现数制转换。
数据结构实验报告-栈进制转换.docx
实验一 栈的应用 数制转换 1.程序设计简介 该程序以顺序栈为工具,实现十进制数到其他一至十六进制数的转换。 设计中采用了一个循环,使得用户可重复进行数制转换。需转换的十进制数和要转换的 数制均通过交互方式...
主要介绍了数据结构 中数制转换(栈的应用)的相关资料,需要的朋友可以参考下
栈的基本操作,包含链栈的init,push,pop,trival, isempty,getlength,clear,destory,gettop。 栈的应用举例:数制转换,括号匹配,表达式求值
1.数制转换问题 2.求后缀表达式 3.舞会 4.连通块 二、实验目的 1.掌握算法设计中的递归结构; 2.掌握栈的顺序表示、链表表示以及相应操作的实现。(特别注意栈空和栈满 的条件); 3.掌握队列的顺序表示、链表表示...
栈的基本操作(包括进制转换、回文序列判断)(C语言)
用c++程序设计来实现进制转换即栈的应用
栈的练习题目:括号匹配 数制转换 队列的练习题,队列
栈和队列的应用这是数据结构试验报告关于栈和队列的!