算机软件资格水平考试高级程序员下午试题.docx
- 文档编号:15189729
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:17
- 大小:79.01KB
算机软件资格水平考试高级程序员下午试题.docx
《算机软件资格水平考试高级程序员下午试题.docx》由会员分享,可在线阅读,更多相关《算机软件资格水平考试高级程序员下午试题.docx(17页珍藏版)》请在冰点文库上搜索。
算机软件资格水平考试高级程序员下午试题
1999年中国计算机软件资格水平考试高级程序员下午试题
从下列的3道试题(试题一至试题三)中任先2道解答。
如果解答的试题数超过2道,则题号小的2道解答有效。
试题一
阅读以下说明和流程图,回答问题1至问题3,将解答写在答卷的对应栏内。
【说明】
本流程图描述了某仓库物品入出库管理的处理流程。
每张入库单或出库单都由两位操作员分别录入,经处理1或处理3输入系统后作合法性检查,并将合法的入库单或出库单记入入库单文件或出库单文件。
然后通过处理2或处理4实时更新库存文件。
处理5每周执行一次,它依次检查库中的每一种物品,当某物品的库存量小于该物品的最低库存量时,制订采购计划,输出订购单。
处理6和处理7每月执行一次,处理6将入库单文件和出库单文件合并成月入出库文件,并根据统计的要求对其进行排序。
处理7进行统计,产生月报表,并把该月合并后的月入出库文件添加到月入出库后备文件中,以备日后查找,最后清除入库单文件、出库单文件和月入出库文件。
系统中某些文件和报表的格式如下:
库存文件记录:
物品编号+名称+规格+库存量+最低库存量+最高库存量(其中“最高库存量”指该物品允许存放在库中的最大值)
入库单文件记录:
日期+物品编号+数量
出库单文件记录:
日期+物品编号+数量
月报表格式:
物品编号
日期
入库数
出库数
xxxx
xx
xx
xx
xx
xx
xx
xx
xx
xx
...
当月小计
xxx
xxx
xxxx
xx
xx
xx
xx
xx
xx
...
【问题1】
指出处理3能检查出库单中的哪些错误。
【问题2】
指出月入出库文件的记录格式.
【问题3】
指出处理6排序的第一和第二关键字。
试题二
阅读以下说明和流程图,回答问题1至问题3,将解答写在答卷的对应栏内。
【说明】
有一种游戏,其规则如下:
有一个3×3的方格,每个方格中只可画‘+’符号或‘-’符号,表示该方格的值。
图(a)定义了各方格的位置,表1为每个方格位置定义了与其相关联的位置集,各方格的初值如图(b)所示。
游戏开始后,每次可选一个值为‘+’的方格位置,然后根据表1将该位置所对应的每个相关联的位置上的符号重画成与其不同的符号,即将‘+’重画成‘-’,将‘-’重画成‘+’。
重画操作可用所选的位置编号来描述。
例如在图(b)所示的情况下,选择位置4时,重画结果如图(c)所示。
经过连续的若干次这样的操作后,当3×3方格呈现出图(d)所示的图形时,表示获胜;当呈现出图(e)所示的图形时,表示失败。
下列流程图旨在输出从初始状态出发直至获胜的重画操作(即所选的位置编号)序列。
图中假定数组A[0..8]存放3×3方格的值,数组c[0..8][1..5]存放表1所示的各方格位置的相关联的位置集、数组d[0..8]存放各方格位置的相关联的位置个数,数组元素S[1]~S[k]存放各次重画操作所对应的位置编号,变量N存放3×3方格中当前的‘+’符号的个数。
012
---
-+-
+++
---
345
-+-
+-+
+-+
---
678
---
-+-
+++
---
图(a)
图(b)
图(c)
图(d)
图(e)
表1方格位置及其相关位置集的对照表
0
0134
1
012
2
1245
3
036
4
13457
5
258
6
3467
7
678
8
4578
【问题1】
填充图中的①-④。
【问题2】
图中的⑤应与A、B、C中的哪一点连接。
【问题3】
如果每次由游戏者选择方格改由程序自动枚举选择,那么,为从初态出发求出所有可能的获胜重画操作序列,在哪些情况下需要进行回溯处理。
【流程图】
试题三
阅读以下说明和流程图,回答问题1和问题2,将解答写在答卷的对应栏内。
【说明】
本流程图采用状态矩阵方法将已知字符序列翻译成实数(其句法图如图3.1所示)。
本题的状态矩阵分成两部分,语义动作矩阵FM和状志转换矩阵SM,它们分别存放每个状态遇到某字符时应执行的语义动作以及执行动作后应转移到的新状态。
本流程图从0状态出发逐个读入字符,在执行了FM中相应的语义动作后,SM中指出的相应新状态,重复这一过程,直至到达9状态或10状态。
9状态表示已正确地把该字符序列翻译成实数(注意:
此时已多读进实数后的下一个字符);10状态表示出错。
图3.1某语言的实数句法图
状态转换矩阵SM
新
状
态
字符类
+或-
(类别0)
数字
(类别1)
小数点
(类别2)
字符E
(类别3)
其它字符
(类别4)
状
态
0
1
2
3
10
10
1
10
①
②
10
10
2
9
2
4
6
9
3
10
5
10
10
10
4
9
③
9
④
9
5
9
5
9
6
9
6
7
8
10
10
10
7
10
⑤
10
10
10
8
9
8
9
9
9
语义动作矩阵FM
语义
函数
字符类
+或-
(类别0)
数字
(类别1)
小数点
(类别2)
字符E
(类别3)
其它字符
(类别4)
状
态
0
f1
f2
f0
f7
f7
1
f7
⑥
f0
f7
f7
2
f6
⑦
f0
f0
f6
3
f7
⑧
f7
f7
f7
4
f6
f3
f6
f0
f6
5
f6
f3
f6
⑨
f6
6
⑩
f5
f7
f7
f7
7
f7
f5
f7
f7
f7
8
f6
f5
f6
f6
f6
现有以下语义动作函数:
f0:
空函数,不做任何操作。
f1:
按当前字符确定实数符号sign为1或-1。
f2:
翻译实数的整数部分值(求m)。
f3:
翻译实数的小数部分值(求d)。
f4:
按当前字符(幂的正负号)确定求幂所用的因子PS(10.0或0.1)。
f5:
翻译实数的幂(求p)。
f6:
求实数的值R=sign*(m+d)*p
f7:
输出错误信息。
【流程图】
注:
设已知实数字符串存于字符数组str中。
【问题1】
将状态转换矩阵SM中①-⑤处的正确内容填入答卷的对应栏内。
【问题2】
将语义动作矩阵FM中⑥-⑩处的正确内容填入答卷的对应栏内。
试题四
在COMST型计算机上可以使用试卷上所附的CASL汇编语言,阅读程序说明和CASL程序,把应填入_(n)_处的字句,写在答卷的对应栏内。
【程序4.1说明】
本子程序是对15位二进位串,求它的奇校验位,生成16位二进位串,使16位二进位串中有奇效个1。
进入此子程序时,15位二进位串在GR1的第1位至第15位,假定GR1的第0位是0,求得的奇校验位装配在GR1的第0位上。
【程序4.1】
START
BEGPUSH0,GR2
PUSH0,GR3
LEA GR3,1
__
(1)__
L1SLLGR2,1
__
(2)__
LEAGR3,1,GR3
L2JZEL3
JMPL1
L3__(3)__
STGR3,WORK
ADDGR1,WORK
POPGR3
POPGR2
RET
WORKDS1
END
【程序4.2说明】
子程序SUM是将存贮字A起的n(n>0)个字求和,并将结果存于存贮字B中。
调用该子程序时,主程序在GR1中给出存放子程序所需参数的起始地址。
参数的存放次序如下图:
(GR1)+ 0
A
+ 1
n
+ 2
B
【程序4.2】
START
SUMLDGR2,0,GR1
LDGR3,1,GR1
LEAGR0,0
L5ADDGR0,0,GR2
LEAGR2,1,GR2
__(4)__
JNZL5
L3__(5)__
STGR0,0,GR3
RET
END
试题五
阅读下列程序说明和C代码,将应填入_(n)_处的字句写在答卷的对应栏内
【程序5说明】
本程序实现两个多项式相乘。
多项式用链表表示,链表上的各表元按多项式的幂指数降序链接。
例如:
f(x)=5.7x15+4.8x6+9.65
设两个多项式f(x)和g(x)分别为
f(x)=fnxn+...+f1x+f0g(x)=gmxm+...+g1x+g0
其积多项式为s(x)=f(x)g(x)=skxk+...+s1x+s0
其中k=n+m,si=Σ∫u*gv(0≤i≤k)
u+v=i
【程序5】
#include
#include
typedefstructelem{intindex;doublecoef;structelem*next;
}POLYNODE;
voidwrite(POLYNODE*g)
{POLYNODE*p=g;
while(p){printf(“%8.4f”,p->coef);
if(p->index)printf("*x%d",p->index);
if(p->next&&p-next->coef>0)printf("+");
p=p->next;
}
printf(“\n\n”);
}
main()
{POLYNODE*f,*g,*s,*inpoly(),*polymul();
f=inpoly();g=inpoly();s=polymul(f,g);write(s);
}
POLYNODE*reverse(POLYNODE*g)
{POLYNODE*u=NULL,*v=g,*w;
while(v){w=v->next;v->next=u;u=v;v=w;}
returnu;
}
POLYNODE*polymul(POLYNODE*f,POLYNODE*g)
{POLYNODE*fp,*gp,*tail,*p=NULL,*q;
inti,maxindex;doubletemp;
maxindex=f->index+g->index;g=reverse(g);
for(i=maxindex;i>=0;i--){
fp=f;gp=g;
while(fp!
=NULL&&fp->index>i)fp=fp->next;
while(gp!
=NULL&&gp->index
temp=0.0;
while(fp&&gp)
if(fp->index+gp->index==i){
temp+=fp->coef*gp->coef;fp=fp->next;gp=gp->next;
}
elseif(___
(1)___)fp=fp->next;
elsegp=gp->next;
if(temp!
=0.0){
q=(POLYNODE*)malloc(sizeof(POLYNODE));
q->index=i;q->coef=temp;q->next=NULL;
if(___
(2)___)p=q;else___(3)___;
tail=q;
}
}
g=reverse(g);returnp;
}
POLYNODE*inpoly()
{POLYNODE*u,*v,*h=NULL,*p;intindex;doublecoef;
printf("Inputindex(<0forfinish)");scanf("%d",&index);
while(index>=0){
printf(“Inputcoef“);scanf("%1f",&coef);
p=(POLYNODE*)malloc(sizeof(POLYNODE));
p->index=index;p->coef=coef;
v=h;
while(v!
=NULL&&index
if(v==NULL||index>v->index)
{p->next=v;if(v==h)___(4)___;else___(5)___;}
elsev->coef+=coef;
printf("Inputindex(<0forfinish)");scanf("%d",&index);
}
returnh;
}
试题六
阅读下列程序说明和C代码,将应填入_(n)_处的字句写在答卷的对应栏内。
【程序6说明】
本程序从n种不同重量、不同价值的物品中选取一部分物品。
要求在不超过限定重量limw的前提下,使被选取的那些物品的总价值较大。
这里约定limw不超过n种物品的重量总和,也没有一种物品的重量超过limw,并且各物品的价值都大于0。
程序中,n种物品被顺序编号为0、1、2、......、n-1。
【程序6】
#include
#defineN100
doublelimw;
intopts[N];/*存储临时最佳的选择方案,当opts[i]为1,物品i在解中*/
structelem{doubleweight;
doublevalue;
}a[N];/*物品的重量和价值信息*/
intk,n;
struct{intflg;/*物品的考虑状态:
0:
不选,1:
将被考虑,2:
曾被选中*/
doubletw;/*已达到的总重量*/
doubletv;/*期望的总价值*/
}twv[N];/*当前候选解中各物品的考虑状态,以及候选解的状态*/
main()
{doublemaxv,find();
printf("Enternumberofmatter.");scanf("%d",&n);
printf("Enterlimitofweight.");scanf("%1f",&limw);
printf("Enterweightandvaluesofmatters.");
for(k=0;k maxv=find(a,n); for(k=0;k printf("\nTotalvalue=%1f\n",maxv); } next(inti,doubletw,doubletv)/*将考虑i号物品*/ {twv[i].flg=1;twv[i].tw=tw;twv[i].tv=tv;} look(inti,int*f,double*tw,double*tv)/*取i号物品在解中的状态信息*/ {*f=twv[i].flg;*tw=twv[i].tw;*tv=twv[i].tv;} doublefind(structelem*a,intn) {inti,k,f; doublemaxv,tw,tv,totv=0.0; maxv=0; for(k=0;k (1)____; next(0,0.0,totv); i=0; while(i>=0){ look(i,&f,&tw,&tv); switch(f){ case1: twv[i].flg++;/*先考虑被选中*/ if(____ (2)____<=limw)/*选中可行吗? */ if(i */ next(____(3)____);/*置i+1物品的状态*/ i++; } elseif(tv>maxv){/*是一个更好的候选解吗? */ maxv=tv; for(k=0;k opts[k]=twv[k].flg! =0; } break; case0: i--;break;/*回退*/ default: /*f==2*/ twv[i].flg=0; if(____(4)____)/*不选i号物品可行吗? */ if(i */ next(____(5)____); i++; } else{ maxv=tv–a[i].value; for(k=0;k opts[k]=twv[k].flg! =0; i--; } break; } } returnmaxv; } 倚窗远眺,目光目光尽处必有一座山,那影影绰绰的黛绿色的影,是春天的颜色。 周遭流岚升腾,没露出那真实的面孔。 面对那流转的薄雾,我会幻想,那里有一个世外桃源。 在天阶夜色凉如水的夏夜,我会静静地,静静地,等待一场流星雨的来临… 许下一个愿望,不乞求去实现,至少,曾经,有那么一刻,我那还未枯萎的,青春的,诗意的心,在我最美的年华里,同星空做了一次灵魂的交流… 秋日里,阳光并不刺眼,天空是一碧如洗的蓝,点缀着飘逸的流云。 偶尔,一片飞舞的落叶,会飘到我的窗前。 斑驳的印迹里,携刻着深秋的颜色。 在一个落雪的晨,这纷纷扬扬的雪,飘落着一如千年前的洁白。 窗外,是未被污染的银白色世界。 我会去迎接,这人间的圣洁。 在这流转的岁月里,有着流转的四季,还有一颗流转的心,亘古不变的心。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 资格 水平 考试 高级程序员 下午 试题