數制轉換:
十進位制數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 數制轉換一直是計算機的乙個基本問題,目前已經有了很多的解決方法。如果是其他進製轉換十進位制 因為十進位制多數人還是比較熟悉的,畢竟買菜時價錢不是二進位制的 先找到每...