数据结构——进制转化
1 #include <stdio.h> 2 3 #define StackSize 100 4 #define OK 1 5 #define ERROR 0 6 #define TRUE 1 7 #define FALSE 0 8 9 typedef int ElemType; 10 typedef int Status; 11 typedef struct 12 { 13 ElemType data[StackSize]; 14 int top; //指向栈顶元素的下一个位置 15 16 }SeqStack; 17 18 //初始化、置空栈 19 void InitStack(SeqStack *S) 20 { 21 S->top = 0; 22 } 23 //判断栈空 24 int StackEmpty(SeqStack S) 25 { 26 if(S.top == 0) return TRUE; 27 else return FALSE; 28 } 29 30 //判断栈满 31 int StackFull(SeqStack S) 32 { 33 if(S.top == StackSize) return TRUE; 34 else return FALSE; 35 } 36 //入栈 37 Status Push(SeqStack *S,ElemType e) 38 { 39 if(StackFull(*S)) return ERROR; 40 S->data[S->top++] = e; 41 return OK; 42 } 43 44 //出栈 45 Status Pop(SeqStack *S) 46 { 47 if(StackEmpty(*S)) return ERROR; 48 S->top--; 49 return OK; 50 } 51 52 //出栈,返回删除的栈顶元素 53 Status Pop2(SeqStack *S,ElemType *e) 54 { 55 if(StackEmpty(*S)) return ERROR; 56 *e = S->data[S->top-1]; 57 S->top--; 58 return OK; 59 } 60 61 62 63 //得到栈顶元素 64 Status GetTop(SeqStack S,ElemType *e) 65 { 66 if(StackEmpty(S)) return ERROR; 67 *e = S.data[S.top-1]; 68 return OK; 69 } 70 71 72 int main() 73 { 74 SeqStack S; 75 int d; 76 int n,r; 77 InitStack(&S); 78 printf("请输入一个数:\n"); 79 scanf("%d",&n); 80 printf("请输入需要转化的进制:\n"); 81 scanf("%d",&r); 82 while(n) 83 { 84 Push(&S,n%r); 85 n /= r; 86 } 87 while(!StackEmpty(S)) 88 { 89 Pop2(&S,&d); 90 printf("%d",d); 91 } 92 printf("\n"); 93 return 0; 94 }