1、C语言运动会计分程序编写任务:参加运动会有n个学校,学校编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m=20,n=20)功能要求:1).可以输入各个项目的前三名或前五名的成绩;2)能统计各学校总分,3)可以按学校编号、学校总分、男女团体总分排序输出;4).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。 规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,
2、运动项目的名称)输出形式:有中文提示,各学校分数为整形界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;#include #include #include #includeusing namespace std; int n
3、,m,w;struct pro /表示项目的结构体 string name; /项目名称 int snum6; /前5名学校的编号 p21; struct school /表示学校的结构体 int num; string name; /学校名称 int score; /学校总分 int male; /男子总分 int female; /女子总分 sch21; int integral15=7,5,3,2,1;/前五名得分int integral23=5,3,2;/前三名得分 void input() int i,j,y,x; printf(输入学校数目:); y=0; scanf(%d,&n)
4、; if(n=1&n=20) y=1; if(y)break; else printf(输入数据有误,请重新输入:); for(i=1;i=n;i+) printf(输入第%d个学校的名称:,i); scanf(%s,&schi.name); schi.score=0; schi.female=0; schi.male=0; schi.num=i; printf(输入男子项目数和女子项目数:); y=0; scanf(%d%d,&m,&w); if(m=1&w=1)y=1; if(y)break; else printf(输入数据有误,请重新输入:); for(i=1;i=m+w;i+) pr
5、intf(输入第%d个项目的名称:n,i); scanf(%s,& pi.name); printf(输入第%d个项目的前5名的学校编号:n,i); for(j=1;j=1&x=20)y=1; if(y)break; else printf(输入数据有误,请重新输入:); pi.snumj=x; schx.score+=integralj-1; if(i=m)schx.male+=integralj-1; else schx.female+=integralj-1; void print(int i) printf(%d%d%s%d%d%d%d%d%d,schi.num,setw(10),sc
6、hi.name,setw(8),schi.score,setw(9) ,schi.male,setw(10),schi.female); void bianhao() /按编号排序 int i,j; school t; for(i=1;in;i+) for(j=i;jschj.num) t=schi;schi=schj;schj=t; printf(n按编号排列:n); printf(编号 学校名称 总分 男子总分 女子总分n); for(i=1;i=n;i+) print(i); void zongfen() /按学校总分排序 int i,j; school t; for(i=1;in;i+
7、) for(j=i;j=n;j+) if(schi.scoreschj.score) t=schi;schi=schj;schj=t; printf(n按学校总分排列:n); printf(编号 学校名称 总分 男子总分 女子总分n); for(i=1;i=n;i+) print(i); ofstream fout;fout.open(运动会分数统计.txt); fout编号 学校名称 总分 男子总分 女子总分endl;for(i=1;i=n;i+) foutschi.numsetw(13)schi.namesetw(8)schi.scoresetw(9) schi.malesetw(10)s
8、chi.femaleendl; fout.close(); void malezf() /按学校男总分排序 int i,j; school t; for(i=1;in;i+) for(j=i;j=n;j+) if(schi.maleschj.male) t=schi;schi=schj;schj=t; printf(n按学校男子总分排列:n); printf(编号 学校名称 总分 男子总分 女子总分n); for(i=1;i=n;i+) print(i); void femalezf() /按学校女总分排序 int i,j; school t; for(i=1;in;i+) for(j=i;j
9、=n;j+) if(schi.femaleschj.female) t=schi;schi=schj;schj=t; printf(n按学校女子总分排列:n); printf(编号 学校名称 总分 男子总分 女子总分n); for(i=1;i=1&s=n)y=1; if(y)break; else printf(输入数据有误,请重新输入:); printf(该学校相关信息:n); printf(编号 学校名称 总分 男子总分 女子总分n); for(i=1;i=1&s=n)y=1; if(y)break; else printf(输入数据有误,请重新输入:); printf(%s前5名学校编号
10、及名称为n,ps.name); printf(名次 编号 学校名称n); for(i=1;i=5;i+) printf( %d %d%d%sn,i,ps.snumi,setw(12),sch ps.snumi .name); printf(n); void solve() /菜单函数 int z; while(1) printf(n选择您需要的操作(选择序号):n); printf(1.按学校编号排序输出n); printf(2.按学校总分排序输出n); printf(3.按学校男总分排序输出n); printf(4.按学校女总分排序输出n); printf(5.查询某个学校成绩n); pri
11、ntf(6.查询某个项目成绩n); printf(7.结束nn); scanf(%d,&z); if(z=1)bianhao(); if(z=2)zongfen(); if(z=3)malezf(); if(z=4)femalezf(); if(z=5)cxsch(); if(z=6)cxxm(); if(z=7)break; int main() /主函数 input(); solve(); return 0; #include #include #include #includeusing namespace std; int n; /n个学校 int m; /m个男子项目 int w;
12、/w个女子项目 struct pro /表示项目的结构体 string name; /项目名称 int snum6; /前5名学校的编号 p21; struct school /表示学校的结构体 int num; string name; /学校名称 int score; /学校总分 int male; /男子总分 int female; /女子总分 sch21; int integral5=7,5,3,2,1;/前五名得分 void input() int i,j,y,x; printf(输入学校数目:); y=0; while(1) scanf(%d,&n); if(n=1&n=20)y=
13、1; if(y)break; else printf(输入数据有误,请重新输入:); for(i=1;i=n;i+) printf(输入第%d个学校的名称:,i); scanf(%s,&schi.name); schi.score=0; schi.female=0; schi.male=0; schi.num=i; printf(输入男子项目数和女子项目数:); y=0; while(1) scanf(%d%d,&m,&w); if(m=1&w=1)y=1; if(y)break; else printf(输入数据有误,请重新输入:); for(i=1;i=m+w;i+) printf(输入第
14、%d个项目的名称:n,i); scanf(%s,& pi.name); printf(输入第%d个项目的前5名的学校编号:n,i); for(j=1;j=1&x=20)y=1; if(y)break; else printf(输入数据有误,请重新输入:); pi.snumj=x; schx.score+=integralj-1; if(i=m)schx.male+=integralj-1; else schx.female+=integralj-1; void print(int i) printf(%d%d%s%d%d%d%d%d%d,schi.num,setw(10),schi.name,
15、setw(8),schi.score,setw(9) ,schi.male,setw(10),schi.female); void bianhao() /按编号排序 int i,j; school t; for(i=1;in;i+) for(j=i;jschj.num) t=schi;schi=schj;schj=t; printf(n按编号排列:n); printf(编号 学校名称 总分 男子总分 女子总分n); for(i=1;i=n;i+) print(i); void zongfen() /按学校总分排序 int i,j; school t; for(i=1;in;i+) for(j=
16、i;j=n;j+) if(schi.scoreschj.score) t=schi;schi=schj;schj=t; printf(n按学校总分排列:n); printf(编号 学校名称 总分 男子总分 女子总分n); for(i=1;i=n;i+) print(i); ofstream fout;fout.open(运动会分数统计.txt); fout编号 学校名称 总分 男子总分 女子总分endl;for(i=1;i=n;i+) foutschi.numsetw(13)schi.namesetw(8)schi.scoresetw(9) schi.malesetw(10)schi.fema
17、leendl; fout.close(); void malezf() /按学校男总分排序 int i,j; school t; for(i=1;in;i+) for(j=i;j=n;j+) if(schi.maleschj.male) t=schi;schi=schj;schj=t; printf(n按学校男子总分排列:n); printf(编号 学校名称 总分 男子总分 女子总分n); for(i=1;i=n;i+) print(i); void femalezf() /按学校女总分排序 int i,j; school t; for(i=1;in;i+) for(j=i;j=n;j+) i
18、f(schi.femaleschj.female) t=schi;schi=schj;schj=t; printf(n按学校女子总分排列:n); printf(编号 学校名称 总分 男子总分 女子总分n); for(i=1;i=1&s=n)y=1; if(y)break; else printf(输入数据有误,请重新输入:); printf(该学校相关信息:n); printf(编号 学校名称 总分 男子总分 女子总分n); for(i=1;i=1&s=n)y=1; if(y)break; else printf(输入数据有误,请重新输入:); printf(%s前5名学校编号及名称为n,ps
19、.name); printf(名次 编号 学校名称n); for(i=1;i=5;i+) printf( %d %d%d%sn,i,ps.snumi,setw(12),sch ps.snumi .name); printf(n); void solve() /菜单函数 int z; while(1) printf(n选择您需要的操作(选择序号):n); printf(1.按学校编号排序输出n); printf(2.按学校总分排序输出n); printf(3.按学校男总分排序输出n); printf(4.按学校女总分排序输出n); printf(5.查询某个学校成绩n); printf(6.查询某个项目成绩n); printf(7.结束nn); scanf(%d,&z); if(z=1)bianhao(); if(z=2)zongfen(); if(z=3)malezf(); if(z=4)femalezf(); if(z=5)cxsch(); if(z=6)cxxm(); if(z=7)break; int main() /主函数 input(); solve(); return 0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1