毕业设计,毕业论文代写。专业水平。钻石水准,黄金品质。

计算机专业毕业设计,论文,设计代写。电邮:elevenor@gmail.com。专业水平,质优价廉。

原创 浙江大学计算机系硕士研究生复试题目解答(3)收藏

新一篇: 浙江大学计算机系硕士研究生复试题目解答(4) | 旧一篇: 浙大计算机组成与设计课后习题答案

分数统计 12分)
题目要求:
今天的上机考试虽然有实时的Ranklist,但上面的排名只是根据完成的题数排序,没有考虑
每题的分值,所以并不是最后的排名。给定录取分数线,请你写程序找出最后通过分数线的
考生,并将他们的成绩按降序打印。
具体的输入输出格式规定如下:
输入格式:测试输入包含若干场考试的信息。每场考试信息的第1行给出考生人数N ( 0 < N
< 1000 )
、考题数M ( 0 < M < = 10
)
、分数线(正整数)G;第2行排序给出第1题至第M题的正整数分值;以下N行,每行给出一
名考生的准考证号(长度不超过20的字符串)、该生解决的题目总数m、以及这m道题的题号
(题目号由1M)。
当读入的考生人数为0时,输入结束,该场考试不予处理。
输出格式:对每场考试,首先在第1行输出不低于分数线的考生人数n,随后n行按分数从高
到低输出上线考生的考号与分数,其间用1空格分隔。若有多名考生分数相同,则按他们考
号的升序输出。
要求:

完整的输入输出输入样例:


输出样例:

源代码如下:

/*  zju.h

    Copyright (c) 2002, 2006 by ctu_85
    All Rights Reserved.
*/
#include "stdio.h"
#include "string.h"
#include "malloc.h"
#define maxquestionnum 10
#define maxidnum 20
#define bufsize 32
#define maxparti 1000
struct Examination *CreateExam(int,Examination*,Examination*);
struct Participator *CreateParticipator(int,int);
int Calculate(int,int,Participator *,int [maxquestionnum]);
int Judge(int,int,Participator *,Examination *);
int Sort(Participator *,int);
int Print(Examination *p,int);
struct Examination
{
int participatenum;
int questionnum;
int passline;
int passnum;
int mark[maxquestionnum];
struct Examination *next;
struct Participator *work;
};
struct Participator
{
char id[maxidnum+1];
int status[maxquestionnum+1];
int score;
int pass;
int priority;
int isprint;
struct Participator *next;
};
int main()
{
int i=0;
struct Examination *examhead,*p;
struct Participator *parti;
printf("\nNow please enter the information,end with 0 paticipator of exam:\n");
examhead=CreateExam(0,p,examhead);
if(!examhead)
printf("There is no examination today\n");
else
do
{
printf("The %dth exam:",i+1);
Print(examhead,examhead->passnum);
i++;
examhead=examhead->next;
}
while (examhead);
return 1;
}
struct Examination *CreateExam(int headstatus,Examination * pre,Examination *head) /* Record the details of each examination*/
{
int x,tag=0,count=0,base=1,k,status=1,score=0,tmp;
char buf[bufsize],*c;
struct Examination *exam=(struct Examination*)(malloc(sizeof(Examination)));
if(headstatus==0)
{
pre=exam;
head=exam;
}
else
pre->next=exam;
printf("Please enter the %dth examination:\n",headstatus+1);
c=gets(buf);
if(*buf!='0')
{
for(x=0;x<maxquestionnum;x++)
exam->mark[x]=0;/* Initializing */
exam->participatenum=0;
exam->questionnum=0;
exam->passline=0;
exam->next=NULL;
exam->work=NULL;
exam->passnum=0;
for(tag=0;*c!='\0';c++,tag++)
{
if(*c==' ')
{
if(status==1)
{
tmp=tag-1;
for(k=count-1;k>=0;k--,tmp--)
{
exam->participatenum+=base*(buf[tmp]-'0');
base*=10;
}
}
else
if(status==2)
{
tmp=tag-1;
for(k=count-1;k>=0;k--,tmp--)
{
exam->questionnum+=base*(buf[tmp]-'0');
base*=10;
}
}
base=1;
status++;
count=0;
}
else
count++;
}
if(*c=='\0')
if(status==3)
{
tmp=tag-1;
for(k=count-1;k>=0;k--,tmp--)
{
exam->passline+=base*(buf[tmp]-'0');
base*=10;
}
}
base=1;
count=0;
printf("Please enter the marks of each problem:\n");
c=gets(buf);
for(tag=0;*c!='\0';c++,tag++)
if(*c==' ')
{
tmp=tag-1;
for(k=count-1;k>=0;k--,tmp--)
{
exam->mark[score]+=base*(buf[tmp]-'0');
base*=10;
}
base=1;
score++;
count=0;
}
else
count++;
if(*c=='\0')
{
tmp=tag-1;
for(k=count-1;k>=0;k--,tmp--)
{
exam->mark[score]+=base*(buf[tmp]-'0');
base*=10;
}
}
exam->work=CreateParticipator(exam->participatenum,exam->questionnum);
Calculate(exam->participatenum,exam->questionnum,exam->work,exam->mark);
Judge(exam->participatenum,exam->passline,exam->work,exam);
Sort(exam->work,exam->participatenum);
headstatus++;
CreateExam(headstatus,exam,head);
}
else
{
if(headstatus!=0)
pre->next=NULL;
else
head=NULL;
return head;
}
}
struct Participator *CreateParticipator(int i,int j)
{
Participator *p,*pre,*head;
int m,n=0,count=0,tag,x,tmp,k,status=1,base=1;
int headstat=0;
char buf[bufsize],*c;
for(m=0;m<i;m++)
{
p=(struct Participator*)(malloc(sizeof(struct Participator)));
if(headstat==0)
{
head=p;
headstat++;
pre=p;
}
else
{
pre->next=p;
pre=pre->next;
}
printf("Please enter the %dth participator's info:\n",m+1);
for(j=0;j<maxquestionnum+1;j++)/* Initializing */
p->status[j]=0;
p->pass=0;
p->score=0;
p->priority=maxparti+1;
p->isprint=0;
c=gets(buf);
for(tag=0;*c!='\0';c++,tag++)
{
if(*c==' ')
{
if(status==1)
{
tmp=tag-1;
for(k=count-1;k>=0;k--,tmp--)
p->id[k]=buf[tmp];
p->id[count]='\0';
}
else if(status>2)
{
tmp=tag-1;
for(k=count-1;k>=0;k--,tmp--)
{
n+=base*(buf[tmp]-'0');
base*=10;
}
p->status[n]=1;
}
base=1;
n=0;
status++;
count=0;
}
else
count++;
}
if(*c=='\0'&&status>2)
{
tmp=tag-1;
for(k=count-1;k>=0;k--,tmp--)
{
n+=base*(buf[tmp]-'0');
base*=10;
}
p->status[n]=1;
}
base=1;
count=0;
n=0;
status=1;
}
p->next=NULL;
return head;
}
int Calculate(int pepl,int que,Participator *p,int mark[maxquestionnum]) /*To examinate the details of each person*/
{
int i,j,temp=0;
for(i=0;i<pepl;i++,p=p->next)
{
for(j=1;j<=que;j++)
if(p->status[j]==1)
temp+=mark[j-1];
p->score=temp;
temp=0;
}
return 1;
}
int Judge(int pepl,int pass,Participator *p,Examination *ep)
{
int i;
for(i=0;i<pepl;i++,p=p->next)
{
if(p->score>=pass)
{
p->pass=1;
(ep->passnum)++;
}
else
p->pass=0;
}
return 1;
}
int Sort(Participator *p,int num)
{
int i,j,max=-1,prio=0;
Participator *temp,*t1;
for(i=0;i<num;i++)
{
temp=p;
t1=p;
for(j=0;j<num;j++,temp=temp->next)   /* Find the max score which is unidentified*/
if(temp->pass==1&&temp->score>=max&&temp->isprint==0)
{
max=temp->score;
t1=temp;
}
temp=p;
for(j=0;j<num;j++,temp=temp->next)  /* Find the engager who has the smallest index*/
if(temp->score==max&&temp->isprint==0)
if(strcmp(temp->id,t1->id)<0)
t1=temp;
if(t1->pass==1&&t1->isprint==0)
{
t1->priority=prio;
t1->isprint=1;
prio++;
}
max=-1;
}
return 1;
}
int Print(Examination *p,int num)
{
Participator *head,*temp;
int i,j;
head=p->work;
printf("%dhave(has) passed\n",num);
for(i=0;i<num;i++)
{
temp=head;
for(j=0;temp!=NULL;j++,temp=temp->next)
if(temp->priority==i)
{
printf("%s %d\n",temp->id,temp->score);
break;
}
}
return 1;
}

了解更多浙大研究生复试解答请点击

http://blog.csdn.net/ctu_85/archive/2006/10/15/1334936.aspx
http://blog.csdn.net/ctu_85/archive/2006/10/16/1336101.aspx
http://blog.csdn.net/ctu_85/archive/2006/10/31/1357794.aspx

浙江大学ACM试题解答(四月)
http://blog.csdn.net/ctu_85/archive/2007/04/24/1576831.aspx
浙江大学ACM试题解答(三月)
http://blog.csdn.net/ctu_85/archive/2007/03/20/1535556.aspx
麻省理工算法导论翻译
http://blog.csdn.net/ctu_85/archive/2007/06/08/1643179.aspx
华容道游戏与算法
http://blog.csdn.net/ctu_85/archive/2007/05/15/1610722.aspx
中国象棋对战程序C语言源代码
http://blog.csdn.net/ctu_85/archive/2007/05/04/1596351.aspx

软件可行性报告
http://blog.csdn.net/ctu_85/archive/2006/06/06/775894.aspx
软件需求分析报告
http://blog.csdn.net/ctu_85/archive/2006/06/06/775892.aspx

发表于 @ 2006年10月30日 16:16:00|评论(loading...)|编辑

新一篇: 浙江大学计算机系硕士研究生复试题目解答(4) | 旧一篇: 浙大计算机组成与设计课后习题答案

评论

#セレブ委員会 发表于2008-11-19 11:09:37  IP: 124.26.174.*
エロアダルトスワッピング
#逆援助大好き 发表于2008-11-21 11:52:25  IP: 116.82.241.*
人妻セフレナンパ
#在宅バイト 发表于2008-11-23 11:45:12  IP: 124.26.194.*
セックス童貞風俗
发表评论  


登录
Csdn Blog version 3.1a
Copyright © ctu_85