阅读以下应用程序说明和C程序,将C程序段中(1)~(7)空缺处的语句填写完整。【说明】以下【C程序】的功能是,逐一从指定课程成绩文件中读入学生的考号和成绩,对同一学生汇总他(她)的总成绩,并按如图6-14所示格式输出名次(按总成绩由高到底的顺序)、总成绩、同一名次的学生人数、同一名次学生的学号(按学号由小到大的顺序)。该应用程序约定学生学习课程不超过30种,课程成绩文件的第1个数字就是课程号。统计过程中,同一课程号的成绩文件不能重复输入。该应用程序采用链表结构存储学生的相关信息,链表中的每个表元对应一位学生。在数据输入过程中,形成一个按学号从小到大顺序链接的有序链表。当数据输入结束后,程序按总成绩从高到低,学号从小到大的顺序对链表排序。最后程序按指定格式输出链表中的信息。【C程序】include<stdio.h>define M 30define NLEN 10typedef struct node {int cur_s; /* 最近输入成绩的科目*/Char no[NLEN];int score;struct node *next;} NODE;int s[M], sp, ss, i, mark, order, C;FILE *fp; NODE *h, *U, *V, *p;Char fname[80], no[NLEN], ans;main(){ for(h = NULL, sp = 0; ;){ printf("输入科目成绩文件名(输入aaaa表示强行结束)。 \n");while(1){ scanf("%s", fname);if (strcmp(fname, "aaaa") == 0)break;if ((fp = fopen(fname, "r")) == NULL)printf("不能打开文件%s, 请重新输入科目文件名。 \n", fname);elsebreak;}if (strcmp(fname, "aaaa") == 0) break;fscanf(fp, "%d", ss); /* 输入科目号 */s[sp]=s;for (i=0; s[i] ! = ss; 1++);if ( (1) ){ printf("该科目的成绩已输入,请输入别的科目成绩文件。\n");continue;}sp++;while (fscanf(fp, "%s%d", no, mark) == 2){ /* 在链表中寻找最近输入的学号 */for(v = h; v != NULL strcmp(v-> no, no)<0; u=v, v= v-> next);if (v !=NULL strcmp(v->no, nb) == 0){ /* 该生已有成绩 */if (V->cur_s != ss){ /* 该生的当前科目成绩是第一次输入 */v->score += mark; /* 累计总成绩 */v->cur_s = ss;} /* 同一科目成绩重复输入,后输入成绩被忽略 */}else{ p = (NODE *)malloc(sizeof(NODE)); /* 一位新的学生 */strcpy(p->no,no);p->score = mark;p->cur_s = ss;p-> next = v;

阅读以下应用程序说明和C程序,将C程序段中(1)~(7)空缺处的语句填写完整。

【说明】

以下【C程序】的功能是,逐一从指定课程成绩文件中读入学生的考号和成绩,对同一学生汇总他(她)的总成绩,并按如图6-14所示格式输出名次(按总成绩由高到底的顺序)、总成绩、同一名次的学生人数、同一名次学生的学号(按学号由小到大的顺序)。

该应用程序约定学生学习课程不超过30种,课程成绩文件的第1个数字就是课程号。统计过程中,同一课程号的成绩文件不能重复输入。

该应用程序采用链表结构存储学生的相关信息,链表中的每个表元对应一位学生。在数据输入过程中,形成一个按学号从小到大顺序链接的有序链表。当数据输入结束后,程序按总成绩从高到低,学号从小到大的顺序对链表排序。最后程序按指定格式输出链表中的信息。

【C程序】

include<stdio.h>

define M 30

define NLEN 10

typedef struct node {

int cur_s; /* 最近输入成绩的科目*/

Char no[NLEN];

int score;

struct node *next;

} NODE;

int s[M], sp, ss, i, mark, order, C;

FILE *fp; NODE *h, *U, *V, *p;

Char fname[80], no[NLEN], ans;

main()

{ for(h = NULL, sp = 0; ;)

{ printf("输入科目成绩文件名(输入aaaa表示强行结束)。 \n");

while(1)

{ scanf("%s", fname);

if (strcmp(fname, "aaaa") == 0)

break;

if ((fp = fopen(fname, "r")) == NULL)

printf("不能打开文件%s, 请重新输入科目文件名。 \n", fname);

else

break;

}

if (strcmp(fname, "aaaa") == 0) break;

fscanf(fp, "%d", &ss); /* 输入科目号 */s[sp]=s;

for (i=0; s[i] ! = ss; 1++);

if ( (1) )

{ printf("该科目的成绩已输入,请输入别的科目成绩文件。\n");

continue;

}

sp++;

while (fscanf(fp, "%s%d", no, &mark) == 2)

{ /* 在链表中寻找最近输入的学号 */

for(v = h; v != NULL && strcmp(v-> no, no)<0; u=v, v= v-> next);

if (v !=NULL && strcmp(v->no, nb) == 0)

{ /* 该生已有成绩 */

if (V->cur_s != ss)

{ /* 该生的当前科目成绩是第一次输入 */

v->score += mark; /* 累计总成绩 */

v->cur_s = ss;

} /* 同一科目成绩重复输入,后输入成绩被忽略 */

}

else

{ p = (NODE *)malloc(sizeof(NODE)); /* 一位新的学生 */

strcpy(p->no,no);

p->score = mark;

p->cur_s = ss;

p-> next = v;


相关考题:

阅读以下说明和流程图(如图3所示),回答问题1和问题2。【说明】本流程图实现从成绩文件生成学生成绩一览表。某中学某年级的学生成绩数据(分数)登录在成绩文件10中,其记录格式见表2:由该成绩文件生成见表3的学生成绩一览表。生成的学生成绩一览表按学号升序排列。表中的名次是指该生相应课程在年级中的名次。流程图中的顺序文件F0是学生成绩文件,F0文件经处理1处理后产生顺序文件F,然后经过处理2至处理4对文件F进行处理和更新。在处理5中,仅对文件F的纪录进行学生成绩一览表的编排输出,不进行排序和增加名次等处理。流程图中文件F的纪录格式设定为见表4形式:其中的①、②应定义为何种数据项?

请仔细阅读以下关于某传输系统的技术说明、状态转换图及Java程序,根据要求回答问题1~问题2。[说明]传输门是传输系统中的重要装置。传输门具有Open(打开)、Closed(关闭)、Opening(正在打开)、 StayOpen(保持打开)和Closing(正在关闭)5种状态。触发状态的转换事件有click、complete和timeout3种。事件与其相应的状态转换如图7-16所示。下面的[Java代码1]与[Java代码2]分别用两种不同的设计思路对传输门进行状态模拟,请填补代码段中的空缺语句。[Java代码1]请将以上[Java代码1]与[Java代码2]程序段中,(1)~(7)空缺处的语句填写完整。

阅读以下应用程序说明和C程序,将C程序段中(1)~(7)空缺处的语句填写完整。[说明]以下[C程序]完成从指定数据文件中读入职工的工号和他完成产品个数的数据信息,对同一职工多次完成的产品个数进行累计,最后按表5-22所示的格式输出职工完成产品数量的名次(ORDER)。该名次是按每位职工完成的产品数量(QUANTITY)排序,之后同一名次的职工人数(COUNT)和他们的职工号(NUMBER,同一名次的职工号以从小到大的顺序输出)。以下[C程序]采用链表结构存储有关信息,链表中的每个表元对应一位职工。在数据输入同时,形成一个有序链表(按完成的产品数量和工号排序)。当一个职工有新的数据输入,在累计他的完成数量时会改变原来链表的有序性,为此应对链表进行删除、查找和插入等处理。[C程序]

请认真阅读以下函数说明、图及C程序,将程序段中(1)~(7)空缺处的语句填写完整。[说明]一般的树结构常采用孩子—兄弟表示法表示,即用二叉链表做树的存储结构,链表中节点的两个链域分别指向该节点的第一个孩子节点和下一个兄弟节点。例如,如图1-15(a)所示树的孩子—兄弟表示如图1-15(b)所示。函数LevelTraverse()的功能是对给定树进行层序遍历。例如,对如图1-15所示的树进行层序遍历时,节点的访问次序为D B A E F P C。对树进行层序遍历时使用了队列结构,实现队列基本操作的函数原型如表1-11所示。Bool、Status类型定义如下:树的二叉链表节点定义如下:[C函数程序]

阅读以下函数说明和C代码,将C程序中(1)~(5)空缺处的语句填写完整。[说明]函数int Toplogical(LinkedWDigraphG)的功能是对图G中的顶点进行拓扑排序,并返回关键路径的长度。其中,图G表示一个具有n个顶点的AOE-网,图中顶点从1~n依次编号,图G的存储结构采用邻接表表示,其数据类型定义如下。例如,某AOE-网如图6-22所示,其邻接表存储结构如图6-23所示。[函数]

补充程序Ccon0110.C,该程序的功能是计算三个学生的总成绩和平均成绩,其中三个学生的成绩存储在一个结构体数组中。

设学生成绩表的结构为(学号、课程号、成绩),程序运行界面如图1所示。进入界面后,用户首先选择学号(Combo1)、课程号(Combo2),姓名(Text1)和课程名(Text2)从数据库中自动读入;然后,用户输入对应的成绩(Text3),点击“确认”按钮后,将结果插入到学生成绩表中。请补充完成下列程序代码。

题目内容:某班有10名同学,建立学生结构体类型,包括学号、姓名、3门课程的成绩,编写程序,读入已准备好的文本文件student1.txt,为结构体数组变量赋值,计算每名学生的平均成绩及名次。结果输出到屏幕的同时保存到student2.txt文件中。将源程序作为答案提交,程序运行后将生成的student2.txt文件作为附件上传。 (该作业不计入课程总成绩。student1.txt已提供,直接从附件下载)。

1、题目内容:某班有10名同学,建立学生结构体类型,包括学号、姓名、3门课程的成绩,编写程序,读入已准备好的文本文件student1.txt,为结构体数组变量赋值,计算每名学生的平均成绩及名次。结果输出到屏幕的同时保存到student2.txt文件中。将源程序作为答案提交,程序运行后将生成的student2.txt文件作为附件上传。 (该作业不计入课程总成绩。student1.txt已提供,直接从附件下载)。