一起答
主观

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

 [说明]

 已知一棵二叉树用二叉链表存储,t指向根结点,p指向树中任一结点。下列算法为输出从t到P之间路径上的结点。

 [C程序]

 #define Maxsize 1000

 typedef struct node{

 TelemType data;

 struct node*1child,*rchild;

 }BiNode,*BiTree;

 void Path(BiTree t,BiNode*P)

 { BiTree*stack[Maxsize],*stackl[Maxsize],*q;

 int tag[Maxsize],top=0,topl;

 q=t;

 /*通过先序遍历发现P*/

 do(while(q!=NULL && q!=p)

 /*扫描左孩子,且相应的结点不为P*/

 { (1);

 stack[top]=q;

 tag[top]=0;

  (2);

 }

 if(top>0)

 { if(stack[top]==P) break;  /*找到P,栈底到栈顶为t到P*/

 if(tag[top]==1)top--;

 else{q=stack[top];

 q=q->rchild;

 tag[top]=1;

 }

 }

 } (3);

 top--; topl=0;

 while(top>0){

 q=stack[top];  /*反向打印准备*/

 topl++;

  (4);

 top--;

 }

 while((5)){  /*打印栈的内容*/

 q=stackl[topl];

 printf(q->data);

 topl--;

 }

 }

试题出自试卷《软件水平考试(初级)程序员下午(应用技术)模拟试卷39》
参考答案
查看试卷详情
相关试题
  1. 阅读以下说明和Java程序,将应填入(n)处的字句写在对应栏内。

     [说明]

     下面程序实现十进制向其它进制的转换。

     [Java程序]

     ClasS Node{

     int data;

     Node next;

    }

    class Transform{

     private Node top;

     public void print(){

     Node p;

     while(top!=null){

     P=top;

     if(P.data>9)

     System.out.print((char)(P.data+55));

     else

     System.out.print(p.data);

     top=p.next;

     }

     }

     public void Trans(int d,int i){//d为数字;i为进制

     int m;

      (1) n=false;

     Node p;

     while(d>0){

      (2);

     d=d/i;

     p=new Node();

     if( (3) ){

     p.data=m;

      (4);

     top=P;

     n=true;

     }

     else{

     p.data=m;

      (5);

     top=P;

     }

     }

     }

    }

  2. 阅读以下说明和C++程序,将应填入(n)处的字句写在对应栏内。

     [说明]

     下面程序是为汽车市场编制的一个程序的一部分。其中automobile是基类。

     [C++程序]

     //Auto.h

     #ifndef AUTO_H

     #define AUTO_H

     class automobile

     {

     (1):

     int miles_per_gallon;  //汽车每加仑行驶公里数

     float fuel_capacity;  //油箱容积

     public:

     void initialize(int in_mpg,int in_fuel);

     int get_mpg(void);

     float get_fuel(void);

     float travel_distance(void);

     }

     #endif

     //Auto.cpp

     #include"auto.h"

     void automobile::initialize(int in_mpg,float in fuel)

     {

     miles_per_gallon=in_mpg;

     fuel_capacity=in_fuel;

     )

     int automobile::get_mpg()  //提供一辆特定汽车每加仑公里数

     {return miles per_gallon;}

     float automobile::get_fuel()  //提供油箱容积

     {return fuel_capacity;}

     float automobile::travel_distance()

     {return (2) }

     //car.h

     #ifndef CAR_H

     #define CAR_H

     #include"auto.h"

     class car: (3) 

     {

     int Total_doors;

     public:

     void initialize(int in_mpg,float in_fuel,int doors=4);

     int doors(void);

     };

     #endif

     //car.cpp

     #include"car.h"

     void car::initialize(int in_mpg,float in_fuel,int door)

     {

     Total_doors=door;

     miles_per_galion=in_mpg;

     fuel_capacity=in_fuel;

     }

     int car::doors(void)

     {return Total doors;}

     //Allauto.cpp

     #include

     #include"auto.h"

     #include"car.h"

     int main()

     {

     car sedan;

     sedan.initialize(24,20.0,4);

     tout<<"The sedan can travel"<< (4) <<"miles.\n";

     cout<<"The sedan has"<< (5) <<"doors.\n";

     return 0;

     }

  3. 阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

     [说明]

     某银行共发出M张储蓄卡,每张储蓄卡拥有唯一的卡号,每天每张储蓄卡至多支持储蓄卡持有者的N笔“存款”或“取款”业务。程序中用数组card[M][N+3]中的每一行存放一张储蓄卡的有关信息,其中:

     card[i][0]存放第i张卡的卡号;

     card[i][1]存放第i张卡的余额;

     card[i][2]存放第i张卡的当日业务实际发生笔数;

     card[i][3]~card[i][N+2]存放第i张卡的当日存取款金额,正值代表存款,负值代表取款。

     当持卡者输入正确的卡号、存款或取款金额后,程序进行相应的处理;若输入不正确的数据,程序会提示持卡者重新输入;若输入的卡号为负数时,银行终止该卡的当日业务。

     [C程序]

     #include<stdio.H>

     #define M 6

     #define N 5

     long card[M][N+3]={{9801,2000,0,},{9812,2000,2,},{9753,3000,1,},

     {8750,500,0,},{9604,2800,3,),(8901,5000,5,}};

     int locate(long card[][N+3],int m,long no)

     { int i;

     for(i=0;i<m;i++)

     if((1)==no) return i;

      (2);

     }

     main()

     {long cardNo,money;

     int k;

     while(1){

     printf("请输入卡号:\n");

     scanf("%1d",&cardNo);

     if(cardNo<0) break;

     k=locate(card,M,cardNo);

     if(k==-1){

     printf("不存在%id号的储蓄卡\n",cardNo);

     continue;

     }

     printf("请输入金额(正值代表存款,负值代表取款):\n");

     scanf("%id",&money);

     if(card[k][1]+money<0){

     printf("存款余额不足,不能完成本次的取款业务\n");

     continue;

     }

     if(card[k][2]==N){

     printf("已完成本卡的当日业务\n");

     continue;

     }

     /*处理一笔业务的数据*/

     card[k] (3)=money;

      (4);

      (5);

     }

     }

  4. 阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

     [说明1]

     函数int function(int a)的功能是判断指定的正整数是否为素数,若是,返回1,否则返回0。

     [C函数1]

     int function(int a)

     { int yes,i;

     i=2;yes=1;

     while(i<=a/2 && (1) ){

     if( (2) ) yes=0;

     i++;

     }

     return yes;

     }

     [说明2]

     函数int deleteARR(int*arr,intn)的功能是指定的有序数组压缩成各元素互不相同的有序数组,即相同数只保留一个,多余的被删除。函数返回值是互不相同的元素个数。

     [C函数2]

     int deleteARR(int*arr,int n)

     { int k,j;

     k=0;j=1;

     while(j<n){

     if( (3) )

      (4)=arr[j];

     j++;

     }

     return (5);

     }

  5. 阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

     [说明]

     已知一棵二叉树用二叉链表存储,t指向根结点,p指向树中任一结点。下列算法为输出从t到P之间路径上的结点。

     [C程序]

     #define Maxsize 1000

     typedef struct node{

     TelemType data;

     struct node*1child,*rchild;

     }BiNode,*BiTree;

     void Path(BiTree t,BiNode*P)

     { BiTree*stack[Maxsize],*stackl[Maxsize],*q;

     int tag[Maxsize],top=0,topl;

     q=t;

     /*通过先序遍历发现P*/

     do(while(q!=NULL && q!=p)

     /*扫描左孩子,且相应的结点不为P*/

     { (1);

     stack[top]=q;

     tag[top]=0;

      (2);

     }

     if(top>0)

     { if(stack[top]==P) break;  /*找到P,栈底到栈顶为t到P*/

     if(tag[top]==1)top--;

     else{q=stack[top];

     q=q->rchild;

     tag[top]=1;

     }

     }

     } (3);

     top--; topl=0;

     while(top>0){

     q=stack[top];  /*反向打印准备*/

     topl++;

      (4);

     top--;

     }

     while((5)){  /*打印栈的内容*/

     q=stackl[topl];

     printf(q->data);

     topl--;

     }

     }

  6. 阅读以下说明和流程图回答问题,将解答填入对应栏。

     [说明]

     “直接插入法”排序是一种N2运算量的例程,只能用在N较小的时候,其方法是:挑出第二个数将它按与第一个数大小的顺序插入,然后挑出第三个数将它按大小顺序插入到前两个数中,如此下去,一直到最后一个也插入。

     注:流程中循环开始的说明按照“循环变量:循环初值,循环终值,增量”格式描述。

     

     [问题]

     将流程图的(1)~(5)处补充完整。