信管网试题内容
信管网 导航

试卷名称:2009年下半年软件设计师考试下午真题试题(案例分析)

考试年份:2009年下半年

试题来源:《2009年下半年软件设计师考试下午真题试题(案例分析)》在线考试

试题内容

阅读以下说明和C程序,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
现有n(n<1000)节火车车厢,顺序编号为1,2,3,„,n,按编号连续依次从A方向的铁轨驶入,从B方向铁轨驶出,一旦车厢进入车站(Station)就不能再回到A方向的铁轨上;一旦车厢驶入B方向铁轨就不能再回到车站,如图7-1所示,其中Station为栈结构,初始为空且最多能停放1000节车厢。

下面的C程序判断能否从B方向驶出预先指定的车厢序列,程序中使用了栈类型STACK,关于栈基本操作的函数原型说明如下:
void InitStack(STACK *s):初始化栈。
void Push (STACK *s,int e):将一个整数压栈,栈中元素数目增1。 void Pop (STACK *s):栈顶元素出栈,栈中元素数目减1。
int Top (STACK s):返回非空栈的栈顶元素值,栈中元素数目不变。 int IsEmpty (STACK s):若是空栈则返回1,否则返回0。
【C程序】
#include
/*此处为栈类型及其基本操作的定义,省略*/
int main(){
STACK station;
int state[1000];
int n;                                /*车厢数*/
int begin, i, j, maxNo;           /*maxNo为A端正待入栈的车厢编号*/
printf("请输入车厢数:");
scanf("%d",&n);
printf(“请输入需要判断的车厢编号序列(以空格分隔):”);
if(n<1)return-1;
for (i=0; iscanf("%d",&state[i]);
(1) /*初始化栈*/
maxNo=1;
for(i=0; i<n; ){  /*检查输出序列中的每个车厢号state[i]是否能从栈中获取*/
if( (2) ){    /*当栈不为空时*/
if (state[i]=Top(station)) {    /*栈顶车厢号等于被检查车厢号*/
printf("%d",Top(station));
Pop(&station);i++;

else
if ( (3) ) {
printf(“error\n”);
return 1;

else{
begin= (4)
for(j=begin+l;j <=state [i];j++) {
Push(&station, j);
}


else{   /*当栈为空时*/
begin=maxNo;
for(j=begin; j<=state[i];j++) {
Push(&station, j);

maxNo= (5)


printf("OK");
return 0;
参考答案:暂时没有答案(仅供参考) 收藏

【解析】

普通会员无法查看试题解析。[开通试题解析服务]