棧的應用 數制轉換

2021-08-27 02:44:09 字數 1068 閱讀 2456

數制轉換:

十進位制數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

假設現要編制乙個滿足下列要求的程式:對於輸入的任意乙個非負十進位制整數,列印輸出與其相等的八進位制數,由於上述計算過程是從低位到高位順序產生八進位制數的各個位數,而列印輸出,一般來說應從高位到低位進行,恰好和計算過程相反.因此,若將計算過程中得到的八進位制數的各位順序進棧,則按出棧序列列印輸出的即為與輸入對應的八進位制數.

演算法描述如下:

void conversion()

while(!stackempty(s))

}

這個是利用棧的先進後出特性的最簡單的例子.在這個例子中,棧操作的序列是直線式的,即先一味地進棧,然後一味的出棧.也許有人會提出疑問:用陣列直接實現不也很簡單嗎?仔細分析上述演算法不難看出,棧的引入簡化了程式設計的問題,劃分了不同的關注層次,使思考的範圍縮小了.而用陣列不僅掩蓋了問題的本質,還要分散精力去考慮陣列下標增減等細節.

完整**實現:

#include#includeusing namespace std;

void change(int n,int d)

遞迴實現十進位制轉換為八進位制:

/*

name: conversion.cpp

author: hehe.wang

date: 16-06-12 13:03

description: */

#include using namespace std;

void conversion(int n,int d) }

int main()

棧的應用(數制轉換)

程式功能 對於輸入的任意乙個非負十進位制整數,列印輸出與其等值的八進位制數。標頭檔案 c3 1.h ifndef c 3 1 h define c 3 1 h include include include define true 1 define false 0 endif algorithm.h...

數制轉換 棧的應用

問題描述 將乙個非負的十進位制整數n轉換為另乙個等價的基為b的b進製數的問題。解答 按除2取餘法,得到的餘數依次是1 0 1 1,則十進位制數轉化為二進位制數為1101。分析 由於最先得到的餘數是轉化結果的最低位,最後得到的餘數是轉化結果的最高位,因此很容易用棧來解決。如下 include incl...

棧的應用1 數制轉換

一般分為 二 八 十 十六這幾種常見的 沒錯就是我現在能見到的 x進製就是0 x 1構成每一位,就如二進位制是0 1,八進位制是0到7 數制轉換一直是計算機的乙個基本問題,目前已經有了很多的解決方法。如果是其他進製轉換十進位制 因為十進位制多數人還是比較熟悉的,畢竟買菜時價錢不是二進位制的 先找到每...