当前位置: 答题翼 > 问答 > 计算机类考试 > 正文
目录: 标题| 题干| 答案| 搜索| 相关
问题

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


阅读以下应用程序说明和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;

请帮忙给出正确答案和分析,谢谢!

参考答案
您可能感兴趣的试题
  • 阅读以下说明和代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 下面的程序利用快

  • 试题二(共15分)阅读以下说明、C程序代码和问题1至问题3,将解答写在答题纸的对应栏内。【说明1】设在

  • ()阅读下列说明和C语言程序,将应填入 (n)处的语句写在答题纸的对应栏内。[说明]有一个一维数组cj,

  • ()阅读下列说明和C语言程序,将应填入 (n)处的语句写在答题纸的对应栏内。[说明]下面程序是一个带

  • 试题五(共15分)阅读下列说明和程序,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】在开发

  • 阅读下列程序说明和C程序 把应填入其中(n)处的字句 写在对应栏内。【程序说明】 已知某二叉树的前序