软题库 学习课程
当前位置:信管网 >> 在线考试中心 >> 信息系统项目管理师题库 >> 试题查看
试卷名称
考试中心《》在线考试
试卷年份2009年下半年
试题题型【分析简答题】
试题内容

试题七
阅读以下说明和C程序,将应填入  (n)  处的字句写在答题纸的对应栏内。
[说明]
现有n(n<1000)节火车车厢,顺序编号为1,2,3,…,n,按编号连续依次从A方向的铁轨驶入,从B方向铁轨驶出,一旦车厢进入车站(Station)就不能再回到A方向的铁轨上:一旦车厢驶入B方向铁轨就不能再回到车站,如下图所示,其中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<stdio.h>
/*此处为栈类型及其基本操作的定义,省略*/
int main29{
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;i<n;i++)  /*读入需要驶出的车厢编号序列,存入数组state[]*/
scanf("%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+1;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;
}



查看答案

相关试题