课课 程程 设设 计计 课程名称课程名称c c 语言课程设计语言课程设计 题目题目评分系统设计评分系统设计 专业专业电力工程与管理电力工程与管理 年年0606 月月2727 日日 课程设计任务书课程设计任务书 设计题目:设计比赛评分系统(给分原则:满分为设计题目:设计比赛评分系统(给分原则:满分为1010 分分; ;裁判给出分数后,去掉一个最高分裁判给出分数后,去掉一个最高分 和一个最低分后的平均分为选手的最后得分(精确到小数点后两位)和一个最低分后的平均分为选手的最后得分(精确到小数点后两位) 。。 )) 设计目的;设计目的; 1. 1.巩固和加深课堂所学知识;巩固和加深课堂所学知识; 2. 2.将课本上的理论知识和实际应用有机的结合起来,将课本上的理论知识和实际应用有机的结合起来, 培养同学们分析和解决实际问题的能培养同学们分析和解决实际问题的能 力;力; 3. 3.学会编制结构清晰、风格良好、数据结构选择恰当的学会编制结构清晰、风格良好、数据结构选择恰当的 c c 语言程序;语言程序; 设计任务设计任务 :: 功能:功能: 1 1、、 设参赛人数为设参赛人数为 2424 人,裁判人数为人,裁判人数为 8 8 位;位; 2 2、、 录入参赛人员的资料和得分情况,最后得分;录入参赛人员的资料和得分情况,最后得分; 3 3、、 按最后得分结果从高分到低分排序;按最后得分结果从高分到低分排序; 4 4、、 公布一、二、三等奖的得奖选手名单;公布一、二、三等奖的得奖选手名单; 5 5、、 此系统能够查询选手的得分情况。此系统能够查询选手的得分情况。 具体要求:具体要求: 1 1、、 题目:题目: 2 2、、 设计目的:设计目的: 3 3、、 设计内容:写出简要的程序功能描述、程序运行条件所需工具软件、输入输出描述等。设计内容:写出简要的程序功能描述、程序运行条件所需工具软件、输入输出描述等。 4 4、、 程序结构:函数定义说明;用到的库函数的功能说明、调用关系说明、参数传送方式说程序结构:函数定义说明;用到的库函数的功能说明、调用关系说明、参数传送方式说 明等;主要算法描述等(各模块功能实现)明等;主要算法描述等(各模块功能实现) 。。 5 5、、 设计要求:绘制设计系统的结构层次图,各功能实现的算法、会直接勾画流程图;程序设计要求:绘制设计系统的结构层次图,各功能实现的算法、会直接勾画流程图;程序 流程图、源程序;设计输入、输出界面。流程图、源程序;设计输入、输出界面。 6 6、、 ((1 1)程序结构设计特点;)程序结构设计特点; ((2 2)设计、调试程序心得、体会或不足。)设计、调试程序心得、体会或不足。 源程序 #include #include #include #include #include #include struct teststruct test {int num;{int num; float s; float s; };}; main()main() { { int i,j,k,bad,good; int i,j,k,bad,good; float ts,sum=0,aver=0,tm[10]; float ts,sum=0,aver=0,tm[10]; struct test data[10],*p[10],*temp; struct test data[10],*p[10],*temp; do {do { sum=0;aver=0; sum=0;aver=0; printf("Input 10 sorces------input 0(exit)\n");printf("Input 10 sorces------input 0(exit)\n"); for(i=0;i<10;i++)for(i=0;i<10;i++) {data[i].num=i+1; {data[i].num=i+1; scanf("%f", /* scanf("%f", /*分数的输入部分分数的输入部分*/ */ if(data[0].s==0) printf(0); if(data[0].s==0) printf(0); } } for(i=0;i<10;i++) tm[i]=data[i].s;for(i=0;i<10;i++) tm[i]=data[i].s; for(i=0;i<10;i++) p[i]= for(i=0;i<10;i++) p[i]= for(i=0;i<9;i++)for(i=0;i<9;i++) {k=i; {k=i; for(j=i+1;j<10;j++) for(j=i+1;j<10;j++) if(tm[k]s; aver=sum/8; /* aver=sum/8; /*计算平均值的部分计算平均值的部分*/ */ printf("\n-----------------\n");printf("\n-----------------\n"); printf("The aver is:%.1f\n",aver); printf("The aver is:%.1f\n",aver); printf("-----------------\n"); printf("-----------------\n"); (fabs(p[0]->s-aver)>fabs(p[9]->s-aver))?(bad=0):(bad=9);(fabs(p[0]->s-aver)>fabs(p[9]->s-aver))?(bad=0):(bad=9); /*/*通过绝对差值判断与平均值相差最大的裁判通过绝对差值判断与平均值相差最大的裁判*/ */ double min=fabs(p[5]->s-aver);double min=fabs(p[5]->s-aver); good=5; /* good=5; /*暂定第六个为最公平裁判暂定第六个为最公平裁判*/ */ for(i=4;i>0;i--)for(i=4;i>0;i--) {if((fabs(p[i]->s-aver))s-aver))s-aver); good=i; } {min=fabs(p[i]->s-aver); good=i; } else break; else break; } } /* /*用拆半法先将前半部分与用拆半法先将前半部分与minmin比较比较*/ */ for(i=6;i<9;i++) for(i=6;is-aver))s-aver))s-aver); good=i; } {min=fabs(p[i]->s-aver); good=i; } else break; else break; } } /* /*用拆半法先将后半部分与用拆半法先将后半部分与minmin比较比较*/ */ printf("The worst pingwei is %d and the sorce is %.1f\n",printf("The worst pingwei is %d and the sorce is %.1f\n", p[bad]->num,p[bad]->s); p[bad]->num,p[bad]->s); /* /*打印出最不公平裁判和其分数打印出最不公平裁判和其分数*/ */ printf("The best pingwei is %d and the sorce is %.1f\n", printf("The best pingwei is %d and the sorce is %.1f\n", p[good]->num,p[good]->s); p[good]->num,p[good]->s); /* /*打印出最公平裁判和其分数打印出最公平裁判和其分数*/ */ printf("\n----------------------------------\n");printf("\n----------------------------------\n"); printf("Next one:"); printf("Next one:"); /* /*打印出下一位打印出下一位*/ */ }while(1); }while(1); /* getch(); *//* getch(); */ return 0; return 0; } }
展开阅读全文