C语言歌手评分系统(入门水平)

/*
	程序名称:歌手评分系统
	作者:    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);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值