题目内容
【说明】 函数MultibaseOutput(long n,int B)的功能是:将一个无符号十进制整数n转换成 B(2≤B≤16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把B进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C代码中的符号常量及栈的类型定义如下: #define MAXSIZE 32 typedef struct int * elem; /*栈的存储区*/ int max; /*栈的容量,即栈中最多能存放的元素个数*/ int top; /*栈顶指针*/ Stack; 【代码】 int InitStack(Stack * S,int n) /*创建容量为n的空栈*/ S -> elem = (int*) malloc(n*sizeof(int)); if(S -> elem == NULL) return-1 S->max=n; (1) =0;return 0; int Push (Stack * s,int item) /*将整数item压入栈顶*/ if(S->top==S->max)printf("Stack is full! \n");return-1; (2) = item; return 0 int StackEmpty(Stack S) return(! S. top) 1:0; /*判断栈是否为空*/ int Pop(Stack * S) /*栈顶元素出栈*/ if(! S->top) printf("Pop an empty stack! \n") ;return -1; return (3) ; void MultibaseOutput(long n,int B) int m;Stack S if (InitStack(&S, MAXSIZE)) printf ("Failure! \n"); return; do if( Push( &S, (4) ))printf("Failure! \n"); return; n= (5) ; while(n!=0); while(!StackEmpty(S)) /*输出B进制的数*/ m = Pop(& S); if(m<10) printf("%d",m) ;/*小于10,输出数字*/ else printf("%c",m+55); /*大于或等于10,输出相应的字符*/ printf( "\n") ;
查看答案
搜索结果不匹配?点我反馈