/*
程序名称:歌手评分系统
作者: 201623053
功能: 本程序通过输入歌手和评委的相关信息,经过去掉最高分最低分,求平均分后排序,输出歌手的排名列表
时间: 2016.12.25
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 100
void fun(void);
void fun1(void);
void ins(void);
int n;
void main(void) //欢迎界面&主菜单
{
system("color 0A");
printf("\n\n\n\n");
printf("\t ---------------------------------------------- \n");
printf("\t |欢迎使用歌手评分系统o(* ̄▽ ̄*)o,客官里面请~| \n");
printf("\t ---------------------------------------------- \n");
printf("\t | \t 1. 就决定是你了 | \n");
printf("\t | | \n");
printf("\t | \t 2. 还不知道怎么用呢 | \n");
printf("\t | | \n");
printf("\t | \t 3. 残忍拒绝 | \n");
printf("\t | | \n");
printf("\t ---------------------------------------------- \n");
printf("\t评分菌:客官请选择么么哒:[ ]\b\b");
scanf("%d",&n);
switch(n)
{
case 1: fun(); break;
case 2: ins(); break;
case 3: exit(0);
}
}
void ins(void) //使用说明函数ins();
{
printf("\n\n\n\t这些都是评分菌的魔法啦:\n\n");
printf("\t1、最多录入100名歌手名字和10名评委蜀黍的打分\n");
printf("\t2、采用10分制,评委蜀黍的打分保留两位小数呦\n");
printf("\t3、擦掉一个最高分和抹掉一个最低分,给出每名歌手的平(zui)均(zhong)得分\n");
printf("\t4、生成分数统计表格\n\n\t以上です\n");
fun1(); //返回主菜单
}
void fun(void) //主要功能函数fun();
{
int i,j;
int pw,gs;
char a[N][N];
char t[N];
float s[N][N];
float sum[N]={0};
float temp=0;
float av[N]={0};
float max[N]={0};
float min[N]={0};
printf("\n\n\n评分菌: 请问有多少歌手参加本次比赛呢?\n"); //录入歌手和评委人数,对错误录入给出提示并重新录入
scanf("%d",&gs);
if(gs<1||gs>N)
{
printf("客官输入的歌手人数不符合要求哦!请重新输入~\n\n");
do
{
printf("评分菌: 哼!再问一遍,请问有多少歌手参加本次比赛呢?\n: ");
scanf("%d",&gs);
}while(gs<1||gs>N);
}
printf("\n评分菌: 那么有多少评委蜀黍来打分呢?\n");
scanf("%d",&pw);
if(pw<1||pw>10)
{
printf("客官输入的评委蜀黍人数不符合要求哦!请重新输入~\n\n");
do
{
printf("评分菌: 哼!再问一遍,那么有多少评委来打分呢?\n");
scanf("%d",&pw);
}while(pw<1||pw>10);
}
printf("\n**********************************************************************\n");
for(i=0;i<gs;i++) //录入评委对歌手的打分
{
printf("\n评分菌: 嗯!现在输入第%d个歌手的名字:\n",i+1);
scanf("%s", a[i]);
for(j=0;j<pw;j++)
{
printf("\n评分菌: 输入第%d个评委蜀黍的打分:\n",j+1);
scanf("%f",&s[i][j]);
}
}
printf("\n**********************************************************************\n评分菌: ");
for(i=0;i<gs;i++) //去掉一个最高分,去掉一个最低分
{
max[i]=min[i]=s[i][0];
for(j=0;j<pw;j++)
{
if(s[i][j]>max[i])
max[i]=s[i][j];
if(s[i][j]<min[i])
min[i]=s[i][j];
}
printf("\n\n\t%s童鞋擦掉一个最高分%.2f,抹掉一个最低分%.2f",a[i],max[i],min[i]);
}
printf("\n\n**********************************************************************\n");
for(i=0;i<gs;i++) //计算平均得分
{
{
for(j=0;j<pw;j++)
av[i]+=s[i][j];
}
av[i]=(av[i]-max[i]-min[i])/(pw-2);
}
printf("\n\n没排序是这样的:\n"); //输出无序的列表
printf("\n\n\t名字\t得分\n");
for(i=0;i<gs;i++)
{
printf("\t%s",a[i]);
printf("\t%.2f\n",av[i]);
}
printf("\n**********************************************************************\n");
for(j=0;j<gs;j++) //对平均得分排序
{
for(i=gs-1;i>j;i--)
if(av[i]>av[i-1])
{
temp=av[i];
av[i]=av[i-1];
av[i-1]=temp;
}
strcpy(t,a[i]);
strcpy(a[i],a[i-1]);
strcpy(a[i-1],t);
}
printf("\n\n排完序是这样的:\n\n"); //输出排序后的列表
printf("\t名次\t名字\t得分\n");
for(i=0;i<gs;i++)
{
printf("\t%d",i+1);
printf("\t%s",a[i]);
printf("\t%.2f\n",av[i]);
}
fun1(); //返回主菜单
}
void fun1(void) //返回主菜单函数fun1();
{
printf("\n\t,'''╭⌒╮⌒╮.',''',,',.'',,','',.\n ");
printf("\t ╱◥██◣''o',''',,',.''.'',,',. \n");
printf("\t|田|田田│ '',,',.',''',,',.'' \n");
printf("\t╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬\n");
printf("\n\n\t1.H O M E\n");
printf("\t2.残忍拒绝\n");
printf("\t 评分菌:客官请选择么么哒:[ ]\b\b");
scanf("%d",&n);
switch(n)
{
case 1: main();
case 2: exit(0);
}
}
C语言歌手评分系统(入门水平)
最新推荐文章于 2024-07-28 10:18:07 发布