作者:深圳教育在线 来源:szedu.net 更新日期:2008-10-11
试题 阅读以下说明和C代码,将应填入__(n)__处的字句写在答题纸的对应栏内。 [说明] 函数 MultibaseOutput(long n,int B)的功能是:将一个无符号十进制整数 n 转换成 B(2≤B≤16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把 B 进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C代码中的符号常量及栈的类型定义如下: #define KAXSIZE 32 typedef struct{ int *elem; /* 栈的存储区 */ int max; /* 栈的容量,即找中最多能存放的元素个数 */ int top; /* 栈顶指针 */ }Stack; [C代码] int lnitStack(Stack *S,int n) /* 创建容量为n的空栈 */ { S->elem = (int *)matloc(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 (init Stack(&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("Kd",m); /* 小于10,输出数字 */ else printf("%c,m + 55); /* 大于或等于10,输出相应的字符 */ } printf("\n"); } 答案: (1)S->top (2)S->elem[S->top++]· (3)S->elem[-S->top] (4)n % B (5)n / B
|