试题
阅读以下说明和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]
试题
在 COMET 型计算机上可以使用试卷上所附的 CASL 汇编语言。阅读下列程序说明和 CASL 程序,把应填入程序中__(n)__ 处的字句,写在答卷的对应栏内。
[程序说明]
这是一个在某项比赛中计算每一位选手最终得分的子程序。计分办法如下:
(1)十名评委,在 0~100 的整数范围内给选手评分。
(2)十个得分中,除去一个最高分(如有同样两个以上最高分也只除去一个),除去一个最低分( 如有同样两个以上最低分也只除去一个 ),剩下的八个得分取平均值为该选手的最终得分。(平均值按四舍五入原则取成整数)
进入此子程序时,GR1 内存放十个评委评分的起始地址。返回主程序时,该选手的得分存放在 GR0 内,GR1~GR3中的值均保持不变。
[问题]
xue.netda提示: 在程序中的 ①~⑧ 处各填入一条正确的指令,以完成此程序。除非必要,标号栏不要填写。
[程序]
标号操作码操作数
FINAL START
PUSH 0,GR1
PUSH 0,GR2
PUSH 0,GR3
LD GR0,0,GR1
ST GR0,MAX
ST GR0,MIN
__①__
NEXT LEAGR2,-1,GR2
JZEMEAN
__②__
LD GR3,0,GR1
__③__
CPA GR3,MAX
JMIGOONl
ST GR3,MAX
GOONl CPA GR3,MIN
JPZ GOON2
ST GR3,MIN
GOON2 __④__
MEAN SUBGR0,MAX
SUB GRO,MIN
__⑤__
SRAGR0,3
__⑥__
__⑦__
__⑧__
RET
MAXDS1
MINDS1
FOURDC4
END
答案:
(1)LEA GR2,10
(2)LEA GR1,1,GR1
(3)ADD GR0,0,GR1
(4)JMP NEXT
(5)ADD GR0,FOUR
(6)POP GR3
(7)POP GR2
(8)POP GR1
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|