c++选手打分程序

合集下载

c语言输入10个同学的成绩总分和平均值

c语言输入10个同学的成绩总分和平均值

c语言输入10个同学的成绩总分和平均值C语言输入10个同学的成绩总分和平均值一、前言在学习编程语言的过程中,C语言是一个非常基础且重要的语言。

在C 语言中,输入输出是非常基础的内容之一,学会如何输入和处理数据是我们学习编程的第一步。

本文将以输入10个同学的成绩总分和平均值为题,深入探讨C语言中的输入输出操作,并共享我对这个主题的个人理解。

二、基本概念在C语言中,我们可以通过scanf()函数来实现数据的输入。

scanf()函数是一个输入函数,可以将用户输入的数据存储到指定的变量中。

在本题中,我们需要输入10个同学的成绩,分别存储到不同的变量中。

三、具体操作在C语言中,我们可以使用循环来反复输入数据,以实现输入10个同学的成绩。

我们需要定义一个数组来存储这10个同学的成绩,然后通过循环依次输入每个同学的成绩。

我们可以使用循环再次遍历数组,求得这10个同学的成绩总和。

通过平均值公式,我们可以求得这10个同学的成绩平均值。

四、代码示例```c#include <stdio.h>int main() {int scores[10];int sum = 0;double average = 0.0;// 输入10个同学的成绩for (int i = 0; i < 10; i++) {printf("请输入第%d个同学的成绩:", i + 1);scanf("%d", &scores[i]);}// 计算成绩总和for (int i = 0; i < 10; i++) {sum += scores[i];}// 计算平均值average = (double) sum / 10;// 输出成绩总和和平均值printf("这10个同学的成绩总和为:%d\n", sum);printf("这10个同学的成绩平均值为:%.2f\n", average);return 0;}```五、总结回顾通过以上的代码示例,我们了解了如何在C语言中输入10个同学的成绩总分和平均值。

C语言实现歌手大奖赛计分程序

C语言实现歌手大奖赛计分程序

C语⾔实现歌⼿⼤奖赛计分程序本⽂实例为⼤家分享了C语⾔实现歌⼿⼤奖赛计分程序的具体代码,供⼤家参考,具体内容如下1. 题⽬描述编写⼀个程序,⽤户输⼊评委⼈数和分数后,程序可以计算去掉⼀个最⾼分和最低分后的平均成绩。

可多次输⼊选⼿成绩,输⼊N时退出程序。

2. 源代码#include <stdio.h>#include <stdlib.h>float score[99];//成绩数据int num=0;//评委数⽬float sum=0;//总分//输⼊打分数据并输出结果void inputSc(){if(num==0){printf("请您输⼊评委数⽬:");scanf("%d",&num);}int i=0;printf("请您输⼊%d位评委评分:\n",num);for(i=0;i<num;i++){scanf("%f",&score[i]);}//去掉最⾼分和最低分avoidMax(score);//输出结果printf("平均分:%.2f\n",sum/num);//恢复数⽬if(num>2){num = num+2;}}//成绩处理模块void avoidMax(float *score){int i=0;float max=*score,min=*score;//寻找最⾼分、最低分for(i=0;i<num;i++){if(*(score+i)>max)max = *(score+i);else if(*(score+i)<min);min = *(score+i);}//将最⾼分、最低分设置为0for(i=0;i<num;i++){if(num>2){if(*(score+i)==max || *(score+i)==min){*(score+i) = 0;}}sum += *(score+i);}if(num>2){num = num-2;}}//主函数int main(){char key;while(key!='N'&&key!='n'){inputSc();printf("按任意键继续下⼀选⼿成绩计算,退出请选择N:");fflush(stdin);key = getchar();}return 0;}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

C语言运动会计分程序编写

C语言运动会计分程序编写

C语言运动会计分程序编写简介本文档将指导您使用C语言编写一个运动会计分程序。

该程序可以用于记录运动会中的各项比赛成绩,并进行排名和统计。

通过编写此程序,您将学习C语言的基本语法和数据结构的应用。

目录•准备工作•程序框架•功能实现– 1. 添加参赛项目– 2. 添加运动员– 3. 记录成绩– 4. 排名和统计•总结准备工作在开始编写程序之前,您需要确保您已经安装了C语言的编译器。

您可以选择使用gcc或者其他常用的C语言编译器进行开发。

程序框架在编写程序之前,我们需要先设计程序的框架。

该程序需要实现以下功能:•添加参赛项目•添加运动员•记录成绩•排名和统计首先,我们需要定义一些数据结构来存储参赛项目、运动员和成绩信息。

接下来,我们将编写一系列的函数来实现上述功能。

以下是程序的框架:#include <stdio.h>// 定义数据结构:参赛项目struct Event {char name[50]; // 项目名称int participantCount; // 参赛人数// 其他项目相关信息...};// 定义数据结构:运动员struct Athlete {char name[50]; // 运动员姓名int score; // 运动员成绩// 其他运动员相关信息... };// 函数:添加参赛项目void addEvent();// 函数:添加运动员void addAthlete();// 函数:记录成绩void recordScore();// 函数:排名和统计void rankAndStats();int mn() {// 主程序逻辑return 0;}void addEvent() {// 添加参赛项目的具体逻辑}void addAthlete() {// 添加运动员的具体逻辑}void recordScore() {// 记录成绩的具体逻辑void rankAndStats() {// 排名和统计的具体逻辑}功能实现现在,我们将逐步实现程序的各个功能。

C++程序设计歌手打分

C++程序设计歌手打分

实验名称:歌手打分实验成绩:实验日期:5月30日—6月24日学号:实验学时:8学时姓名:一、实验目的利用所学习的C++知识,完成功能相应完整的系统的设计开发。

运用面向对象的编程思想开发设计程序。

二、准备内容1. 完成小型系统的设计开发,将主要部分进行注释。

2. 演示系统,演示过程中必须讲解出模块思想。

3. 回答老师的提问。

三、实验内容自已编写类的:写代码,得分点处要用注释标注做实验指导书的:写代码,每个功能模块用注释标注,每个类用注释标注,循环、判断、SWITCH语句用注释标注出来做游戏的:写代码,每个类用注释标注,循环、判断、SWITCH语句用注释标注出来。

将自己修改的地方标注出来。

四、实验结论制作系统的心得体会实验名称:歌手打分实验成绩:实验日期:5月30日—6月24日学号:094631210实验学时:8学时姓名:胡月一、实验目的利用所学习的C++知识,完成功能相应完整的系统的设计开发。

运用面向对象的编程思想开发设计程序。

二、准备内容1. 完成小型系统的设计开发,将主要部分进行注释。

2. 演示系统,演示过程中必须讲解出模块思想。

3. 回答老师的提问。

三、实验内容1.实验题目(实验指导书)N名裁判给M名歌手打分,评分原则是去掉一个最高分,去掉一个最低分,剩下的分数的平均值为该歌手的最终得分。

裁判给分的范围是60≤分数≤100。

裁判人数N=5。

编写一个程序,每个裁判所给的分数由键盘输入,要求屏幕按一定格式输出四项内容:歌手的姓名、他的最终得分、去掉的最高分、最低分;假如有4名歌手参加比赛,按得分由高到低输出全部歌手姓名和得分。

2.实验代码#include <iostream>using namespace std;const int JudgeNum=5; // 评委人数//常成员函数const int PlayerNum=4; // 选手人数class CompetitionResult {short num; // 选手号码char name[10]; // 选手姓名float score[JudgeNum]; // 记录各评委给选手的打分float average; // 选手最后得分public:CompetitionResult( );// 无参数构造函数CompetitionResult(short n, char * ps); // 一般构造函数float MaxScore( ); // 求评委打的最高分float MinScore( ); // 求评委打的最低分实验名称:歌手打分实验成绩:实验日期:5月30日—6月24日学号:094631210实验学时:8学时姓名:胡月void SetAvg(); // 求选手的最后得分float GetAvg() { return average; } // 读选手的最后得分short GetNo( ) { return num; } // 读选手的编号void setNo (int i) { num = i; } // 设置选手的编号char * GetName( ) { return name;} // 读选手的姓名float GetScore(int j){ return score[j];} // 读第j个评委的打分void SetScore(int k, float av){ score[k] = av;} // 记录第j个评委的打分friend void Sort(CompetitionResult * pr, int n); // 按最后得分由高到低排序//友元函数};CompetitionResult::CompetitionResult( ) // 无参数构造函数{num = 0;strcpy(name, "");for(int i = 0; i < JudgeNum; i++)//循环语句score[i] = 0;}CompetitionResult::CompetitionResult(short n, char * ps) // 一般构造函数{num = n;strcpy(name, ps);for(int i = 0; i < JudgeNum; i++)//循环语句score[i] = 0;}float CompetitionResult::MaxScore( )//求最高分{float max;max = score[0];for( int i = 1; i < JudgeNum; i++ )//循环语句if(score[i] > max)max = score[i];实验名称:歌手打分实验成绩:实验日期:5月30日—6月24日学号:094631210实验学时:8学时姓名:胡月return max;}float CompetitionResult::MinScore( )//求最低分{float min;min = score[0];for( int i = 1; i < JudgeNum; i++ )//循环语句if(score[i] < min)min = score[i];return min;}void CompetitionResult::SetAvg() // 求选手的最后得分{float total = 0;for( int i = 0; i < JudgeNum; i++)//循环语句total += score[i];total -= MaxScore()+MinScore();average=total/(JudgeNum-2);}void Sort(CompetitionResult * pr, int n) // 按最后得分由高到低排序{实验名称:歌手打分实验成绩:实验日期:5月30日—6月24日学号:094631210实验学时:8学时姓名:胡月int i, j,k;CompetitionResult temp;for (i=0;i<n-1;i++)//循环语句{k=i;for (j=i+1;j<n;j++)//循环语句if ((pr[j].average) > (pr[k].average))//判断语句k=j;if (k!=i)//判断语句{temp=pr[i];pr[i]=pr[k];pr[k]=temp;}}}int main( ){CompetitionResult r[PlayerNum] = {CompetitionResult(1, "张丽"), CompetitionResult(2, "刘飞"), CompetitionResult(3, "姜昕"), CompetitionResult(4, "张三")};float temp,min,max;cout << "采用100分制,裁判给分的范围是60≤分数≤100精确到小数点后两位,得分间用'TAB'键分隔"<<endl;for( int i =0; i < PlayerNum; i++ )//循环语句{cout << "\n请评委给第" << r[i].GetNo () << "号选手打分:\n";for(int j = 0; j < JudgeNum; j++ )//循环语句cout << "评委"<<j+1<<"\t";cout<<endl;for(j = 0; j < JudgeNum; j++ )//循环语句实验名称:歌手打分实验成绩:实验日期:5月30日—6月24日学号:094631210实验学时:8学时姓名:胡月{cin >> temp;if(temp<=60||temp>=100)//判断语句{cout<<"你输入了一个非法值。

C语言程序设计课程设计--歌手成绩管理系统

C语言程序设计课程设计--歌手成绩管理系统

《C语言程序设计课程设计》课程设计报告题目:歌手成绩管理系统学院:计算机科学与技术歌手成绩管理系统一、系统菜单及任务(1)系统菜单的主要功能(1)输入歌手信息(2)输出歌手信息(3)歌手成绩排序(4)记录歌手信息(5)保存歌手信息(6)添加歌手信息(7)删除歌手信息(8)退出系统(2)实现的任务:完成对歌手比赛信息的各种管理。

歌手比赛系统对一次歌手比赛的成绩进行管理,功能要求:1、输入每个选手的数据包括姓名、歌曲名、各评委的打分成绩,大众评委打分成绩,根据输入计算出总成绩。

2、显示主菜单如下:1)输入信息2)显示信息3)结果排序4)保存信息5)显示结果6)退出系统。

二、设计内容:确定能表述歌手信息的数据结构,至少要有姓名、歌曲名、各评委打分、大众评委打分等信息,它是本程序的核心数据结构,定义为如下的结构体类型:struct Sing{float P1;float P2;float A[M];};struct Singer{int num;float sum;char singerName[10];char singName1[20];char singName2[20];struct Sing singScore1;struct Sing singScore2;};三、程序应具有以下基本功能:❖信息输入:输入每个选手的数据包括姓名、各首歌曲的歌曲名、各评委的打分成绩,大众评委打分成绩❖计算成绩:根据输入计算出各歌手的每首歌得分以及总得分。

❖成绩排序:按歌手的最后得分❖保存结果:将结果保存在文本文件中。

❖要求界面良好四、主要流程图程序各模块(输入,显示等)结构图:五、系统测试程序进行实例如下1、显示主菜单界面:主要功能输入歌手信息输出歌手信息歌手成绩排序记录歌手信息保存歌手信息添加歌手信息删除歌手信息退出系统2、选择1:运行界面如下六、源程序及系统文件使用说明#include<stdio.h>#include<stdlib.h>/*动态存储分配函数*/#include<string.h>/*字符函数和字符串函数*/ #include<math.h>/*数学函数*/#define M 5int N;struct Sing/*歌曲信息结构体*/{float P1;float P2;float A[M];};struct Singer/*歌手信息结构体*/{int num;float sum;char singerName[10];char singName1[20];char singName2[20];struct Sing singScore1;struct Sing singScore2;};struct Singer Sin[200];void print(){printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n");printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");printf(" 欢迎进入歌手成绩管理系统\n");printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n");printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");}void menu();void input()/*输入歌手信息*/{int i;for(i=0;i<3;i++){printf("请输入歌手编号:");scanf("%d",&Sin[i].num );printf("请输入歌手姓名:");scanf("%s",Sin[i].singerName );printf("请输入歌曲1名称:");scanf("%s",Sin[i].singName1 );printf("请输入歌曲1大众评委打分:");scanf("%f",&Sin[i].singScore1.P1);printf("请输入歌曲1专业评委1打分:");scanf("%f",&Sin[i].singScore1.A[0]);printf("请输入歌曲1专业评委2打分:");scanf("%f",&Sin[i].singScore1.A[1]);printf("请输入歌曲1专业评委3打分:"); scanf("%f",&Sin[i].singScore1.A[2]);printf("请输入歌曲1专业评委4打分:"); scanf("%f",&Sin[i].singScore1.A[3]);printf("请输入歌曲1专业评委5打分:"); scanf("%f",&Sin[i].singScore1.A[4]);printf("歌曲1专业评委打分为:");Sin[i].singScore1.P2=(Sin[i].singScore1.A[0]+Sin[i].singScore1.A[1]+Sin[i].singScore1.A[2]+Sin[i].singScore1.A[3]+Sin[i].singScore1.A[4])/5;printf("%f\n",Sin[i].singScore1.P2);printf("请输入歌曲2名称:");scanf("%s",Sin[i].singName2 );printf("请输入歌曲2大众评委打分:");scanf("%f",&Sin[i].singScore2.P1);printf("请输入歌曲2专业评委1打分:"); scanf("%f",&Sin[i].singScore2.A[0]);printf("请输入歌曲2专业评委2打分:"); scanf("%f",&Sin[i].singScore2.A[1]);printf("请输入歌曲2专业评委3打分:"); scanf("%f",&Sin[i].singScore2.A[2]);printf("请输入歌曲2专业评委4打分:"); scanf("%f",&Sin[i].singScore2.A[3]);printf("请输入歌曲2专业评委5打分:"); scanf("%f",&Sin[i].singScore2.A[4]);printf("歌曲2专业评委打分为:");Sin[i].singScore2.P2=(Sin[i].singScore2.A[0]+Sin[i].singScore2.A[1]+Sin[i].singScore2.A[2]+Sin[i].singScore2.A[3]+Sin[i].singScore2.A[4])/5;printf("%f\n",Sin[i].singScore2.P2);printf("该歌手的总成绩为:");Sin[i].sum = Sin[i].singScore1.P1+Sin[i].singScore1.P2+Sin[i].singScore2.P1+Sin[i].singScore2.P2 ;printf("%lf\n",Sin[i].sum);}menu();}void output()/*输出歌手信息*/{int i;printf("输出歌手信息是:\n");for(i=0;i<3;i++){printf("编号歌手歌曲1 大众评委专业评委歌曲2 大众评委专业评委总分:\n");printf("%d\t%4s\t%4s\t%4.2f\t%6.2f\t%6s\t%8.2f\t%4.2f\t%6.2f\t\n",Sin[i].num ,Sin[i].singerName,Sin[i].singName1,Sin[i].singScore1.P1,Sin[i].singScore1.P2,Sin[i].singName2,Sin[i].singScore2.P1,Sin[i].singScore2.P2,Sin[i].sum);}menu();}void sort()/*对歌手成绩进行排序*/{float t,d,e,g,h;int i,j,m;char b[10],c[20],f[20];for(j=0;j<3;j++)for(i=0;i<2-j;i++)if(Sin[i].sum>Sin[i+1].sum ){t=Sin[i].sum ;Sin[i].sum =Sin[i+1].sum;Sin[i+1].sum =t;/*分数排序*/m=Sin[i].num ;Sin[i].num =Sin[i+1].num ;Sin[i+1].num =m;/*编号排序*/strcpy(b,Sin[i].singerName);strcpy(Sin[i].singerName,Sin[i+1].singerName);strcpy(Sin[i+1].singerName,b);/*名字复制替换进行名字排序*/strcpy(c,Sin[i].singName1);strcpy(Sin[i].singName1,Sin[i+1].singName1);strcpy(Sin[i].singName1,c);/*歌曲1名称排序*/d=Sin[i].singScore1.P1;Sin[i].singScore1.P1=Sin[i+1].singScore1.P1;Sin[i+1].singScore1.P1=d;/*歌曲1大众评委打分的排序*/e=Sin[i].singScore1.P2;Sin[i].singScore1.P2=Sin[i+1].singScore1.P2;Sin[i+1].singScore1.P2=e;/*歌曲1专业评委打分的排序strcpy(f,Sin[i].singName2);strcpy(Sin[i].singName2,Sin[i+1].singName2);strcpy(Sin[i+1].singName2,f);/*歌曲2名称的排序*/g=Sin[i].singScore2.P1;Sin[i].singScore2.P1=Sin[i+1].singScore2.P1;Sin[i+1].singScore2.P1=g;/*歌曲2大众评委打分的排序*/h=Sin[i].singScore2.P2;Sin[i].singScore2.P2=Sin[i+1].singScore2.P2;Sin[i+1].singScore2.P2=h;/*歌曲2专业评委打分的排序*/}printf("排序后的结果为:\n");printf("编号姓名总成绩:\n");for(i=0;i<3;i++)printf("%d\t%s\t%lf\t\n",Sin[i].num,Sin[i].singerName,Sin[i].sum);menu();}void save()/*将歌手信息保存到文本文件中*/{FILE *fp;int i;if((fp=fopen("f:\\lin","wb"))==NULL){printf("cannot open file\n");return;}for(i=0;i<200;i++)if(fwrite(&Sin[i],sizeof(struct Singer),1,fp)==1){printf("文件写入错误\n");break;}fclose(fp);}void WritetoText(int n)/*将所有记录写入文件*/{int i=0;FILE *fp;/*定义文件指针*/char filename[200];printf("将所有记录写入文件:\n");/*输入文件名*/printf("输入文件名:\n");scanf("%s",filename);if((fp=fopen(filename,"a"))==NULL)/*打开文件*/{printf("不能打开文件:\n");system("pause");return;/*终止程序*/}fprintf(fp,"%d\n",n);/*循环写入数据*/fprintf(fp,"编号歌手歌曲1 大众评委专业评委歌曲2 大众评委专业评委总分:\n");while(i<n){fprintf(fp,"%d\t%2s\t%2s\t%lf\t%lf\t%6s\t%lf\t%lf\t%lf\t\n", Sin[i].num, Sin[i].singerName,Sin[i].singName1,Sin[i].singScore1.P1,Sin[i].singScore1.P2,Sin[i].singName2,Sin[i].singScore2.P1,Sin[i].singScore2.P2,Sin[i].sum);i++;}fclose(fp);/*关闭文件*/printf("Successed!\n");//返回成功信息menu();}void Tianjia_a_record()/*添加函数*/{int i,j;int a;printf("请输入一个歌手的编号:");scanf("%d",&a);for(i=0;i<N;i++)if(a==Sin[i].num)/*两个整数进行比较*/{printf("不能进行添加操作");j++;break;}if(j==0)/*新添加的歌手编号与原歌手中没有相同的*/ {Sin[i].num=a;printf("歌手名:");scanf("%s",Sin[i].singerName);printf("歌曲1的名称:");scanf("%s",Sin[i].singName1);printf("歌曲1的大众评委打分:");scanf("%f",&Sin[i].singScore1.P1);printf("歌曲1的专业评委1打分:");scanf("%f",&Sin[i].singScore1.A[0]);printf("歌曲1的专业评委2打分:");scanf("%f",&Sin[i].singScore1.A[1]);printf("歌曲1的专业评委3打分:");scanf("%f",&Sin[i].singScore1.A[2]);printf("歌曲1的专业评委4打分:");scanf("%f",&Sin[i].singScore1.A[3]);printf("歌曲1的专业评委5打分:");scanf("%f",&Sin[i].singScore1.A[4]);printf("歌曲1的专业评委打分:"); scanf("%f",&Sin[i].singScore1.P2);printf("歌曲2的名称:");scanf("%s",Sin[i].singName2);printf("歌曲2的大众评委打分:"); scanf("%f",&Sin[i].singScore2.P1); printf("歌曲2的专业评委1打分:"); scanf("%f",&Sin[i].singScore2.A[0]); printf("歌曲2的专业评委2打分:"); scanf("%f",&Sin[i].singScore2.A[1]);printf("歌曲2的专业评委3打分:"); scanf("%f",&Sin[i].singScore2.A[2]); printf("歌曲2的专业评委4打分:"); scanf("%f",&Sin[i].singScore2.A[3]);printf("歌曲2的专业评委5打分:"); scanf("%f",&Sin[i].singScore2.A[4]); printf("歌曲2的专业评委打分:"); scanf("%f",&Sin[i].singScore2.P2);printf("该歌手的总成绩:");scanf("&f",&Sin[i].sum);save();N++;system("pause");}}void name_Delete() /*按照姓名删除歌手信息*/{int i,j=0;char a[20];printf("\n输入一个歌手的姓名");scanf("%s",a);for(i=0;i<N;i++)if(strcmp(Sin[i].singerName,a)==0){Sin[i].num=Sin[i+1].num;/*编号*/strcpy(Sin[i].singerName,Sin[i+1].singerName);/*歌手名*/strcpy(Sin[i].singName1,Sin[i+1].singName1);/*歌曲1名称*/strcpy(Sin[i].singName2,Sin[i+1].singName2);/*歌曲2名称*/Sin[i].singScore1=Sin[i+1].singScore1;/*歌曲1得分*/Sin[i].singScore2=Sin[i+1].singScore2;/*歌曲2得分*/Sin[i].sum=Sin[i+1].sum;/*总得分*/printf("该歌手信息删除成功");N--;//j++;}if(j==0)printf("系统中无该歌手信息");}void dakai()/*定义打开函数*/{FILE *fp;system("cls");if((fp=fopen("filename","rb"))==NULL){printf("文件不存在\n");return;}}void menu()/*定义菜单函数*/{printf(" 歌手成绩管理系统\n");printf("**********************Menu**********************\n");printf(" * 1.输入信息 2.显示信息*\n");printf(" * 3.结果排序 4.信息保存到文件中*\n");printf(" * 5.信息记录到文件中 6.添加信息*\n");printf(" * 7.删除信息8.退出程序*\n");printf("************************************************\n");printf("请选择所要进行的选项:");}void Quit()/*退出函数*/{printf("结束程序"); exit(0);}void menu_select() /*菜单选择*/{int a;int n=3;printf("输入:");scanf("%d",&a);switch(a){case 1:printf("\n");input();break;case 2:printf("\n");output();break;case 3:printf("\n");sort();break;case 4:printf("\n");save();break;case 5:printf("\n");WritetoText(n);break;case 6:printf("\n");Tianjia_a_record();break;case 7:printf("\n");name_Delete();break;case 8:printf("\n"); Quit(); break;}}void main(){struct Singer Sin[200];print();menu();menu_select();}。

C语言 歌星大奖赛

C语言  歌星大奖赛

#include <stdio.h>#include <malloc.h>#include <stdlib.h>#include <string.h>typedef struct singer{int identity;char name[8];char sex;float degree[10];float avgDegree;struct singer *next;}S;int main(){char choice, ch;S *headID = NULL; // identity chain head S *headDG = NULL; // degree chain headS *newSinger(S *head);void displayChain(S *head);S *sortByDegree(S *head);void displayJudgment(S *head);do{system("cls");printf("\n\n\t\t$$$$$$$$$$$$ 一个简单的评分系统$$$$$$$$$$$$\n\n (问题重述)在歌星大赛中有n个选手,有10个评委为参加比赛的选手打分,分数为1~10分。

选手最后得分为:去掉一个最高分和最低分后其余8个分数的平均值。

请编写一个程序实现。

同时对评委评分进行裁判,即在10个评委中找出最公平(即为最接近平均分)和最不公平(即与平均分的差距最大)的评委。

\n\n 说明:此程序有一定的错误输入提示,但在输入数据时请尽量按提示正确输入;建议输入的评分是由一个个位和一个小数位组成的数字,范围在区间[0, 10],eg:8.7,9.4,1.8等。

\n\n");printf("\n-------------------------------------------------------\n\n");printf("\t1 ...... 添加新选手的得分;\n");printf("\t2 ...... 按选手代码查看;\n");printf("\t3 ...... 按选手得分查看;\n");printf("\t4 ...... 查看对评委评分进行裁判的结果.\n");printf("\n请选择一种操作,输入相应编号:");choice = getchar();ch = getchar(); // get "enter" charswitch(choice){case '1':printf("\n\n添加新选手\n");headID = newSinger(headID);break;case '2':if(headID == NULL)printf("\n请先运行’1‘。

C语言课程设计报告—歌星大奖赛评分系统

C语言课程设计报告—歌星大奖赛评分系统

C语言课程实习报告课程名称:歌星大奖赛学院:信息工程学院专业:通信工程班级:学号:姓名:指导老师:第一部分:课程设计编号、名称、容名称:歌星大奖赛容:【要求】(1)在歌星大奖赛中,有十个评委为参赛的选手打分,分数为1~100分。

选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均植。

请编写一个程序实现。

(2)同时对评委评分进行裁判,即在10个评委中找出最公平(即评分最接近平均分)和最不公平(即与平均分的差距最大)的评委。

【提示】一、需求分析这个问题的第一个要求算法比较简单,但是要注意在程序中判断最大、最小值的变量是如何赋值的。

第二个要求为了考虑效率,要用到排序技术。

第二部分:程序总体设计思路由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。

在编写本程序的过程中,首先我借助购买的指导材料,了解了一些目标程序运行的次序与界面的操作方法,然后按照题目的具体要求进行思考和设计。

具体的设计思路如下:程序的要根据十个评委对歌手的打分情况,求出这个歌手的平均成绩和最公平及最不公平的裁判。

首先,我先考虑到程序的数据输入,可以用scanf函数来解决,并将输入的数据存放于数组中。

随后对存放在数组中的数据进行排序,这步为执行找出最不公平的裁判提高了效率,只需将排好序的数组的首尾分值与平均值进行比较即可。

将排好序的数组中间的八个数求平均值即为此歌手的成绩,可见排序法可大大的简化程序。

接下来是最后一个任务就是找最公平的裁判,此过程我使用拆半法,先将靠近中间的一个裁判假设为最公平的,再将他前面的裁判与之比较,找出前半部分的最公平的裁判,再将之与后半部分的进行比较,得出最终的最公平的裁判。

为了方便管理员更好的使用界面操作,我还设置了每输入完一组数据并得到结果后,或接着输入下组数据或按0跳出界面。

整个程序的设计思路到此结束。

第三部分:程序功能划分、图示及流程图【功能模块划分及其流程图】本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将程序划分为6个部分分别编写,程序主体功能将由这6个部分来完成。

C语言课设-唱歌比赛评分系统

C语言课设-唱歌比赛评分系统

沈阳航空航天大学课程设计任务书学院:专业:班级:学号:题目:唱歌比赛评委评分系统一、课程设计时间二、课程设计内容参加唱歌比赛3位选手的名称和出场顺序存放在文件file22.txt中;评委共有7个。

每当一个选手表演之后,7个评委都分别评分(0~10分),而选手的最终得分计算规则为:去掉7个评分的最高和最低分,取剩下5个评分的平均值。

程序最后打印出3位选手的成绩。

三、课程设计要求程序质量:✧贯彻结构化的程序设计思想。

✧用户界面友好,功能明确,操作方便。

✧用户界面中的菜单至少应包括“读取并显示选手名单”、“表演与评分”、“打印最后成绩”、“退出”4项。

✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。

课程设计说明书:✧课程结束后,上交课程设计说明书和源程序。

课程设计说明书的内容参见提供的模板。

四、指导教师和学生签字指导教师:________ 学生签名:________五、成绩六、教师评语目录一、需求分析 (1)二、设计分析 (2)三、主要界面截图 (4)四、技术要点 (9)五、个人总结 (14)六、参考文献 (15)七、源程序 (15)一、需求分析根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。

该系统是一个分数录入以及评定系统,其使用者被假定为某歌唱比赛的管理人员,系统应该具有安全、稳定、功能齐全的特点。

1. 安全性分析系统管理的数据涉及到参赛的所有选手,为防止他人恶意修改,所以在进入评分系统前有密码程序,只有掌握了正确的密码才能进入程序进行各项操作。

2. 稳定性分析指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。

3. 主要功能分析(1)密码程序:在程序尾端设置好密码,只有掌握密码的管理员才能进入程序进行成绩录入,修改等操作,避免信息被他人修改,造成比赛不公(2)菜单:有一个功能强大又清晰明了的菜单能极大程度方便管理员的操作(3)数据输入:在每个输入前都有详细分类和提示,简单明了,根据提示输入参赛选手号数,姓名,各个评委打分成绩(4)数据保存:对于输入的数据,或被修改的数据应该保存到某个磁盘文件中,实现永久存储。

C语言大赛现场评分系统

C语言大赛现场评分系统

宜春学院数学与计算机科学学院课程设计说明书课程名称:计算机实训课程代码:题目:大赛现场评分系统年级/专业/班: 14计科1班学生姓名:鄢剑涛学号: **************:***开题时间: 2014 年 12 月 28 日完成时间: 2014 年 12 月 29 日一、设计任务与目的以往各类大奖赛的报分与统分脱节,参赛选手的最后得分总要等到下一个选手赛完后才报,影响竞赛的正常节奏,也不能满足观众期待的心理。

因此,为大奖赛编写一个现场统分的程序是很有必要的。

本程序很好的解决了这个问题。

在各评委打分之后,就能及时通报评分结果。

并且,在统计学生成绩的同时,为了给评委一个约束,有利于竞赛的公平公正性,增加了给评委女打分和排序功能。

本程序的任务:1.大赛共有n个选手参赛,m(m>2)个评委一次为参赛选手评判打分,最高分为10分,最低为0分;2.统分规则,在每个选手所得的m个得分中,去掉一个最高分,再去掉一个最低分,取平均分为该选手的最后得分;3.根据n个选手的最后得分,从高到低排出名次表,以便获取获奖名单;4.根据各选手的最后得分与各评委给该选手所评分的差距,对每个评委的评分准确性给出一个定量的评价。

二、设计方案1.设置5个数组:sh[i]为第i个选手的编号,sf[i]为第i个选手的最后得分,ph[j]为第j个评委的编号,f[i][j]为第j个评委给第i个选手的评分,pf[j]为第j个评委的得分,作为评委水准的代表。

2.对n个参赛选手设置i循环(i从1变化到n);第i个选手上场,输入该选手的编号sh[i],在j循环(j从1变化到m)中依次输入第i个选手的m个得分f[i][j],每一个得分f[i][j]都累加到sf[i]中,同时比较:若f[i][j]>max,则max=f[i][j];若f[i][j]<min,则min=f[i][j]。

当第i个选手的m个得分输入完毕,去掉一个最高分max,去掉一个最低分min,第i个选手的最后的分数为sf[i] = (sf[i] - Max - Min ) / (m -2),n个选手的最后得分为sf[o],sf[1],…..,sf[n]全部计算完后,将其从高到低排序,输出参赛选手的名次表。

C语言 智能评分系统程序设计

C语言 智能评分系统程序设计

《建筑环境与设备工程专业》C程序设计课程设计姓名:xxx学号:00000专业:建筑环境与设备工程设计课题:智能化比赛评分系统时间:2010.6.22—2010.6.26指导老师:xxx本组人员:xxxxx目录一、设计目的和内容 (1)(1)设计背景与目的 (1)(2)课程设计内容 (4)(3)课程设计有四个阶段组成 (5)二、算法的基本思想 (5)(1)主程序的流程 (6)(2)各分程序模块之间的调用关系 (6)三、测试数据 (8)四、源程序及系统文件使用说明 (9)五、实习体会...............................................参考文献..............................................智能化比赛评分系统一.设计目的与内容(1) 设计背景与目的:北大社团创刊号上写道:“大学之大,并不仅仅在于它的物质条件,而在于它的高水准的学者和优秀的学生,以及他们所带来的独特的人文环境。

”是的,独特的人文环境的塑造必然离不开学生活动,学生活动作为校园文化的重要组成部分,丰富了同学们的校园生活的同时,也作为一个窗口,对外展示出同学们的特长,同时也给同学们提供了一个锻炼的平台,最终达到育人的最高思想。

在各高校举行的学生活动中比赛类的活动颇多,如各类的演讲比赛、校园歌手大赛、挑战主持人大赛、校园明星选拔大赛等等,繁复的成绩计算给主办方带来了极大地不变,而且手工单项计算还容易出错,我们组就实际情况出发,根据学习的需要所以编制了一个智能化比赛评分系统的程序,既可以在学习之后复习自己学习的成绩,也方便了以后学校举行的各类比赛类活动,实现了双赢的目的。

我们组通过对8位选手参加演讲比赛,6位评委打分,共100分(演讲内容50分、语言表达50分。

),评出一等奖1名,二等奖2名,三等奖2名的应用程序的设计过程,基本掌握简单C语言应用程序的编写与调试方法,掌握C语言的基本程序设计方法,并按要求编写实习报告。

竞技比赛打分系统C语言程序设计报告

竞技比赛打分系统C语言程序设计报告

C语言程序设计设计题目:竞赛比赛打分系统专业:……………………….班级:…………….姓名:……………学号:…………………..目录一总体设计(包含几大功能模块) (1)二详细设计(各功能模块的具体实现算法——流程图) (4)三调试分析(包含各模块的测试用例,及测试结果) (6)3.1源程序 (6)3.2调试与测试 (12)四总结 (15)一总体设计(包含几大功能模块)I.insert record to a fileN .search record by nameC. search record by codeL. list all the recordsS.sort the records by total二、详细设计(各功能模块的具体实现算法——流程图)2.1各函数的功能和实现I.insert record to a file:输入田径记录分数文件。

可用函数void input来实现此操作N .search record by name输入田径运动员的名字C. search record by code输入田径运动员号码可用void find()来实现L. list all the records分数列表S.sort the records by total计算总分数Q.quit退出可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。

流程图详见A4纸上手绘三调试分析(包含各模块的测试用例,及测试结果)3.1源程序#include <stdio.h>#define JUDEGNUM 3 /* 裁判数*/#define NAMELEN 20 /* 姓名最大字符数*/#define CODELEN 10 /* 号码最大字符数*/#define FNAMELEN 80 /* 文件名最大字符数*/#define BUFFSIZE 128 /* 缓冲区最大字符数*/char judgement[JUDEGNUM][NAMELEN+1] = {"judgementA","judgementB","judgementC"}; struct AthleteScore{char name[NAMELEN+1]; /* 姓名*/char code[CODELEN+1]; /* 学号*/int score[JUDEGNUM]; /* 各裁判给的成绩*/int total; /* 总成级*/};struct LinkNode{char name[NAMELEN+1]; /* 姓名*/char code[CODELEN+1]; /* 号码*/int score[JUDEGNUM]; /* 各裁判给的成绩*/int total; /* 总成级*/struct LinkNode *next;}*head; /* 链表首指针*/int total[JUDEGNUM]; /* 各裁判给的总成绩*/FILE *filepoint; /* 文件指针*/char filename[FNAMELEN];/* 文件名*//* 从指定文件读入一个记录*/int GetRecord(FILE *fpt,struct AthleteScore *sturecord){char buf[BUFFSIZE];int i;if(fscanf(fpt,"%s",buf)!=1)return 0; /* 文件结束*/strncpy(sturecord->name,buf,NAMELEN);fscanf(fpt,"%s",buf);strncpy(sturecord->code,buf,CODELEN);for(i=0;i<JUDEGNUM;i++)fscanf(fpt,"%d",&sturecord->score[i]);for(sturecord->total=0,i=0;i<JUDEGNUM;i++)sturecord->total+=sturecord->score[i];return 1;}/* 对指定文件写入一个记录*/void PutRecord(FILE *fpt,struct AthleteScore *sturecord){int i;fprintf(fpt,"%s\n",sturecord->name);fprintf(fpt,"%s\n",sturecord->code);for(i=0;i<JUDEGNUM;i++)fprintf(fpt,"%d\n",sturecord->score[i]);return ;}/* 显示运动员记录*/void ShowAthleteRecord(struct AthleteScore *rpt){int i;printf("\nName : %s\n",rpt->name);printf("Code : %s\n",rpt->code);printf("score :\n");for(i=0;i<JUDEGNUM;i++)printf(" %-15s : %4d\n",judgement[i],rpt->score[i]);printf("Total : %4d\n",rpt->total);}/* 列表显示运动员成绩*/void Listathleteinfo(char *fname){FILE *fp;struct AthleteScore s;clrscr();if((fp=fopen(fname,"r"))==NULL){printf("Can't open file %s.\n",fname);return ;}while(GetRecord(fp,&s)!=0){ShowAthleteRecord(&s);}fclose(fp);return;}/* 构造链表*/struct LinkNode *CreatLinklist(char *fname){FILE *fp;struct AthleteScore s;struct LinkNode *p,*u,*v,*h;int i;if((fp=fopen(fname,"r"))==NULL){printf("Can't open file %s.\n",fname);return NULL;}h=NULL;p=(struct LinkNode *)malloc(sizeof(struct LinkNode));while(GetRecord(fp,(struct AthleteScore *)p)!=0){v=h;while(v&&p->total<=v->total){u=v;v=v->next;}if(v==h)h=p;elseu->next=p;p->next=v;p=(struct LinkNode *)malloc(sizeof(struct LinkNode));}free(p);fclose(fp);return h;}/* 顺序显示链表各表元*/void OutputLinklist(struct LinkNode *h){clrscr();while(h!=NULL){ShowAthleteRecord((struct AthleteScore *)h);printf("\n");while(getchar()!='\n');h=h->next;}return;}/* 按运动员姓名查找记录*/int SearchbyName(char *fname, char *key){FILE *fp;int c;struct AthleteScore s;clrscr();if((fp=fopen(fname,"r"))==NULL){printf("Can't open file %s.\n",fname);return 0;}c=0;while(GetRecord(fp,&s)!=0){if(strcmp(,key)==0){ShowAthleteRecord(&s);c++;}}fclose(fp);if(c==0)printf("The athlete %s is not in the file %s.\n",key,fname);return 1;}/* 按运动员号码查找记录*/int SearchbyCode(char *fname, char *key){FILE *fp;int c;struct AthleteScore s;clrscr();if((fp=fopen(fname,"r"))==NULL){printf("Can't open file %s.\n",fname);return 0;}c=0;while(GetRecord(fp,&s)!=0){if(strcmp(s.code,key)==0){ShowAthleteRecord(&s);c++;break;}}fclose(fp);if(c==0)printf("The athlete %s is not in the file %s.\n",key,fname);return 1;}void InsertRecord(){FILE *fp;char c,i,j,n;struct AthleteScore s;clrscr();printf("Please input the athletes score record file's name: \n");scanf("%s",filename);if((fp=fopen(filename,"r"))==NULL){printf("The file %s doesn't exit.\ndo you want to creat it? (Y/N) ",filename);getchar();c=getchar();if(c=='Y'||c=='y'){fp=fopen(filename,"w");printf("Please input the record number : ");scanf("%d",&n);for(i=0;i<n;i++){printf("Input the athlete's name: ");scanf("%s",&);printf("Input the athlete's code: ");scanf("%s",&s.code);for(j=0;j<JUDEGNUM;j++){printf("Input the %s mark: ",judgement[j]);scanf("%d",&s.score[j]);}PutRecord(fp,&s);}fclose(fp);}}fclose(fp);return;}int main(){int i,j,n;char c;char buf[BUFFSIZE];while(1){clrscr();printf("\n-------------- Input a command -----------\n");printf("| i : insert record to a file. |\n");printf("| n : search record by name. |\n");printf("| c : search record by code. |\n");printf("| l : list all the records. |\n");printf("| s : sort the records by total. |\n");printf("| q : quit. |\n");printf("------------------------------------------\n");printf("Please input a command:\n");scanf("%c",&c); /* 输入选择命令*/switch(c){case 'i':InsertRecord();getch();break;case 'n': /* 按运动员的姓名寻找记录*/printf("Please input the athlete's name:\n");scanf("%s",buf);SearchbyName(filename,buf);getch();break;case 'c': /* 按运动员的号码寻找记录*/printf("Please input the athlete's code:\n");scanf("%s",buf);SearchbyCode(filename,buf);getch();break;case 'l': /* 列出所有运动员记录*/Listathleteinfo(filename);getch();break;case 's': /* 按总分从高到低排列显示*/if((head=CreatLinklist(filename))!=NULL)OutputLinklist(head);getch();break;case 'q':return 1;default:break;}}return 1;}3.2调试与测试主要程序运行结果:运行开始I.insert record to a fileN .search record by nameC. search record by codeL. list all the recordsS.sort the records by total五.设计总结经过一周的课程设计,我学到了很多东西:①巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。

C语言链表实现歌手评分系统

C语言链表实现歌手评分系统

C语⾔链表实现歌⼿评分系统本⽂实例为⼤家分享了C语⾔链表实现歌⼿评分系统的具体代码,供⼤家参考,具体内容如下此程序可以添加⽂件操作⽤于保存歌⼿得分等信息,此程序实现了链表的增删查和链表冒泡排序交换节点功能#include <stdio.h>#include <stdlib.h>#include <string.h>//创建结构体及其成员typedef struct Node{int num;//编号char name[20];//姓名float grade[10];//评委评分float sum;//总分float ave;//平均分struct Node *next;//指针域}S;//结构体定义为S//各函数定义void menu(); //菜单函数S *create();//创建链表函数void print(S *);//输出链表函数void insert(S *);//插⼊节点函数void del(S *);//删除节点函数void search(S *);//查找节点函数void sort(S *);//节点排序函数void cal(S *);//计算选⼿数据函数//主函数int main(){S *head;int n,a=1;//n⽤来控制选择操作类型,a控制循环,以-1终⽌while(a>0){menu();//显⽰菜单printf("you want to do:");scanf("%d",&n);//选择操作switch(n)//各操作数字对应菜单数字,通过n确定操作类型{case 1://创建head=create();print(head);break;case 2://计算cal(head);print(head);break;case 3://插⼊insert(head);print(head);break;case 4://删除del(head);print(head);break;case 5://查找search(head);break;case 6://排序sort(head);print(head);break;case 7://保存save(head);break;case 8:read();//读取print(head);break;default:a=-1;//跳出循环条件break;return 0;}//菜单模块直接显⽰void menu(){printf("\n\n");printf("\t\t|----------SCORE-----------|\n");printf("\t\t|\t1.create |\n");printf("\t\t|\t2.cal |\n");printf("\t\t|\t3.insert |\n");printf("\t\t|\t4.del |\n");printf("\t\t|\t5.search |\n");printf("\t\t|\t6.sort |\n");printf("\t\t|\t9.exit program |\n");printf("\t\t|--------------------------|\n");printf("\t\t\tchoice(1-9):\n");}//创建链表模块S *create(){S *head,*p,*q;//定义指针int i;head=(S *)malloc(sizeof(S));//头节点开辟空间head->ave=NULL;//置空头节点的ave成员head->next=NULL;//置空头节点的指针域q=head;//q指针记录头节点的地址p=head->next;//p指针记录头节点的指针域的地址printf("please input singer's num and name\n");int num;scanf("%d",&num);while(num!=0)//输⼊选⼿编号输⼊为零停⽌循环{p=(S *)malloc(sizeof(S));//p指针开辟空间//输⼊各成员p->num=num;scanf("%s",p->name);printf("please input singer's score:\n");for(i=0;i<10;i++){scanf("%f",&p->grade[i]);}p->sum=0;p->ave=0;p->next=NULL;//置空p节点的指针域q->next=p;//p,q节点连接q=p;//q指针后移scanf("%d",&num);}return head;//返回链表的起始地址}//计算模块void cal(S *head){S *p;//定义p指针int i;float max,min;//记录最⾼分最低分p=head->next;//p记录头节点的指针域地址while(p)//p不为空时进⾏计算{p->sum=0;//每次计算初始化summin=max=p->grade[0];//每次计算初始化min,maxfor(i=0;i<10;i++){p->sum+=p->grade[i];//计算总分if(p->grade[i]>max)max=p->grade[i];//记录最⾼分if(p->grade[i]<min)min=p->grade[i];//记录最低分}p->ave=(p->sum-max-min)/8;//计算平均(去掉最⾼分最低分) p=p->next;//p指针后移//插⼊节点模块(可多个插⼊)void insert(S *head){int i,num,flag=1;//flag实现判断指针是否到达最后⼀个节点float min,max;//min,max记录最⾼分最低分S *p,*q,*r; //定义指针便于插⼊操作printf("please input a singer's messages:\n");printf("please input singer's num:\n");scanf("%d",&num);while(num!=0)//输⼊编号不为零时循环,以零终⽌,可实现多个插⼊{r=(S *)malloc(sizeof(S));//为r开辟空间r->next=NULL;//置空r的指针域//输⼊相关数据,并计算相关数据r->num=num;printf("please input singer's name:\n");scanf("%s",r->name);printf("please input singer's score:\n");r->sum=0;for(i=0;i<10;i++){scanf("%f",&r->grade[i]);r->sum+=r->grade[i];}min=max=r->grade[0];for(i=0;i<10;i++){if(r->grade[i]>max)max=r->grade[i];if(r->grade[i]<min)min=r->grade[i];}r->ave=(r->sum-max-min)/8;q=head;//q指针记录头节点的地址p=head->next;//p指针记录头节点的指针域的地址while(q->next!=NULL&&p->ave<r->ave)//循环条件:当q->next不为空,以及p->ave<r->ave实现插⼊后⽆需排序 {p=p->next;//p指针后移q=q->next;//q指针后移if(q->next==NULL)//这个判断防⽌q->next为空时,在执⾏循环是出现野指针使程序出错{p=NULL;//防⽌出现野指针pq->next=r;//连接节点r->next=NULL;//置空r指针域flag=0;//到达最后⼀个节点更改flagbreak;}}if(flag)//判断是否到达最后⼀个节点,为真执⾏该操作{r->next=p;q->next=r;//实现将r节点插⼊链表}printf("please input singer's num:\n");scanf("%d",&num);}}//删除节点模块void del(S *head){S *p,*q;//定义指针int b;//⽤于输⼊编号查找删除p=head;//p记录头节点的地址q=head->next;//q记录头节点的指针域的地址printf("input singer's num you want to delete:");//输⼊编号scanf("%d",&b);while(q!=NULL)//q不为空时执⾏循环{if(q->num==b)//判断是否找到输⼊的编号//为真时p->next=q->next;//断开q节点free(q);//释放q节点neicunq=NULL; //置空q指针防⽌出现野指针}else{//判断为假时p=p->next;//p指针后移q=q->next;//q指针后移}}if(p==NULL)//当查找到最后⼀个节点还未查到要删除的编号时,输出ERROR INPUT printf("ERROR INPUT\n");}//查找节点模块void search(S *head){S *p;//定义指针int b;//定义b⽤于输⼊查找编号printf("input the singer's num you are searching:");//输⼊查找编号scanf("%d",&b);p=head->next;while(p!=NULL){if(p->num==b)//判断是否找到选⼿编号{//为真时,输出信息printf("%d %s %.2f %.2f\n",p->num,p->name,p->sum,p->ave);break;}else//为假时p=p->next;//指针后移}if(p==NULL)//查找到最后⼀个节点还未查到要的编号时,输出ERROR INPUTprintf("ERROR INPUT\n");}//排序节点模块//采⽤冒泡排序,交换节点void sort(S *head){S *p,*pre,*temp,*tail;tail = NULL;// 算法的核⼼部分,节点交换while( head->next != tail ){pre= head;p = head->next;while( p->next != tail ){if( p->ave > p->next->ave ){temp = p->next;pre->next = p->next;p->next = p->next->next;pre->next->next = p;p = temp;}// 节点后移p = p->next;pre= pre->next;}tail = p;}}//输出链表模块void print(S *head){int i;S *p=head->next;while(p)//当p不为空的时候执⾏{for(i=0;i<10;i++)printf("%.2f ",p->grade[i]);printf("\n");p=p->next;//指针后移}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

c++选手打分程序

c++选手打分程序
score[i+1]=t;
}
}
}
}
float people::getLastScore()
{
float s=(score[1]+score[2]+score[3])/3;
return s;
}
void people::set(int Nnumber,char* Nname,float Nscore[],char* Nneirong)
for(j=0;j<4;j++)
{
for(i=0;i<4-j;i++)
{
if(p[i].LastScore!=p[i+1].LastScore)
{
if(p[i].LastScore<p[i+1].LastScore)
{
people pt=p[i];
p[i]=p[i+1];
p[i+1]=pt;
}
}
else
假设事先已经建立了text型的数据文件f1.txt,其中依次记录着n个选手的编号(一个正整数)、姓名(一个字符串)以及m个评委给出的得分。
请编制程序,依次从数据文件f1.txt中读入n个选手的有关信息,而后按上述规定方法计算出每一个选手的最后得分,而且往屏幕上以及另一个text型文件f2.txt中同时输出如下形式的结果信息。
下为改程序的代码:
#include<iostream>
#include<fstream>
#include<conio.h>
#include<windows.h>
#include<ctime>

C#评委评分系统课程设计

C#评委评分系统课程设计

目录1 摘要 21.1设计题目 21.2设计内容 21.3开发工具 21.4应用平台 22 详细设计 22.1程序结构 22.2主要功能 32.3函数实现 32.4开发日志 33 程序调试及运行 33.1程序运行结果 33.2程序使用说明 43.3程序开发总结 44 附件(源程序) 51 摘要1.1 设计题目评委评分程序1.2 设计内容本程序用来给选手评分并进行排名,依次输入各位裁判对各位选手的评分后,程序会按照按照平均分进行排名。

1.3 开发工具Visual studio20101.4 应用平台Windows 2000/XP/Vista /7 32位/64位2 详细设计2.1 程序结构程序设计了4个类,有4个不同的窗口,第一个窗口是主窗口,要求输入选手的人数和裁判的人数,第二个窗口依次弹出要求输入每个选手的名字,第三个窗口依次弹出要求输入裁判对每个选手的评分,等最后一位裁判对最后一位选手评分完之后,第四个窗口显示排名结果。

每个窗口都有button,当点击button后实例化另一个窗口对象,然后调用show方法显示另一个窗口。

2.2 主要功能程序功能是实现对选手的排序,在窗口中输入选手的评分后,程序统计评分结果并放在数组中,当这位选手评分完成之后,计算他的分数总和,然后除以裁判人数,计算出的平均分存放在average数组中,下标与其名字对应。

程序中用到了冒泡排序算法,对选手的平均分按照从大到小进行排列,并且排序过程中保持名字与平均分的一致性。

最后以字符串的形式把结果显示在窗口中。

2.3 程序关键类的实现程序设计了4个类,有4个不同的窗口,第一个窗口是主窗口,要求输入选手的人数和裁判的人数,第二个窗口依次弹出要求输入每个选手的名字,第三个窗口依次弹出要求输入裁判对每个选手的评分,等最后一位裁判对最后一位选手评分完之后,第四个窗口显示排名结果。

每个窗口都有button,当点击button后实例化另一个窗口对象,然后调用show方法显示另一个窗口。

模拟裁判给比赛选手打分参考程序2

模拟裁判给比赛选手打分参考程序2
void print(result *s,int n);//输出所有运动员成绩
void sort(result *s,int n);//排序
void main(void)
{ int n,m;
cout<<"输入参赛选手人数: ";
cin>>n;
cout<<"输入裁判人数: ";
cin>>m;
result temp(m);//定义一个临时对象,确定裁判人数,未定义该对象默认为10人
{ int i,m;
m=s[0].read_size();//获取裁判人数
cout <<setw(10)<<"编号"<<setw(10)<<"姓名"<<setw(10)<<"成绩\n";
for(i=0;i<n;i++)
{ cout<<setw(10)<<s[i].read_num();
cout<<setw(10)<<s[i].read_name();
s[j]=s[j-1];
s[k]=temp;
}
}
}
/*
以下为模拟裁判经给比赛选手打分参考程序2(实验二中的程序设计实验),供同学们参考,请各位同学认真阅读,并与参考程序1进行对比分析,然后自己重新编写并调试通过(分步调试)后上交。
类的定义放在头文件“hhresult.h”中,处理程序放在“exp207.cpp”中,
*/
//以下为类的定义:
#include<iostream>

C语言运动会计分程序编写

C语言运动会计分程序编写

任务:参加运动会有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、局部非法数据。

进行程序测试,以保证程序的稳定。

测试数据及测试结果请在上交的资料中写明;#include<stdio.h>#include<string>#include<iomanip>#include<fstream>using namespace std;int n,m,w;struct pro //表示项目的结构体{string name; //项目名称int snum[6]; //前5名学校的编号}p[21];struct school //表示学校的结构体{int num;string name; //学校名称int score; //学校总分int male; //男子总分int female; //女子总分}sch[21];int integral1[5]={7,5,3,2,1};//前五名得分int integral2[3]={5,3,2};//前三名得分void input(){int i,j,y,x;printf("输入学校数目:");y=0;scanf("%d",&n);if(n>=1&&n<=20)y=1;if(y)break;elseprintf("输入数据有误,请重新输入:");for(i=1;i<=n;i++){printf("输入第%d个学校的名称:",i);scanf("%s",&sch[i].name);sch[i].score=0;sch[i].female=0;sch[i].male=0;sch[i].num=i;}printf("输入男子项目数和女子项目数:");y=0;scanf("%d%d",&m,&w);if(m<=20&&m>=1&&w<=20&&w>=1)y=1;if(y)break;else printf("输入数据有误,请重新输入:");}for(i=1;i<=m+w;i++){printf("输入第%d个项目的名称:\n",i);scanf("%s",& p[i].name);printf("输入第%d个项目的前5名的学校编号:\n",i); for(j=1;j<=5;j++){y=0;while(1){scanf("%d",&x);if(x>=1&&x<=20)y=1;if(y)break;else printf("输入数据有误,请重新输入:");}p[i].snum[j]=x;sch[x].score+=integral[j-1];if(i<=m)sch[x].male+=integral[j-1];else sch[x].female+=integral[j-1];}}void print(int i){printf("%d%d%s%d%d%d%d%d%d",sch[i].num,setw(10),sch[i].name,setw(8),sch[i].score,setw( 9),sch[i].male,setw(10),sch[i].female);}void bianhao() //按编号排序{int i,j;school t;for(i=1;i<n;i++){for(j=i;j<=n;j++)if(sch[i].num>sch[j].num){t=sch[i];sch[i]=sch[j];sch[j]=t;}}printf("\n按编号排列:\n");printf("编号学校名称总分男子总分女子总分\n");for(i=1;i<=n;i++)print(i);}void zongfen() //按学校总分排序{int i,j;school t;for(i=1;i<n;i++){for(j=i;j<=n;j++)if(sch[i].score<sch[j].score){t=sch[i];sch[i]=sch[j];sch[j]=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++){fout<<sch[i].num<<setw(13)<<sch[i].name<<setw(8)<<sch[i].score<<setw(9)<<sch[i].male<<setw(10)<<sch[i].female<<endl; }fout.close();void malezf() //按学校男总分排序{int i,j;school t;for(i=1;i<n;i++){for(j=i;j<=n;j++)if(sch[i].male<sch[j].male){t=sch[i];sch[i]=sch[j];sch[j]=t;}}printf("\n按学校男子总分排列:\n");printf("编号学校名称总分男子总分女子总分\n"); for(i=1;i<=n;i++)print(i);}void femalezf() //按学校女总分排序{int i,j;school t;for(i=1;i<n;i++){for(j=i;j<=n;j++)if(sch[i].female<sch[j].female){t=sch[i];sch[i]=sch[j];sch[j]=t;}}printf("\n按学校女子总分排列:\n");printf("编号学校名称总分男子总分女子总分\n"); for(i=1;i<=n;i++)print(i);printf("\n");}void cxsch() //查询学校信息{int i,y,s;printf("输入需要查询的学校编号:");y=0;while(1){scanf("%d",&s);if(s>=1&&s<=n)y=1;if(y)break;else printf("输入数据有误,请重新输入:");}printf("该学校相关信息:\n");printf("编号学校名称总分男子总分女子总分\n");for(i=1;i<=n;i++){if(sch[i].num==s){print(i);break;}}printf("\n");}void cxxm() //查询项目信息{int i,y,s;printf("输入需要查询的项目编号:");y=0;while(1){scanf("%d",&s);if(s>=1&&s<=n)y=1;if(y)break;else printf("输入数据有误,请重新输入:");}printf("%s前5名学校编号及名称为\n",p[s].name);printf("名次编号学校名称\n");for(i=1;i<=5;i++)printf(" %d %d%d%s\n",i,p[s].snum[i],setw(12),sch[ p[s].snum[i] ].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.结束\n\n");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<stdio.h>#include<string>#include<iomanip>#include<fstream>using namespace std;int n; //n个学校int m; //m个男子项目int w; //w个女子项目struct pro //表示项目的结构体{string name; //项目名称int snum[6]; //前5名学校的编号}p[21];struct school //表示学校的结构体{int num;string name; //学校名称int score; //学校总分int male; //男子总分int female; //女子总分}sch[21];int integral[5]={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=1;if(y)break;else printf("输入数据有误,请重新输入:");}for(i=1;i<=n;i++){printf("输入第%d个学校的名称:",i);scanf("%s",&sch[i].name);sch[i].score=0;sch[i].female=0;sch[i].male=0;sch[i].num=i;}printf("输入男子项目数和女子项目数:");y=0;while(1){scanf("%d%d",&m,&w);if(m<=20&&m>=1&&w<=20&&w>=1)y=1;if(y)break;else printf("输入数据有误,请重新输入:");}for(i=1;i<=m+w;i++){printf("输入第%d个项目的名称:\n",i);scanf("%s",& p[i].name);printf("输入第%d个项目的前5名的学校编号:\n",i); for(j=1;j<=5;j++){y=0;while(1){scanf("%d",&x);if(x>=1&&x<=20)y=1;if(y)break;else printf("输入数据有误,请重新输入:");}p[i].snum[j]=x;sch[x].score+=integral[j-1];if(i<=m)sch[x].male+=integral[j-1];else sch[x].female+=integral[j-1];}}}void print(int i){printf("%d%d%s%d%d%d%d%d%d",sch[i].num,setw(10),sch[i].name,setw(8),sch[i].score,setw( 9),sch[i].male,setw(10),sch[i].female);}void bianhao() //按编号排序{int i,j;school t;for(i=1;i<n;i++){for(j=i;j<=n;j++)if(sch[i].num>sch[j].num){t=sch[i];sch[i]=sch[j];sch[j]=t;}}printf("\n按编号排列:\n");printf("编号学校名称总分男子总分女子总分\n");for(i=1;i<=n;i++)print(i);}void zongfen() //按学校总分排序{int i,j;school t;for(i=1;i<n;i++){for(j=i;j<=n;j++)if(sch[i].score<sch[j].score){t=sch[i];sch[i]=sch[j];sch[j]=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++){fout<<sch[i].num<<setw(13)<<sch[i].name<<setw(8)<<sch[i].score<<setw(9) <<sch[i].male<<setw(10)<<sch[i].female<<endl; }fout.close();}void malezf() //按学校男总分排序{int i,j;school t;for(i=1;i<n;i++){for(j=i;j<=n;j++)if(sch[i].male<sch[j].male){t=sch[i];sch[i]=sch[j];sch[j]=t;}}printf("\n按学校男子总分排列:\n");printf("编号学校名称总分男子总分女子总分\n");for(i=1;i<=n;i++)print(i);}void femalezf() //按学校女总分排序{int i,j;school t;for(i=1;i<n;i++){for(j=i;j<=n;j++)if(sch[i].female<sch[j].female){t=sch[i];sch[i]=sch[j];sch[j]=t;}}printf("\n按学校女子总分排列:\n");printf("编号学校名称总分男子总分女子总分\n");for(i=1;i<=n;i++)print(i);printf("\n");}void cxsch() //查询学校信息{int i,y,s;printf("输入需要查询的学校编号:");y=0;while(1){scanf("%d",&s);if(s>=1&&s<=n)y=1;if(y)break;else printf("输入数据有误,请重新输入:");}printf("该学校相关信息:\n");printf("编号学校名称总分男子总分女子总分\n");for(i=1;i<=n;i++){if(sch[i].num==s){print(i);break;}}printf("\n");}void cxxm() //查询项目信息{int i,y,s;printf("输入需要查询的项目编号:");y=0;while(1){scanf("%d",&s);if(s>=1&&s<=n)y=1;if(y)break;else printf("输入数据有误,请重新输入:");}printf("%s前5名学校编号及名称为\n",p[s].name);printf("名次编号学校名称\n");for(i=1;i<=5;i++)printf(" %d %d%d%s\n",i,p[s].snum[i],setw(12),sch[ p[s].snum[i] ].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.结束\n\n");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;}。

C语言基础应用处理学生打分

C语言基础应用处理学生打分

C语⾔基础应⽤处理学⽣打分计算时间最少硬币问题详细过程第⼀题:最少硬币问题(简单版)假设有三种⾯值的硬币,分别为10、5、1。

接收⼀个整数作为⾦额数,计算要达到该⾦额数,每个⾯值的硬币最少需要多少枚。

输出结果演⽰:参考答案:#include <stdio.h>typedef struct StructrueMoneyBox {int n10;int n5;int n1;} MoneyBox;int main(void) {MoneyBox change = {0, 0, 0};int face_value[4] = {10, 5, 1};int money = 0;int i = 0;printf("请输⼊⾦额: ");scanf("%d", &money);do {if (money < face_value[i]) {i++;}switch (i) {case 0:change.n10 = money / face_value[i];break;case 1:change.n5 = money / face_value[i];break;case 2:change.n1 = money / face_value[i];break;}money = money % face_value[i];} while (money > 0);printf("10: %d\n", change.n10);printf("5: %d\n", change.n5);printf("1: %d\n", change.n1);return 0;}运⾏结果:第⼆题:计算已经过去了多久编写⼀个秒表程序来计算已经过去了多长时间。

利⽤下列结构体实现:并要求使⽤下⾯两个变量来解决问题:当程序运⾏时,取当前时间并保存到 previtimePtr 变量中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
cout<<number<<"\t\t"<<name<<"\t\t"<<neirong<<"\t\t";
for(int i=0;i<5;i++)
{
cout<<score[i]<<" ";
}
cout<<endl;
}
void people::show2()
{
cout<<number<<"\t\t"<<name<<"\t\t "<<gao<<"\t\t"<<di<<"\t\t"<<jilei<<" \t\t"<<LastScore;
----------------------------------------------------------
1 zhangjin 9.7 7.9 44.9 8.98
2 lintao 9.3 8.2 43.9 8.78
3 guojian 8.9 8.4 42.9 8.58
4 maling 8.9 7.9 42.2 8.44
people pt=p[i];
p[i]=p[i+1];
p[i+1]=pt;
}
}
}
}
}
ofstream f6("f3.txt");
for(i=0;i<5;i++)
{
f6.write((char*)(&p[i]),sizeof(p[i]));
}
f6.close();
ifstream f7("f3.txt");
下为改程序的代码:
#include<iostream>
#include<fstream>
#include<conio.h>
#include<windows.h>
#include<ctime>
using namespace std;
class people
{
private:
int number;
char* name;
{
if(p[i].youxiao!=p[i+1].youxiao)
{
if(p[i].youxiao<p[i+1].youxiao)
{
people pt=p[i];
p[i]=p[i+1];
p[i+1]=pt;
}
}
else
{
srand(time(NULL));
int x=rand();
if(x==1)
{
}
f2.close();
cout<<"按任意键开始统计";
getch();
system("cls");
cout<<"编号\t\t姓名\t\t最高分\t\t最低分\t\t累积得分\t最后得分"<<endl;
cout<<"--------------------------------------------------------------------------------------"<<endl;
{
number=Nnumber;
name=new char[];
strcpy(name,Nname);
for(int i=0;i<5;i++)
{
score[i]=Nscore[i];
}
neirong=new char[];
strcpy(neirong,Nneirong);
}
void people::show1()
for(i=0;i<5;i++)
{
f7.read((char*)(&p[i]),sizeof(p[i]));
p[i].show2();
cout<<endl;
cout<<"-------------------------------------------------------------------------------------------------"<<endl;
5 liuyifan 9.5 9.1 9.8 9.2 9.0 9.5 8.9
那么,程序执行后,屏幕显示结果以及磁盘文件f2.txt中的结果均应该为:
----------------------------------------------------------
参赛号 姓 名 最高分 最低分 累积分 最后得分
for(i=0;i<5;i++)
{
p[i].pai();
p[i].gao=p[i].getgao();
p[i].di=p[i].getdi();
p[i].LastScore=p[i].getLastScore();
p[i].jilei=p[i].getjilei();
p[i].youxiao=p[i].getyouxiao();
getch();
system("cls");
cout<<"编号\t\t姓名\t\t最高分\t\t最低分\t\t累积得分\t最后得分"<<endl;
cout<<"-------------------------------------------------------------------------------------------------"<<endl;
假设参赛选手人数n=5,评委人数m=7,磁盘文件f1.txt中的初始数据为:
1 zhangjin 8.8 9.3 7.9 8.7 8.9 9.7 9.2
2 lintao 8.9 8.2 8.6 8.8 8.5 9.1 9.3
3 guojian 8.9 8.4 8.7 8.6 8.6 8.4 8.6
4 maling 7.9 8.3 8.5 8.6 8.5 8.9 8.3
float score[5];
char* neirong;
public:
void pai();
float gao;
float di;
float jilei;
float LastScore;
float youxiao;
float getLastScore();
float getyouxiao();
void set(int Nnumber,char* Nname,float Nscore[],char* Nneirong);
for(j=0;j<4;j++)
{
for(i=0;i<4-j;i++)
{
if(p[i].LastScore!=p[i+1].LastScore)
{
if(p[i].LastScore<p[i+1].LastScore)
{
people pt=p[i];
p[i]=p[i+1];
p[i+1]=pt;
}
}
else
}
ofstream f4("f2.txt");
for(i=0;i<5;i++)
{
f4.write((char*)(&p[i]),sizeof(p[i]));
}
f4.close();
ifstream f5("f2.txt");
for(i=0;i<5;i++)
{
f5.read((char*)(&p[i]),sizeof(p[i]));
void show1();
void show2();
void show3()
{
for(int i=0;i<5;i++)
{
cout<<score[i]<<" ";
}
}
float getgao();
float getdi();
float getjilei();
};
float people::getyouxiao()
score[i+1]=t;
}
}
}
}
float people::getLastScore()
{
float s=(score[1]+score[2]+score[3])/3;
return s;
}
void people::set(int Nnumber,char* Nname,float Nscore[],char* Nneirong)
{
float s=score[4];
return s;
}
void people::pai()
{
for(int j=0;j<4;j++)
{
for(int i=0;i<4-j;i++)
{
if(score[i]<score[i+1])
相关文档
最新文档