學習資料結構的棧之後,為了鞏固加深對棧的理解,通過實現乙個棧的操作來解決二進位制數轉十進位制數的問題,壓棧操作使用輸入流cin來讀入資料,cin會忽略回車符,因此不再需要getchar來對其進行**,相比scanf會更加簡潔方便,直接上**:
#include"stdafx.h"
#include"stdlib.h"
#include"math.h"
#includeusing namespace std;
#define stack_init_size 20 //定義棧的初始大小
#define stackincrement 10 //增加棧容量
typedef char elemtype;
typedef struct
sqstack;
/****初始化棧****/
void initstack(sqstack *s)
s->top = s->base;
s->stacksize = stack_init_size;
}/****壓棧****/
void push(sqstack *s,elemtype e)
*(s->top) = e;
s->top++;
}/****出棧****/
void pop(sqstack *s, elemtype *e)
*e = *--(s->top);
}int stacklen(sqstack s)
int main()
//getchar(); //cin輸入流會忽略回車符,因此不需要使用getchar()**回車符
len = stacklen(s);
cout << "棧的長度為"<**實現了棧的基本操作,同時實現了輸入二進位制數轉化為十進位制數的功能,另外,在使用cin讀入資料時,while迴圈處的**這樣寫編譯出錯:
while(cin>>c)
使用ctrl+z結束輸入流,後續結果出錯或顯示之前正確執行的結果,目前還不清楚問題所在,如果有知道癥結在何處的程式設計師,麻煩指點一二。 二進位制如何轉十進位制,十進位制如何轉二進位制
學計算機的朋友剛開始學習時都要接觸進製之間的轉換,二進位制 十進位制 八進位制 十六進製制等,這個是很枯燥的,轉來轉去就轉矇圈了,別蒙別蒙,今天咱們乙個乙個搞定,看看二進位制和十進位制之間如何相互轉換的。轉成二進位制主要有以下幾種 正整數轉二進位制,負整數轉二進位制,小數轉二進位制 1 正整數轉成二...
二進位制如何轉十進位制,十進位制如何轉二進位制
二進位制如何轉十進位制,十進位制如何轉二進位制 1 正整數轉成二進位制。要點一定一定要記住哈 除二取餘,然後倒序排列,高位補零。也就是說,將正的十進位制數除以二,得到的商再除以二,依次類推知道商為零或一時為止,然後在旁邊標出各步的餘數,最後倒著寫出來,高位補零就ok咧。哎呀,還是舉說明吧,比如42轉...
Python二進位制轉十進位制演算法 十進轉二進位制演算法
二進位制數轉換成十進位制數 二進位制數從右向左每位數乘以2的次方 從0開始,從右向左依次 1 然後相加求和即可 如 0101轉成十進位制為 1 20 0 21 1 22 0 23 1 0 4 0 5 演算法實現 coding utf 8 b raw input 請輸入乙個二進位制數 decode u...