[流程图]
试题6
在 COMET 型计算机上可以使用试卷上所附的 CASL 汇编语言。阅读下列程序说明和 CASL 程序,把应填入其中__n__处的字句,写在答卷的对应栏内。
[程序说明]
本程序根据输入的姓名(字符串),在已有的线性表中查找其相应的通信地址(字符串),并予以输出。
标号为DATPTR的存贮字存放着线性表第一个结点的地址。结点的数据结构定义如下:
|
|
|
最后一个结点的指针字段为空指针( 内容为 0 )。
[程序]
START | BEGIN | |
OTlONG | DS | 1 |
OTTEXT | DS | 80 |
NOlONG | DC | 10 |
NOTEXT | DC | 'NOT FONUD.' |
INTEXT | DS | 80 |
INLONG | DS | 1 |
DATPTR | DC | FIRST |
BEGIN | IN | INTEXT,INLONG |
LEA | GR0,0 | |
CPA | GR0,INLONG | |
JZE | ENDSCH | |
LEA | GR3,DATPTR | |
NXTMEM | __①__ | |
__②__ | ||
JZE | NOTFND | |
LD | GR0,1,GR3 | |
CPA | GR0,INLONG | |
JNZ | NXTMEM | |
__③__ | ||
LEA | GR2,INTEXT | |
CALL | CMPSTR | |
__④__ | ||
LD | GR0,2,GR3 | |
ST | GR0,OTlONG | |
__⑤__ | ||
__⑥__ | ||
LEA | GR2,OTTEXT | |
CAlL | CPYSTR | |
OUT | OTTEXT,OTLONG | |
JMP | BEGIN | |
NOTFND | OUT | NOTEXT,NOLONG |
JMP | BEGIN | |
ENDSCH | EXIT | |
CMPSTR | PUSH | 0,GR3 |
CMPNXT | LD | GR3,0,GR1 |
CPL | GR3,0,GR2 | |
JNZ | CMPEND | |
LEA | GR1,1,GR1 | |
LEA | GR2,1,GR2 | |
SUB | GR0,CONST1 | |
JNZ | CMPNXT | |
CMPEND | POP | GR3 |
RET | ||
CONSTl | DC | 1 |
CPYSTR | PUSH | 0,GR3 |
CPYNXT | LD | GR3,0,GR1 |
ST | GR3,0,GR2 | |
LEA | GR1,1,GR1 | |
LEA | GR2,1,GR2 | |
SUB | GR0,ONE | |
JNZ | CPYNXT | |
POP | GR3 | |
RET | ||
ONE | DC | 1 |
END |
从下列的4道试题(试题7至试题10)中任选l道解答。 如果解答的试题数超过1道,则解答的前1道有效。 |
试题7
阅读下列程序说明和 C 程序,把应填入其中__n__ 处的字句,写在答卷的对应栏内。
[程序说明]
(1)本程序利用辗转相除法求两个均不超过100次的多项式A,B的最大公因式。
例: A(x)=x3一x2+x一1=(x2+1)(x一1)
B(x)=x5一7x4十7x3-3x2+6x+4=(x2+1) (x3-7x2十6x+4)
最大公因式为x2+1。
(2)辗转相除法的算法如下:
用其中的一个多项式去除另一个多项式;然后,将所得余式变成除式,原除式变成被除式。如此反复相除,当余式为。时,当前除式即为最大公因式。
[程序]
#include <stdio.h>
#include <math.h>
#define DECISE.0005
#define MAX_POWER 100
main( )
{ int i,a,b;
float Ca[MAX_POWER+1],Cb[MAX _POWER+1];
void Remainder();
scanf("%d",&a);
for ( i=0;i<=a;i++ )
scanf( "%f",&Ca[i] );
scanf( "%d",&b) ;
for ( i=0;i<=b;i++ )
scanf( "%d",&Cb[i] );
Remainder(Ca,Cb,a,b);
}
void Remainder(Pointer A,Pointer B,a,b)
float *Pointer A,*Pointer B;
int a,b;
{ float x,y,*Temp;
int i,j,F1ag=1;
while ( Flag )
{ i=0;
while ( PointerB[i]==0 )
{ i ++;b一-;
__①__ ;
}
x=Pointer[i];
while ( i<=b )
PointerB[i++]/=x;
for ( i=0;i<=a-b;i++ )
{ __②__ ;
for(j=0;j<b ; j++)
{ y = PointerA[i+l+j]一x * PointerB[j+1];
PointerA[ __③__ ]=
( y<DECISE&&-y<DECISE )?0.0;y;
}
}
Temp=Pointer A;
PointerA=PointerB; ·
PointerB = __④__ ;
a=b--;
for ( Flag=0,i=0;i<b && Flag==0;i++ )
if ( PointerB[i] !=0.0 ) Flag=1;
}
printf( "The Greatest Common Factor is:\n");
for ( i=0;i<a;i++ )
if ( PointerA[i]!= 0.0)
printf( "%5.3f *x ∧%d%s",
PointerA[I],a-i,( PointerA[i+1]<0.0 ) ?"":"+" );
printf( "%5.3f\n",PointerA[a] );
}
试题8~10 略(COBOL、FORTRAN、PASCAL)
答案
试题一
[问题1]
电话费单价文件
[问题2]
电话号码,国内通话次数,国内金额,国际通话次数,国际金额
[问题3]
① 第一关键项是用户编码,第二关键项是电话号码 ② 电话号码
试题二
[问题1]
① H→HW[NW] ② 'false'→W ③ W:'false' ④ H→HW[NW] ⑤ 'false'→W ⑥ 0→H ⑦ HW[1]:-1
[问题2]
⑧ NW:0 ⑨ HW[NW]:-1
试题三
[问题1]
① A(3,61)→J ② I+1→I ③ A(I,J-T-S+1):A(I,J-S+1) ④ A(I,J)+1→A(I,J) ⑤ J→A(I,61)
[问题2]
⑥ A(I,J-T-S+1):A(I,J-S+1) ⑦ S:T ⑧ S+1→S
试题四
判定覆盖④ 条件覆盖③ 判定/条件覆盖⑥ 多重条件覆盖⑧ 路径覆盖⑦
试题五
[问题1]
① k→J ② ≥ ③ < ④ I+1→I ⑤ < ⑥ ≥ ⑦ J-l→J
[问题2]
1 4 9;
2 3 8;
5 6 7
试题六
(1)LD | GR3,0,GR3 |
(2)LEA | GR3,0,GR3 |
(3)LEA | GR1,3,GR3 |
(4)JNZ | NXTMEM |
(5)LEA | GR1,3,GR3 |
(6)ADD | GR1,1,GR3 |
试题七
(1) PointerB += i--
(2) x=PointerA[j]
(3) i+1-j
(4) (a>=b)? Temp+a—b-l:Temp
转帖于:软件水平考试_考试吧- 推荐给朋友
- 收藏此页
·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)