📄 98年试卷+答案(高程).txt
字号:
[说明]
本流程图描述某超市销售数据的部分处理流程。超市中有若干台收款机和若干名收款员。这
里,我们把一个收款员开始使用一台收款机到离开这台收款机称为该收款员的一次作业。作业开始时,收款员先在收款机上输入收款员号和作业前金额。作业前金额是为了销售时的找零而在作业前预先放入钱箱的金额数。作业结束时,收款员要找开钱柜,取走全部现金,并把这些现金的金额数(称为作业后金额)输入收款机。当
作业前金额+本次作业售货总金额-本次作业退货总金额≠作业后金额
时,表示这次作业存在金额差错。
本流程图已作简化,并作以下假定;该超市只有现金交易(不用信用卡和礼券);一个收款员因某种原因(如吃饭)在一天中可以有多个作业;销售方式只有售货和退货两种。
整个超市分成若干部门(如食品部、服装部),系统按部门统计一个月中各类货物的销售数量和金额,最后根据月销售计划文件分析各部门完成销售计划的情况。系统还统计每个收款员的差错情况和退货情况。
图中处理4和处理8每月的最后一天执行一次(营业结束后),其它处理每天执行一次。
图中部分数据、文件的记录格式如下:
日销售数据:收款机号十收款员号十作业前金额十
{(售货标记|退货标记)十货号十数量十单价十金额}+作业后金额
日销售文件记录:(作业开始标记十收款机号十收款员号十作业前金额 )
|(售货标记|退货标记)十货号十数量十金额) )
|(作业结束标记十收款机号十收款员号十作业后金额
部门日销售文件记录:部门号十(售货标记|退货标记)十货号十数量+金额
部门月销售计划文件记录;部门号十月计划金额
收款员差错月报:月份十收款员号十差错作业数十差错总金额
收款员退货月报..月份十收款员号十退货次数十退货总金额
其中 {w}表示 w重复出现多次; a|b 表示 a或b; a+b表示 a与b。
[问题1]
分别写出收款员日销售文件、商品文件、部门日销售汇总文件至少应包含哪些数据项。
[问题2]
处理1能检查出日销售数据中的哪些错误。
[问题3]
处理4对收款员月销售文件作何种操作。
试题二
阅读以下说明和流程图,回答问题,将解答写在答卷的对应栏内。
[说明]
本流程图描述了某子程序的处理流程,现要求用白盒测试法为该子程序设计测度数据
[问题]
根据判定覆盖、条件覆盖、判定一条件覆盖、条件组合覆盖(即多重条件覆盖)、路径覆盖等五种覆盖标准,从供选择的答案中分别找出满足相应覆盖标准的最小测试数据组(用①~12回答)。 供选择的答案
①x=90,y=90 ②x=90,y=70 ③x=90,y=90 ④x=90,y=75
x=70,y=70 x=70,y=90 x=90,y=75 x=75,y=90
x=75,v=90 x=70,y=70
⑤x=90,y=90 ⑥x=80,y=80 ⑦x=80,y=80 ⑧x=80,y=80
x=90,y=75 x=90,y=70 x=90,y=75 x=90,y=70
x=75,y=90 x=70,y=90 x=90,y=90 x=70,y=90
x=70,y=70 x=70,y=70 x=75,y=90 x=70,y=70
x=70,y=70 x=70,y=75
⑨x=80,y=80 ⑩x=90,y=90 11. x=80,y=80 12. x=80,y=80
x=90,y=75 x=90,y=75 x=90,y=75 x=80,y=70
x=90,y=70 x=90,y=70 x=90,y=70 x=70,y=80
x=70,y=80 x=75,y=90 x=70,y=80 x=70,y=70
x=70,y=75 x=70,y=70 x=70,y=75 x=90,y=75
x=70,y=70 x=70,y=90 x=70,y=70 x=90,y=70
x=70,y=90 x=70,y=75
x=75,y=90
x=75,y=80
x=70,y=90
试题三
阅读以下说明和流程图,回答问题1至问题2,将解答写在答卷的对应栏内。
[说明]
本流程图描述了某种字符序列的变换过程。变换前的字符序列以字符“#”结尾,它存放在数组old中,变换后的字符序列存放在数组new中,它不包含结束标志“#”。流程图按下列规则进行变换:
1.删除字符序列中的注解。注解用一对“!”字符分隔,注解中可出现除“#”外的任何字符。
2.字符常数完整地保留。字符常数用一对“&”字符分隔,字符常数中可出现、外的任何字符。
值得注意的是:当字符“&”需要出现在字符常数中时,通常用二个连续的“&”表示,在
保留字符常数时,这二个连续的“&”都被保留。此外,作为字符常数分隔符的一对“&”
也被保留。
3.除字符常数和注解外,出现在其它地方的连续多个空格压缩成一个空格,但字符序列中先导
的空格则全部删除。
4.注解和字符常数之外的非空格字符均保持不变。
本流程图对原字符序列从左到右扫描,根据遇到的当前字符来搜索连续空格、注解或字符常
数,然后按上述变换规则变换。若遇到的当前字符是“!”,则寻找下一个“!”字符(若
找不到则作出错处理),这二个“!”间的字符全部看作为注解。若当前字符是“&”字符
则寻找与之配对的下一个“&”字符(若找不到则作出错处理),其间的字符全部看作为字
符常数。
例如:
原字符序列:
└┘└┘a└┘└┘└┘b&cd&&└┘└┘!e&f└┘└┘ g!h& └┘└┘!└┘└┘j#
变换后的字符序列:a└┘bdcd&&└┘└┘!e&f└┘g└┘j
本流程图假定在数组old中一定存在“#”字符。
[问题1]
填充流程图中的①~⑤,把解答写在答卷的相应位置上。
[问题2]
当原字符序列中汪解的前后均是连续空格时,本流程图将注解前后的连续空格分别压缩成一个空格,删除注解后,将导致变换后的新字符序列出现二个连续的空格。如;
g└┘└┘!h&└┘└┘i!└┘└┘j
本流程图将变换成g└┘└┘j。
为使变换后的新序列中除字符常数外没有连续的空格,图中的虚线框需作何改动(只需画出修改后的流程图)
试题四
在COMET型计算机上可以使用试卷上所附的CASL汇编语言。阅读以下程序说明和CASL程序,将应填入_(n)_处的字句,写在答卷的对应栏内。
[程序说明]
本程序是统计字符串中数字字符“0”至“9”的出现次数。
字符串中的每个字符是用ASCII码存贮。一个存贮单元存放两个字符,每个字符占8位二进位。
程序中,被统计的字符串从左至右存放在STR开始的连续单元中,并假定其长度不超过200,字符串以‘·’符作为结束。NCH开始的10个单元存放统计结果。
START MIN
MIN LEA GR2,9
LEA GR0,0
L1 _(1)_
LEA GR2,-1,GR2
LEA GR4,0
LEA GR1,0
L2 LD GR2,STR,GR1
EOR GR4,C1
JNZ RL
_(2)_
RL SRL GR2,8
LEA GR3,0,GR2
SUB BR3,C9
JNZ L4
L3 LEA GR3,0,GR2
SUB GR3,CO
JM1 L5
LEA GR2,1
_(3)_
_(4)_
L4 GR4 0,GR4
JNZ L2
_(5)_
JMP L2
L5 SUB GR2,C
JNZ L4
EXIT
C1 DC 1
C DC '·'
C0 DC '0'
C9 DC 9
STR DS 200
NCH DS 10
END
试题五
阅读以下程序说明和C程序,将应填入_(n)_处的字句,写在答卷的对应栏内。
[程序说明]
这里给出的程序逐一从指走课程成绩文件中读入学生的学号和成绩,对同一学生汇总他的总成绩,并按以下格式输出名次(按总成绩由高到低的顺序)、总成绩、同一名次的学生人数、同一名次学生的学号(按学号由小到大的顺序)。
程序约定学生学习课程不超过30种,课程成绩文件的第一个数字就是课程号,统计过程中,同一课程号的成绩文件不能重复输入。
程序采用链表结构存储学生有关信息,链表中的每个表元对应一位学生。程序在数据输入过程中,形成一个按学生学号从小到大顺序链接的有序链表。当数据输入结束后,程序按总成绩从高到低,学号从小到大的顺序对链表排序。程序最后按指定格式输出链表中的信息。程序的输出格式如下例所示:
名 次
总成绩
人 数
学 号
1
470
2
12
25
3
450
3
15
24
50
6
430
1
14
7
401
3
13
18
45
…
[程序]
#include 〈stdio.h〉
#define M 30
#define NLEN 10
typedef struct node {int cur_s/*最近输入成绩的科目 */
char no[NLEN];int score;
stuction node *next;
}NODE;
N0DE*bubblesort(N0DE*head)
{NODE *q,*tail,*p=(MODE*)malloc(sizeof(NODE);
p→next=head;head=p;tail=NULL;
while (tail!=___(1)___)
{p=head;q=p→next;
while (q→enxt!=tail)
{if (p→next→score→〈q→next→score||
p→next→scor==q→next→score&&
strcmp(p→next→no,q→next→no)〉0)
{p→next=_(2)_,/*两相邻表元链接关系前后颠倒*/
_(3)_=q→next→next;p→next→next=q;
}
p=p→next;/*调整p和q*/ q=_(4)_;
}
tail=q;
}
p=head→next;free(head);return p;
}
int s[M],sp;
main()
{FILE*fp;
NODE*h,*u,*v*p;
int ss,,mark,order,c;
char fname[80],no[NLEN],ans;
for(h=NULL,sp=0;;)
{print(''输入科目成绩文件名(输入aaaa表示强行结束)。\n");
while (1)
{scanf("%s",fname);
if(strcmp(fname,"aaaa")==0)break;
if((fp=fopen(fname,"r"))==NULL)
printf("不能打开文件%s,请重新输入科目文件名。\n,fname);
else break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -