一起答
主观

阅读以下说明和流程图,回答问题1和问题2,将答案写在答卷的对应栏内。

【说明】

 本流程图实现从比赛成绩文件生成赛车成绩一览表。

 某国际高等级赛车比赛使用如图所示的成绩处理流程,比赛成绩记录在成绩文件F0中,其记录格式如下:

由该成绩文件生成如下所示的车手成绩一览表。生成的车手成绩一览表按总名次(系统会根据总成绩和分段成绩按规定方式计算得出总名次,不会有相同名次存在)降序排列。表中第n赛段的名次是该车手相应赛段在全部车手中的名次,成绩是根据规定方式计算而得的成绩,总名次是总成绩在所有车手中排名的名次。

流程图中的顺序文件F0是车手成绩文件,F0文件经处理l处理后产生顺序文件F,然后经处理2至处理4对文件F进行处理和更新,在处理5中,仅仅对文件F的记录进行车手成绩一览表的编排输出,不进行排序和增加名次等处理。

流程图中的文件F的记录格式设置为如下形式:

其中的①、②应定义为何种数据?

参考答案
查看试卷详情
相关试题
  1. 阅读下列Java程序和程序说明,将应填入(n)处的字句写在对应栏内。

     【说明】清点盒子。本程序当用户输入一个整数值时,一切正常;当输入其他数值时,程序就出错。现在已做了改进,请填空。

    import java. text. NumberFormat;

    Public class InventoryLoop

    {

     public static void main(String args[])

     {

       String numBoxesIn;

       Int numBoxes;

       Double boxPrice=3.25;

       Boolean gotGoodInput=false;

       NumberFormat currency=NumberFormat.(1);

       do

       {

         System.out. print(“How many boxes do we have?”);

         numBoxesIn=DummiesIO. (2);

         try

         {

           numBoxes=Integer.parseInt((3));

           system. out. print("The value is");

           system.out. println(currency, format (numBoxes*boxPrice));

           gotGoodInput=true;

           catch((4))

           {

             System.out.println();

             System.out. println(That's not a number.");

           }

       }while((5));//输入不正确时

       System. out.println("That's that.");

     }

    }

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

    【说明】[程序6说明]单源最短路径的分支限界算法。

    const int MAXNUM=29999;

    #include<iostream>

    #include<vector>

    #include<algorithm>

    #include<functional>

    using namespace std;

    template <class VertexType,class EdgeType>

    class MinNode {   //程序中使用的最小化堆的结点说明

    friend class Graph<VertexType,EdgeType>

    public:

    MinNode (int nl, EdgeType length1)

    { VexNum=nl;

    length=length1;

    }

    bool operator>(const MinNode<VertexType,EdgeType>&p)const

    { return (1)>p.length;

    }

    private:

       int VexNum;

        //记录源点序号,序号数组p及distance下标相一致。源点为初始扩展顶点

       EdgeType length;

            //记录源点到本顶点的当前最短路径的长度,源点到自身的长度为0

    }

    template<class VertexType,classEdgeType>

    void Graph<VertexType,EdgeType>:: shortestpath(VertexType start) {

       int j,k,source;//source 记录源点的序号。

       EdgeType*distance=(2);

       int*p=new int[MaxNumVertex];

       vector<MinNode<VertexType,EdgeType> >H;

       for(source=0;source<MaxNumVertex;source++)

       { if(NodeList[source]==start)break;}

       if (source>=MaxNumVertex){cout<<”This is error!”<<end1;return;}

       MinNode<VertexType,Edge Type>(3);

       for(k=0;k<MaxNumVertex;k++)

       {  distance[k]:MAXXUM;   //记录源点到本顶点k的最终的最短路径的长度

          p[k]=source;       //记录最短路径上的本顶点的直接前驱顶点的序号

       }

       distance[source]=0;p[source]=-1;//m 是源点,前一顶点不存在

       vector<MinNode<VertexType, EdgeType>>::iterator q;

       while(1){

         for(j=0;j<MaxNumVertex;j++)

        if((AdjMatrix[E.VexNum* MaxNumVertex+j]<MAXNUM)

            &&((4)<distance[j]))

            {  distance[j]=E.length+AdjMatrix[E.VexNum* MaxNumVertex+j];

               p[j]=E. VexNum;   //记录顶点j的前一顶点

               MinNode<VertexType, EdgeType>(5);

               H.push_ back(N);

               push_heap(H. begin(),H.end(),greater<MinNode<VertexType,

                                       EdgeType>>());

            }

        if(H.empty()=true)break;    //若优先队列为空,那么算法结束

        else{

               pop_ heap(H.begin(),H. end(),greater<MinNode<VertexType,

                                       EdgeType>>());

               q=H.end()-1; //从最小化堆中取路径最短的顶点

               E=*q;

               H.pop_ back(); //删除从最小化堆中“挤”出的顶点

           }

        } //end while

        for(k=0;k<MaxNumVertex;k++){

           cout<<"Shorstest path from vertex"<<k<<"is"<<distance[k]<<end1;

           j=k;cou

  3. 阅读下列C程序和程序说明,将应填入(n)处的字句写在答题纸的对应栏内。

    【说明】用克鲁斯卡尔算法求解给定图的最小生成树。

     #include <stdio. h>

     #include <stdlib. h>

     #define MAXN 30

     typedef struct

     {  int v1,v2;  /*一条边依附的两个顶点*/

        int weight;  /*边上的权值*/

     }EDGE;

     typedef struct

     {  int Vnum;   /*图中的顶点数目*/

        EDGE e[MAXN*(MAXN-1)/2]; /*图中的边*/

     }Graph;

     typedef struct node{  /*用链表存储同一个连通分量的顶点*/

       int v;

       struct node *next;

     }Alist;

     void heapadjust(EDGE data[], int s, int m)

     {  /*将元素序列data[s..m]调整为小顶堆, 堆顶元素(最小元素)为data[s]*/

      int j;

      EDGE t;

      t=data[s];  /*备份元素data[s], 为其找到适当位置后再插入*/

      for(j=2*s+1; j<=m; j=j*2+1){/*沿值较小的子结点向下筛选*/

        if(j<m &&(1)) ++j;

        if(!(t. weight>data[j]. weight)) break;

        data[s]=data[j];s=j;  /*用s记录待插入元素的位置(下标)*/

      }/*for*/

      data[s]=t;    /*将备份元素插入由s所指出的插入位置*/

     }/*heapadjust*/

     int creat_graph(Graph *p)  /*输入图中的顶点及边, 返回图中边的数目*/

     {  int k=0;  /*记录图中边的数目*/

      int n;

      int v1,v2;

      int w;

      printf("vertex number of the graph:");

      scanf("%d", &n);  /*输入图中的顶点数目*/

      if(n<1) return 0;

      p->Vnum=n;

      do{  printf("edge(vertex1,vertex2,weight):");

          scanf("%d %d %d", &V1, &v2, &w);

          if(v1>=0 && v1<n && v2>=0 && v2<n){

            p->e[k]. v1=v1; p->e[k]. v2=v2; p->e[k]. weight=w;

            k++;

          }/*if*/

      }while(!( (2) ));

      return k;  /*返回图中边的数目*/

     }/*creat_graph*/

     int kruskal(Graph G, int enumber, int tree[][3])

     {  /*用kruskal算法求无向连通图G的最小生成树, 图中边所得数目为enumber, */

        /*数组tree[][3]中存放生成树中边的顶点和边上的权值, 函数返回生成树的代价*/

         int i, k, m, c=0;

         int v1, v2;

         Alist *p, *q, *a[MAXN];

         for(i=0; i<G.Vnum; ++i){  /*将每个连通分量中的顶点存放在一个单链表中*/

           a[i]=(Alist*)malloc(sizeof(Alist));

           if(!a[i]) {

             printf("\n mernory allocation error!");

               exit(0);

             }/*if*/

           a[i]->v=i; a[i]->next=NULL;

         }/*for*/

         for(i=enumber-1; i>=0; --i)/*按照边上的权值建立小顶堆*/

           heapadjust( (3) );

       k=G. Vnum;  /*k用于计算图中的连通分量数目*/

       m=enumber-1;

       i=0;

       do{

         v1=G. e[0]. v1; v2=G. e[0]. v2;

          p=a[v1];

         while(p && p->v!=v2){  /*判断当前选择的边的顶点是否在一个连通分量中*/

           q=p; p=p->next;

         }

         if(!p){  /*当前边的顶点不在一个连通分量中*/

           p=q;

           p->next=a[G. e[0]. v2];

     &nb

  4. 比较时序图和协作图,说明区别和联系。

  5. 阅读以下说明和图,回答问题1和问题2,将答案写在答卷的对应栏内。

    【说明】

     银行客户需要从ATM取100元,他向ATM的读卡机插卡,读卡机读取卡号,然后ATM屏幕初始化,ATM提示输入PIN(密码),客户输入PIN(123456),ATM打开他的账户,密码有效,因此ATM提示选择事务,客户选择取钱,ATM提示输入金额,客户输入100元, ATM验证账户上有足够的钱,就从账上减去100元,ATM吐出100元,并退出客户的卡。

    根据上面的描述,完成下述的时序图。

  6. 求零件颜色不是白色和黑色的供应商状态为1的订单的数量。

  7. 阅读以下说明,回答问题1至问题3,将答案写在答卷的对应栏内。

    【说明】

     下面是某ERP系统中零件供应模块的3个关系模式。

     供应商:S(SNO,SNAME,CITY,STATUS)

     零件:P(PNO,PNAME,WEIGHT,COLOR,CITY)

     供应单:SP(SNO,PNO,PTY,SP Date)

     属性说明:

     SNO—供应商编号,SNAME—供应商名称,CITY—地址,STATUS—供应商状态

     PNO—零件编号,PNAME—零件名称,WEIGHT—零件重量,COLOR—零件颜色, CITY—地址,PTY—数量,SP Date—订单日期

     问题:

     用SQL语句完成以下操作。

    求供应红色零件北京供应商的编号、名称和状态。

  8. 将所有北京供应商的状态为2的修改为1。

  9. 简述处理2、处理3和处理4做何种处理,若有排序处理则需指明排序的键及序(升序或降序)。

  10. 阅读以下说明和流程图,回答问题1和问题2,将答案写在答卷的对应栏内。

    【说明】

     本流程图实现从比赛成绩文件生成赛车成绩一览表。

     某国际高等级赛车比赛使用如图所示的成绩处理流程,比赛成绩记录在成绩文件F0中,其记录格式如下:

    由该成绩文件生成如下所示的车手成绩一览表。生成的车手成绩一览表按总名次(系统会根据总成绩和分段成绩按规定方式计算得出总名次,不会有相同名次存在)降序排列。表中第n赛段的名次是该车手相应赛段在全部车手中的名次,成绩是根据规定方式计算而得的成绩,总名次是总成绩在所有车手中排名的名次。

    流程图中的顺序文件F0是车手成绩文件,F0文件经处理l处理后产生顺序文件F,然后经处理2至处理4对文件F进行处理和更新,在处理5中,仅仅对文件F的记录进行车手成绩一览表的编排输出,不进行排序和增加名次等处理。

    流程图中的文件F的记录格式设置为如下形式:

    其中的①、②应定义为何种数据?