问答题


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


【说明】
本流程图实现从比赛成绩文件生成赛车成绩一览表。
某国际高等级赛车比赛使用如图所示的成绩处理流程,比赛成绩记录在成绩文件F0中,其记录格式如下:
赛车号 车手姓名 第1赛段成绩 第2赛段成绩 第n赛段成绩
由该成绩文件生成如下所示的车手成绩一览表。生成的车手成绩一览表按总名次(系统会根据总成绩和分段成绩按规定方式计算得出总名次,不会有相同名次存在)降序排列。表中第n赛段的名次是该车手相应赛段在全部车手中的名次,成绩是根据规定方式计算而得的成绩,总名次是总成绩在所有车手中排名的名次。
赛车号 车手姓名 赛段1 赛段n 全程
成绩 名次 成绩 名次 总成绩 总名次
                   
                   
流程图中的顺序文件F0是车手成绩文件,F0文件经处理l处理后产生顺序文件F,然后经处理2至处理4对文件F进行处理和更新,在处理5中,仅仅对文件F的记录进行车手成绩一览表的编排输出,不进行排序和增加名次等处理。
【问题2】
简述处理2、处理3和处理4做何种处理,若有排序处理则需指明排序的键及序(升序或降序)。

【参考答案】

按课程代码(升序)、成绩(降序) 处理2:对文件F排序。 处理3:决定分赛段名次,计算总成绩,决定总名次,填入文件F的相......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题

问答题
【说明】构造最优二叉查找树。 具有n个结点的有序序列a1, a2, …, an存在于数组元素a[1]、a[2], …, a[n]之中, a[0]未被使用。结点a1, a2, …, an-1, an的查找成功的概率p1, p2, …, pn-1, pn存在于数组元素 p[1]、p[2], …, p[n—1]、p[n]之中, p[0]未用。另外, 查找失败的概率q0, q1, …, qn-1, qn存在于数组元素q[0]、p[1], …, q[n-1]、q[n]之中。算法计算的序列ai+1, ai+2,…, aj-1, aj的最优二叉查找树Tij的代价Cij存在于数组元素c[i][j]之中, Tij的根结点的序号rij存在于r[i][j]之中, 它的权值存在于w[i][j]之中。为了便于内存的动态分配, 统统使用一维数组取代二维数组。 const float MAXNUM=99999. 0; 尽可能大的浮点数 template< (1) > void OPtimal_Binary_Search_Tree(float p[], float q[], Type a[], int n) { float *C, *W; c= (2) ; w= (3) ; int *r; r=new int[(n+1)*(n+1)]; for(i=0; i<=n; i++) { c[i*(n+1)+i]=0. 0; 即:c[i][i]=0.0, 用一维数组表示 w[i*(n+1)+i]=q[i]; 即:w[i][i]=q[i], 用一维数组表示 } int i, j, k, m, length; m表示根结点的下标或序号, 范围为0~n float minimum; for(length=1; length<=n; length++) 处理的序列长度由1到n for(i=0; i<=n-length; i++){ i为二叉查找树Tij的起始序号 j=i + length; j为二叉查找树Tij的终止序号。如:处理序列a1a2a3时, 相应的二叉查找树为T03, i=0, 而j=3 w[i*(n+1)+j]= (4) ; minimum =MAXMUM; for(k=i+1; k<=j; k++) 考察以ai+1、ai+2, …, ai为根的情况 if( (5) <minimum) { minimum=c[i*(n+1)+k-1]+c[k*(n+1)+j];m=k; } c[i*(n+1)+j]=w[i*(n+1)+j]+c[i*(n+1)+m-1]+c[m*(n+1)+j]; r[i*(n+1)+j]=m; r[i][j]=m } } 构造好的最优二叉查找树的根结点的序号在r[0][n]中