主题:运动会分数统计
josephzzq
[专家分:0] 发布于 2006-06-29 23:05:00
任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)
功能要求:1).可以输入各个项目的前三名或前五名的成绩;
2).能统计各学校总分,
3).可以按学校编号、学校总分、男女团体总分排序输出;
4).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)
输出形式:有中文提示,各学校分数为整形
界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;
测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;
能帮一帮我吗:
请高手帮一帮我对逻辑结构和所选择存储结构的描述说明和实现算法的简要描述啦
谢谢!!~~~
回复列表 (共3个回复)
沙发
justforfun626 [专家分:18460] 发布于 2006-06-30 08:49:00
你让别人为你做作业,你已经放弃学习电脑语言了!
为了中国软件工业的未来,有爱心的朋友请不要帮忙代做作业,或者至少是收费服务!谢谢大家!!!
1) 努力,自己做。
2) 放弃, 改行, 学别的。
3) 挂科,重修,不放弃,下学期努力。
4) 花大钱,雇别人做,欺骗老师,不过下学期你大概要努力一点了。
5) 不努力,不花钱,欺骗老师,下学期故技重演。
你选择!!!
But, the last two need help of other victims or volunteers.
Good Luck!
板凳
cctv116 [专家分:0] 发布于 2006-07-03 17:11:00
这个程序仅仅给个参考,其实这个题目很简单,只需运用到简单的链表的知识。并不是什么难题,很基础。学过数据结构的都可以做出来。
#define n 4
#define m 3
#define w 2
struct achievement //定义表示成绩的结构体
{int schoolnumber;
char name[20];
int mark;
int result;};
struct pro //表示项目的结构体
{int tag;
struct achievement ach[5];
int number;};
struct Node
{struct pro date;
struct Node *next;};
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
void ListInitiate(struct Node * *head) //初始化单链表
{
if((*head=(struct Node*)malloc(sizeof(struct Node)))==NULL) exit(1);
(*head)->next=NULL;
}
void main()
{
int i,j,t;
int x[n]={0};int y[n]={0};
struct Node *head;
struct Node *p;
struct Node *q;
ListInitiate(&head);
p=head;
for(i=0;i<m+w;i++) //输入成绩
{
j=i+1;
printf("请输入第%d个项目的信息\n",j);
p->date.number=j;
printf("所取的名次数为:");
scanf("%d",&p->date.tag);
while(p->date.tag!=3&&p->date.tag!=5)
{printf("输入有误,请重新输入!");
printf("所取的名次数为:");
scanf("%d",&p->date.tag);}
t=1;
while(t<=p->date.tag)
{
printf("第%d名的名字:",t);
scanf("%s",&p->date.ach[t-1].name);
printf("第%d名的学校:",t);
scanf("%d",&p->date.ach[t-1].schoolnumber);
printf("第%d名的分数:",t);
scanf("%d",&p->date.ach[t-1].mark);
p->date.ach[t-1].result=t;
t++;
}
q=(struct Node*)malloc(sizeof(struct Node)); //生成新结点
p->next=q;
p=q;
p->next=NULL;
}
for(i=0;i<n;i++) //产生成绩单
{
j=i+1;
printf("学校%d成绩单\n",j);
//t=1;
p=head;
do
{
t=1;
while(t<=p->date.tag)
{
if(p->date.ach[t-1].schoolnumber==j)
{
printf("获奖项目:%d ",p->date.number);
printf("名次:%d \n",p->date.ach[t-1].result);
printf("获奖人姓名:%s ",p->date.ach[t-1].name);
printf("所得分数:%d ",p->date.ach[t-1].mark);
if(p->date.number<=m)
x[i]=x[i]+p->date.ach[t-1].mark;
else
y[i]=y[i]+p->date.ach[t-1].mark;
}
t++;
}
p=p->next;
}while(p!=NULL);
printf("\n男子团体总分:%d ",x[i]);
printf("女子团体总分:%d \n",y[i]);
printf("\n团体总分:%d\n",x[i]+y[i]);
}
}
3 楼
cctv116 [专家分:0] 发布于 2006-07-03 17:13:00
上面的程序横简单
我来回复