试题 2
在 COMET 型计算机上可以使用试卷上所附的 CASL 汇编语言。阅读下列程序说明和 CASL 程序,把应填入程序中__(n)__ 处的字句,写在答卷的对应栏内。
[程序说明]
这是一个在某项比赛中计算每一位选手最终得分的子程序。计分办法如下:
(1)十名评委,在 0~100 的整数范围内给选手评分。
(2)十个得分中,除去一个最高分(如有同样两个以上最高分也只除去一个),除去一个最低分( 如有同样两个以上最低分也只除去一个 ),剩下的八个得分取平均值为该选手的最终得分。(平均值按四舍五入原则取成整数)
进入此子程序时,GR1 内存放十个评委评分的起始地址。返回主程序时,该选手的得分存放在 GR0 内,GR1~GR3中的值均保持不变。
[问题]
在程序中的 ①~⑧ 处各填入一条正确的指令,以完成此程序。除非必要,标号栏不要填写。
[程序]
标号 | 操作码 | 操作数 | |
FINAL | START | ||
PUSH | 0,GR1 | ||
PUSH | 0,GR2 | ||
PUSH | 0,GR3 | ||
LD | GR0,0,GR1 | ||
ST | GR0,MAX | ||
ST | GR0,MIN | ||
__①__ | |||
NEXT | LEA | GR2,-1,GR2 | |
JZE | MEAN | ||
__②__ | |||
LD | GR3,0,GR1 | ||
__③__ | |||
CPA | GR3,MAX | ||
JMI | GOONl | ||
ST | GR3,MAX | ||
GOONl | CPA | GR3,MIN | |
JPZ | GOON2 | ||
ST | GR3,MIN | ||
GOON2 | __④__ | ||
MEAN | SUB | GR0,MAX | |
SUB | GRO,MIN | ||
__⑤__ | |||
SRA | GR0,3 | ||
__⑥__ | |||
__⑦__ | |||
__⑧__ | |||
RET | |||
MAX | DS | 1 | |
MIN | DS | 1 | |
FOUR | DC | 4 | |
END |
试题 3
阅读下列程序说明和 C 程序,将应填入程序中__?__处的字句写在答卷纸的对应栏内。
[程序说明]
函数 vr6174 是对卡布列克运算的验证程序。
所谓卡布列克运算,是指任意一个四位数,只要它们各个位上的数字不全相同,就有这样的规律:
(1)把组成这个四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数;
(2)把组成这个四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数( 如果四个数字中含有 0,则此数不足四位 );
(3)求出以上两数之差,得到一个新的四位数。
重复以上过程,总能得到最后的结果是 6174。
如果当 n=5346 时调用 vr6174(n),便会输出以下结果:
6543-3456=3087 8730-378=8352 8532-2358=6174
函数 vr6174 采用了递归算法,并调用 parse_sort 和 max_min 函数。其中 parse_sort 函数把所给的四位数分解为四个一位数字,并将其从小到大排序,放入数组 each;max_min 函数根据 each 的值形成所要求的最大四位数和最小四位数。
[程序]
vr6147( num )
int num;
{ inteach[4],max,min;
if ( num!=6174&&num )
{ parse_sort( num,each );
max_min( __①__);
num = max_min;
printf( "%d-%d=%d",max,min,num ),
vr6174( nurn );
}
else printf( ".\n" );
return;
}
parse_sort( num,each )
int num,*each;
{ int i,*j,*k,temp;
for ( i;0;i<4;i++ )
{ j=each+3-i;
__②__;
hum=num/10;
}
for ( i=0;i<3;i++ )
for ( j-each,k=each+1;;j<each+3-i;__③__ )
{ if ( *j>*k ) { temp=*j; *j=*k; *k=temp;
}
}
retrun;
}
max_min( each,max,min )
int *each,*max,*min;
{ int *j;
min=0
for ( i;each;i<each+4;i++ )
*min=__④__;
*max=0;
for ( i;each+3;i>=each;i-- )
*max=__⑤__;
return;
}
试题 7
在 COMET 型计算机上可以使用试卷上所附的 CASL 汇编语言,阅读下列程序说明和 CASL 程序,把应填入程序中__(n)__处的字句,写在答卷的对应栏内。
[程序说明]
从语言音素粗分类的角度出发,可以对任一个英文单词产生一个四字符的声音相似码。
其处理方式如下:
(1)保留单词中的首字母作为声音相似码的首字符。若首字母为小写字母,则需先改为大写字母才能被保留。
(2)对首字母以后的字母按下表中出现的对应关系变换为‘0’~‘6’的数字。
字母 |
A a |
B b |
C c |
D d |
E e |
F f |
G g |
H h |
I i |
J j |
K k |
L 1 |
M m |
N n |
O o |
P p |
Q q |
R r |
S s |
T t |
U u |
V v |
W w |
X x |
Y y |
Z z |
对应 |
0 |
1 |
2 |
3 |
0 |
1 |
2 |
0 |
0 |
2 |
2 |
4 |
5 |
5 |
0 |
1 |
2 | 6 |
2 |
3 |
0 |
1 |
0 |
2 |
0 |
2 |
(3)若字母变换而得的数字为'0',则不出现在声音相似码中;若相邻的字母产生相同的数字,则在声音相似码中只保留一个数字。
(4)遇到下列情况之一程序执行终止:
① 输入的第一个字符不是英文字母,程序返回,输出 '0000'。
② 已产生四个字符的声音相似码( 包括第一个字母 )时,程序不再处理其余字符。
③ 单词已处理完( 以非字母符为结束标志 ),若声音相似码不足四字符,则程序以字符'0'补足四个字符。
例:
输入字符串 | 输出 |
computer# | 'C513' |
an# | 'A500' |
5sohware# | '0000' |
英文字母,'A'~'Z','a'~'z'的 ASCII 码的十进制值为 65~90,97~122;字符 '0'的十进制值为 48。
[问题]
在程序中的 ①~⑥ 处各填入一条正确的指令,以完成此程序。除非必要,标号栏不要填写。
[程序]
标号 | 指令码 | 操作数 | |
START | |||
IN | STR,LENG | ||
__(1)__ | |||
LEA | GR0,48 | ||
ST | GR0,0,GR1 | ||
ST | GR0,1,GR1 | ||
ST | GR0,2,GR1 | ||
ST | GR0,3,GR1 | ||
LEA | GR2,STR | ||
CALL | GETCH | ||
JMP | L4 | ||
LEA | GR1,0 | ||
L1 | ST | GR3,SOUT,GR1 | |
LEA | GR1,1,GR1 | ||
__(2)__ | |||
JZE | L4 | ||
L2 | ST | GR3,RESV | |
L3 | __(3)__ | ||
CALL | GETCH | ||
JMP | L4 | ||
__(4)__ | |||
LD | GR3,TABLE,GR3 | ||
__(5)__ | |||
JZE | L2 | ||
CPL | GR3,RESV | ||
JZE | L3 | ||
JMP | L1 | ||
L4 | EXIT | ||
GETCH | LD | GR3,0,GR2 | |
LEA | GR0,-97,GR3 | ||
JMI | G1 | ||
LEA | GR3,-32,GR3 | ||
G1 | LEA | GR0,-65,GR3 | |
JMI | G2 | ||
LEA | GR0,-91,GR3 | ||
JPZ | G2 | ||
LD | GR0,0,GR4 | ||
__(6)__ | |||
ST | GRO,0,GR4 | ||
G2 | RET | ||
RESV | DS | 1 | |
SOUT | DS | 4 | |
STR | DS | 80 | |
LENG | DS | 1 | |
TABLE | DC | '0123012002245' | |
DC | '5012623010202' | ||
TWO | DC | 2 | |
END |
试题 8
阅读下列程序说明和 C 程序,将应填入程序中__(n)__ 处的字句,写在答卷纸的对应栏内。
[程序说明]
本程序实现变元为 x,y,z 的两个整系数多项式的相加。用一个循环链表表示多项式,表中每个节点表示该多项式中的一项,格式如图1所示。它表示项 coef *xiyjzk,其中 coef 表示项系数;项指数 index=i*100+j*lO+k( i,j,k皆为整数,且0≤i,j,k≤9 );next 为指向下一个节点的指针。链表中设置一个表头节点,其值如图2所示。它指向多项式的首项。表中其余节点按 index 值的降序排列。例如,多项式 3x6-5x5y2+6y6z 可表示为图3。
本程序定义两个多项式 (p) 和 (q),通过调用 blist 构成两个循环链表 p* 和 q·* 将 (p) 加到 (q) 上,其结果,表 p ·不变,表 q 为两多项式 (p) 和 (q) 之和。两多项式相加通过调用 polyadd 来实现。
算法:比较 (p) 和 (q) 的项指数,如相等,则项系数累加进 (q) 的对应项系数;如 (p) 的项指数小于 (q) 的项指数,则比较 (q) 的下一项;如 (p) 的项指数大于 (q) 的项指数,则将 (p) 的该项插入 (q) 中。如项系数相加后值为 0,则从 (q) 中删除该项。
转帖于:软件水平考试_考试吧
- 推荐给朋友
- 收藏此页
·2008年下半年软考信息系统项目管理师试题(下午II) (2008-12-21 22:39:30)
·2008年下半年计算机软考网络工程师试题(下午) (2008-12-21 22:26:13)
·2008下半年软考系统分析师考试试题(下午)II (2008-12-21 22:20:49)
·2008年下半年计算机软考程序员试题(下午) (2008-12-21 22:18:18)
·2008年下半年计算机软考程序员试题(上午) (2008-12-21 22:11:38)