您好,登錄后才能下訂單哦!
本篇文章為大家展示了怎么編寫利用棧實現二進制轉換十六進制的完整C代碼,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
/* 二進制轉換為十進制 */ #include<stdio.h> #include<stdlib.h> #define INCREMENT 8 typedef char Elemtype; typedef struct Stack { Elemtype *top; Elemtype *base; int stackSize; }Stack; Stack *initStack( int n ) //棧初始化函數 { Stack *s = (Stack *)malloc(sizeof(Stack)); s -> base = ( Elemtype * )malloc( sizeof(Elemtype) * n ); if ( s -> base == NULL ) exit(0); s -> top = s -> base; s -> stackSize = n; return s; } void Push( Stack *s, Elemtype e ) //入棧函數 { if( s->top - s->base >= s->stackSize ) { s -> base = (Elemtype *)realloc( s->base, s->stackSize + INCREMENT * sizeof(Elemtype) ); if( !s->base ) exit(0); s->top = s->base + s->stackSize; s->stackSize = s->stackSize + INCREMENT; } *(s->top) = e; s->top++; } Elemtype Pop( Stack *s ) //出棧函數 { if( s->top == s->base ) exit(0); return ( *--(s->top) ); } int StackLen( Stack *s) //求棧內元素數量 { return ( s->top - s->base ); } int main() { int length; int i; short int sum = 0; int index; int temp; Elemtype element; Stack *s = initStack( 16 ); Stack *p = initStack( 8 ); printf("請輸入二進制數:\n"); scanf("%c", &element); while( element != '\n' ) { //將二進制數以字符型入棧,回車號結束輸入 Push( s, element ); scanf("%c", &element); } length = StackLen( s ); while( StackLen( s ) ) { for( i=0,sum=0,index=1; (i<4)&&(StackLen(s)); i++ ) { //進制轉換 '1' ----- ASC碼為49 sum = sum + (Pop(s)-48) * index; index *= 2; } Push( p, sum ); } printf("轉換十六進制數為:\n"); while( StackLen(p) ) { temp = Pop(p); if( temp >= '0' && temp <= '9' ) printf("%d", temp); else printf("%c", temp+'A'-10); } printf("\n"); return 0; }
上述內容就是怎么編寫利用棧實現二進制轉換十六進制的完整C代碼,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。