运动会分数统计(实验报告源程序)C
实验报告1
实验名称:数据结构与软件设计实习
题 目:运动会分数统计
专业:生物信息学 班级:01 姓名: 学号:实验日期:2010.07.22
实验目的:
掌握基本的输入输出方法,理解程序的分支结构,实现条件判断和循环程序的
设计;
掌握结构体的应用;
二、 实验要求:
生各学院的成绩单,包括各学院所取得的项目号、名次(成绩)、学生姓名(或学号)和得分;产生团体总分报表,包括学院号、男子团体总分、女子团体总分和团体总分。
实验内容:
参加运动会的的学院编号为1~n,比赛分成m个男子项目和w个女子项目,编号分别为1~m和m+1~m+w,所有项目都取前五名,得分顺序为7,5,3,2,1。写一个统计程序产生各种成绩单和得分报表。
通过编程解决一些实际问题,并对程序进行测试,可设n=4,m=3,w=2进行测试,一般考虑n≤20,m≤30,w≤20,姓名长度不超过20个字符,按名次顺序输入运动员姓名、学院名和成绩。
四、实验编程结果或过程:
1. 数据定义
(1)描述运动员的线性表
typedef struct
{
int item[MAXSIZE]; //参赛项目号
char thletename[MAXSIZE][20];//姓名
char sex[MAXSIZE];//性别
int schoolnum[MAXSIZE];//所在学校编号
int num[MAXSIZE];//名次
int point[MAXSIZE];//得分
int last;
};
(2)描述学院的线性表
typedef struct
{ int schoolnum[MAXSIZE];//学校编号
int Tgirl[MAXSIZE];//女生团体总分
int Tboy[MAXSIZE];//男生团体总分
int Tall[MAXSIZE];//学校总成绩
int last;
};
2. 函数如下,代码详见文件“运动会.cpp”
初始化函数
控制输入的函数
算分的函数
控制输出成绩的函数
3. 运行测试结果,运行结果无误,如下图
错误调试,能够正确处理错误,如下图
调试分析
用线性链表时应注意细节,指针的使用过程中很容易出错,从而达不到采用其起到的效果。
线性表School的各属性在用之前需要初始化。
进行健壮性判断时遇到很多问题:
判断性别是否正确时S1->sex[i]!='g'和S1->sex[i]!='b'必须是并且关系
当检测到错误,需要重新输入时,要在输入函数里再调输入函数,用递归调用的方法实现重新输入。
输入函数里传参时必须用指针(引用)类型,因为需要带回数据
五、实验总结:
(1)实验中的存在问题和提高
存在问题:程序有待简化。
提高:错误处理比较全面,而且能及时应对处理。
(2)收获与体会
基本的输入输出方法,理解程序的分支结构,实现条件判断和循环程序的设计;结构体的应用;
附录 源程序
#include
#include
#include
using namespace std;
#define MAXSIZE 100
#define ERROR 0
#define RIGHT 1
#include
#include
int str_int(char *str)//字符串转换为数字
{
int num, i;
num = *str - '0';
i = 1;
while (str[i] && isdigit(str[i]))
num = num * 10 + str[i++] - '0';
return num;
}
typedef struct
{
int item