问题

试题四

阅读以下说明和C代码,将应填入 (n) 处的字句写在答题纸的对应栏内。

[说明]

函数MultibaseOutput(long n, int B)的功能是:将一个无符号十进制整数n转换成B(2≤B≤16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把B进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C代码中的符号常量及栈的类型定义如下:

#define MAXSIZE 32

typedef struct {

int *elem; /* 栈的存储区 */

int max; /* 栈的容量,即栈中最多能存放的元素个数 */

int top; /* 栈顶指针 */

}Stack;

[C代码]

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");

}

参考答案
您可能感兴趣的试题
  • ●与十进制数26.34375等值的二进制数是 (1) ,八进制数是 (2) 。(1) A.11010.1101B.11010.01011C.1011.1101D.1011.01011(2) A.13.
  • ●在7位的ASCII码的最高位增加一位奇校验位就构成8位奇校验码。若大写字母K的十六进制奇校验码为CB,则大写字母E的十六进制奇校验码为 (3) 。(3) A.C5B.45C.C4D.44
  • ●某机器字长8位,则八进制数-52的补码表示是 (4) 。(4) A.11010101B.10101110C.10110100D.11010110
  • ●某计算机字长16位的机器码1111 1111 0000 0000,表示无符号的整数时对应的十进制表达式为 (5) ,表示一个带符号整数的反码时,该机器码表示的十进制表达式为 (6) ,该数的补码是
  • ●如果在指令的地址码部分给出的是操作数地址的地址,这种寻址方式称为 (8) 。在指令执行结束时,CPU中的指令指针寄存器存放 (9) 。(8) A.直接寻址B.间接寻址C.相对寻址D.变址寻址(9)
  • ●作业从提交到后备状态的变化由 (10) 。作业从提交到运行状态的转换由 (11) 。(10) A.输入程序完成B.作业调度程序完成C.进程调度程序完成D.进程创建原语完成(11) A.输入程序完成B
相关内容