栈的应用:数制转换
数制转换:
十进制数N和其它d进制数的转换是计算机实现计算的基本问题,其解决方法很多,其中一种简单方法基于以下原理.
N=(N div d)*d+N mod d (其中:div为整除运算,mod 为求余运算.)
例如:10进制数1348转换为8进制为:2504.其运算过程如下:
N N div d N mod d
1348 168 4
168 21 0
21 2 5
2 0 2
假设现要编制一个满足下列要求的程序:对于输入的任意一个非负十进制整数,打印输出与其相等的八进制数,由于上述计算过程是从低位到高位顺序产生八进制数的各个位数,而打印输出,一般来说应从高位到低位进行,恰好和计算过程相反.因此,若将计算过程中得到的八进制数的各位顺序进栈,则按出栈序列打印输出的即为与输入对应的八进制数.
算法描述如下:
/* 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 版权所有.本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源.