实验说明 题目 运动会分数统计 一一 需需求求分分析析 1 在该程序中 参赛学校编号为 1 n n 20 比赛分成 m m 30 个男子项目和 w w初始化学校信息 2 依次输入每个运动员的信息 3 根据每个学生的成绩计算对应的得分 及个学校的总得分 男团总 分 女团总分 4 生成个学校的成绩单 并输出 三三 详详细细设设计计 1 数数据据结结构构的的定定义义 描描述述运运动动员员的的线线性性表表 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 Thlete 描述学校的线性表描述学校的线性表 2 typedef struct int schoolnum MAXSIZE 学校编号 int Tgirl MAXSIZE 女生团体总分 int Tboy MAXSIZE 男生团体总分 int Tall MAXSIZE 学校总成绩 int last School 控制输入的函数控制输入的函数 3 3 int input Thlete S1 int n int m int w cout 项目号 t 姓名 t 性别 t 学校号 t 名次 t last MAXSIZE 1 cout 运动员人数已满 无法继续输入 S1 item i i if i 100 1 cout 运动员人数已满 无法继续输入 last i for i 0 ilast i if S1 schoolnum i n cout 您的输入有误 输入学校个数不能超过 n 请重新输 入 sex i g input S1 n m w return ERROR return RIGHT 用于计算学校各项成绩的函数用于计算学校各项成绩的函数 3 3 void mark Thlete L1 School L2 int n int m int w int i j for i 0 ilast 1 i if L1 item i 2 1 项目编号为奇数的按第一种评分方法计算得分 if L1 num i 1 L1 point i 7 if L1 num i 2 L1 point i 5 if L1 num i 3 L1 point i 3 if L1 num i 4 L1 point i 2 if L1 num i 5 L1 point i 1 if L1 num i 5 L1 point i 0 if L1 item i 2 0 项目编号为偶数的按第二种评分方法计算得分 if L1 num i 1 L1 point i 5 if L1 num i 2 L1 point i 3 if L1 num i 3 L1 point i 2 if L1 num i 3 L1 point i 0 for i 0 ilast 1 i for j 0 jlast 1 j if L2 schoolnum i L1 schoolnum j if L1 sex j b L2 Tboy i L2 Tboy i L1 point j 累加各学校的男团总分 if L1 sex j g L2 Tgirl i L2 Tgirl i L1 point j 累加各学校的女团总分 L2 Tall i L2 Tgirl i L2 Tboy i 计算个学校的集体总分 控制输出成绩的函数控制输出成绩的函数 4 4 void output Thlete L1 School L2 int i j for i 0 i L2 last 1 i cout 第 i 1 号学校的成绩 endl cout endl cout 学校 t 项目 t 姓名 t 性别 t 名次 t 得分 endl for j 0 j L1 last 1 j if L2 schoolnum i L1 schoolnum j cout L1 schoolnum j t L1 item j t L1 thletename j t L1 sex j t L1 num j t L1 point j endl cout i 1 号学校的女子团体总分为 L2 Tgirl i endl cout i 1 号学校的男子团体总分为 L2 Tboy i endl cout i 1 号学校的全体运动员总分为 L2 Tall i endl cout sex i g 和S1 sex i b 必须是并且关系 b 当检测到错误 需要重新输入时 要在输入函数里再调输入函数 用递归调用的方法实现重新输入 开始 InitSCH include define MAXSIZE 100 define ERROR 0 define RIGHT 1 n m w 回车 项目号项目号 姓名姓名 性别性别 学校号学校号 名次名次 根据提示输入数据 输出 第第 i 1 i 1 last n 1 for i 0 ilast 1 i S schoolnum i i 1 S Tgirl i 0 S Tboy i 0 S Tall i 0 int input Thlete S1 int n int m int w cout 项目号 t 姓名 t 性别 t 学校号 t 名次 t last MAXSIZE 1 cout 运动员人数已满 无法继续输入 S1 item i i if i 100 1 cout 运动员人数已满 无法继续输入 last i for i 0 ilast i if S1 schoolnum i n cout 您的输入有误 输入学校个数不能超过 n 请 重新输入 sex i g input S1 n m w return ERROR return RIGHT void mark Thlete L1 School L2 int n int m int w int i j for i 0 ilast 1 i if L1 item i 2 1 项目编号为奇数的按第一种评分方法计 算得分 if L1 num i 1 L1 point i 7 if L1 num i 2 L1 point i 5 if L1 num i 3 L1 point i 3 if L1 num i 4 L1 point i 2 if L1 num i 5 L1 point i 1 if L1 num i 5 L1 point i 0 if L1 item i 2 0 项目编号为偶数的按第二种评分方法计 算得分 if L1 num i 1 L1 point i 5 if L1 num i 2 L1 point i 3 if L1 num i 3 L1 point i 2 if L1 num i 3 L1 point i 0 for i 0 ilast 1 i for j 0 jlast 1 j if L2 schoolnum i L1 schoolnum j if L1 sex j b L2 Tboy i L2 Tboy i L1 point j 累加各学校的男团总分 if L1 sex j g L2 Tgirl i L2 Tgirl i L1 point j 累加各学校的女团总分 L2 Tall i L2 Tgirl i L2 Tboy i 计算个学校的集体总分 void output Thlete L1 School L2 int i j for i 0 i L2 last 1 i cout 第 i 1 号学校的成绩 endl cout endl cout 学校 t 项目 t 姓名 t 性 别 t 名次 t 得分 endl for j 0 j L1 last 1 j if L2 schoolnum i L1 schoolnum j cout L1 schoolnum j t L1 item j t L1 thletename j t L1 sex j t L1 num j t L1 point j endl cout i 1 号学校的女子团体总分为 L2 Tgirl i endl cout i 1 号学校的男子团体总分为 L2 Tboy i endl cout i 1 号学校的全体运动员总分为 L2 Tall i endl cout endl int main int i j k n m w Thlete S1 S1 last 1 School S2 cout 欢迎进入运动会成绩录入及统计 系统 endl cout endl cout n cout m cout w InitSCH 初始化学校成绩 将个项目得分均置为零 input 调用输入函数 mark output S1 S2 system pause return 0
展开阅读全文