服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C语言实现歌手比赛系统

C语言实现歌手比赛系统

2022-12-13 13:55普通学长 C/C++

这篇文章主要为大家详细介绍了C语言实现歌手比赛系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文为大家分享了C语言实现歌手比赛系统的具体代码,供大家参考。

 

一、项目简介

对一次歌手比赛的成绩进行管理
输入每个选手的数据包括编号、姓名、十个评委的成绩,根据输入计算出总成绩和平均成绩(去掉最高分,去掉最低分)。

 

二、任务概述

要求歌手比赛系统实现对学生基本信息(如编号、姓名、性别等)及十个评委的成绩的管理(增加、删除、修改或更新、查询、统计、保存到文件、从文件装载等操作)。

 

三、功能展示

C语言实现歌手比赛系统

C语言实现歌手比赛系统

C语言实现歌手比赛系统

C语言实现歌手比赛系统

 

四、思维导图

C语言实现歌手比赛系统

 

五、程序源码

#include<stdio.h>
#include<stdlib.h>
struct singer/*定义结构体*/ 
{

    int num;
    char name[10];
    float score[20];
    float aver;
    float sum;
    int ord;

}singer[100]; 


void singer_information(int b)
 /*输入选手信息*/ 
{
    int i;


    for(i=1;i<=b;i++)
    {
        printf("请输入选手编号:");
        scanf("%d",&singer[i].num);
        printf("请输入选手姓名:");
        scanf("%s",&singer[i].name);
    } 
}


int singer_score(int b)    
{
    int j,c;
    float a[50];
    for(j=1;j<=b;j++)
            {
                printf("\n请输入评委1对歌手%d的打分",j);
                scanf("%f",&singer[j].score[1]);
                printf("请输入评委2对歌手%d的打分",j);
                scanf("%f",&singer[j].score[2]);
                printf("请输入评委3对歌手%d的打分",j);
                scanf("%f",&singer[j].score[3]);
                printf("请输入评委4对歌手%d的打分",j);
                scanf("%f",&singer[j].score[4]);
                printf("请输入评委5对歌手%d的打分",j);
                scanf("%f",&singer[j].score[5]);
                printf("请输入评委6对歌手%d的打分",j);
                scanf("%f",&singer[j].score[6]);
                printf("请输入评委7对歌手%d的打分",j);
                scanf("%f",&singer[j].score[7]);
                printf("请输入评委8对歌手%d的打分",j);
                scanf("%f",&singer[j].score[8]);
                printf("请输入评委9对歌手%d的打分",j);
                scanf("%f",&singer[j].score[9]);
                printf("请输入评委10对歌手%d的打分",j);
                scanf("%f",&singer[j].score[10]);
                a[j]=singer[j].score[1]+singer[j].score[2]+singer[j].score[3]+singer[j].score[4]+singer[j].score[5]+singer[j].score[6]+singer[j].score[7]+singer[j].score[8]+singer[j].score[9]+singer[j].score[10];
                singer[j].sum=a[j];
            }
                
}


int singer_grade(int b)/* 歌手总成绩 */
{
    int a,c;
    float n[50],max,min;
    for(a=1;a<=b;a++)
    {
        max=singer[a].score[1];
        min=singer[a].score[1];
        for(c=1;c<=10;c++)
            {
                if(max<singer[a].score[c])   max=singer[a].score[c];
                if(min>singer[a].score[c])   min=singer[a].score[c];
            }
        n[a]=(singer[a].sum-max-min)/8.0;
        singer[a].aver=n[a];        
    }        
}

int order(int b)/*成绩排序*/ 
{
    int j,t,i;

        for(i=1;i<=b;i++)
                {
                for(j=1,t=1;j<=b;j++)
                {
                if(singer[i].aver<singer[j].aver)
                {
                t=t+1;
                }
                }
                singer[i].ord=t;
                }
                for(i=1;i<=b;i++)
                {
                    for(j=1;j<=b;j++)
                    {
                        if(i==singer[j].ord)
                            printf("%s是第%d     得分为%15.2f\n",singer[j].name,i,singer[j].aver);
                    }
                    printf("\n\n\n");
                }
            
}

int search(int c)/*数据查询*/ 
{
    printf("所查选手的数据:编号%d    姓名%s   平均成绩%f   总成绩%f\n",singer[c].num,singer[c].name,singer[c].aver,singer[c].score[c]);    
} 

 
 
 int addition(int i)/*数据追加*/
 {
     printf("请输入选手编号及姓名:");
    scanf("%d,%s/n",&singer[i+1].num,&singer[i+1].name);
    
    printf("请输入评委1对歌手%d的打分",i+1);
    scanf("%d",&singer[i+1].score[1]);
    printf("请输入评委2对歌手%d的打分",i+1);
    scanf("%d",&singer[i+1].score[2]);
    printf("请输入评委3对歌手%d的打分",i+1);
    scanf("%d",&singer[i+1].score[3]);
    printf("请输入评委4对歌手%d的打分",i+1);
    scanf("%d",&singer[i+1].score[4]);
    printf("请输入评委5对歌手%d的打分",i+1);
    scanf("%d",&singer[i+1].score[5]);
    printf("请输入评委6对歌手%d的打分",i+1);
    scanf("%d",&singer[i+1].score[6]);
    printf("请输入评委7对歌手%d的打分",i+1);
    scanf("%d",&singer[i+1].score[7]);
    printf("请输入评委8对歌手%d的打分",i+1);
    scanf("%d",&singer[i+1].score[8]);
    printf("请输入评委9对歌手%d的打分",i+1);
    scanf("%d",&singer[i+1].score[9]);
    printf("请输入评委10对歌手%d的打分",i+1);
    scanf("%d",&singer[i+1].score[10]);
 }


main()
{
    int a,b,c,i,n=1;
    FILE *fp;
    fp = fopen("歌手.txt","wt+");
    
     printf("     歌手比赛系统   \n");
     printf("*********************\n");
     printf("* 1)输入选手数据   *\n"); 
     printf("* 2)评委打分       *\n");
     printf("* 3)成绩排序       *\n");
     printf("* 4)数据查询       *\n");
     printf("* 5)追加学生数据   *\n");
     printf("* 6)写入数据文件   *\n");      
     printf("* 7)退出系统       *\n");
     printf("*********************\n");
    while(n)
    {
    printf("你想进行的操作: ");
    scanf("%d",&a);
    printf("\n\n");
    switch(a)
    {
        case 1: 
                printf("你想进行的操作:输入选手数据\n "); 
                printf("请输入选手个数");
                scanf("%d",&b);
                singer_information(b);
                printf("----------------------\n");
            
        break;
        case 2: 
                printf("你想进行的操作:评委打分\n ");
                singer_score(b);
                printf("-----------------------\n");
                
         break;
        case 3:  
                printf("你想进行的操作:成绩排序(按平均分)\n ");
                singer_grade(b);
                order(b);
                printf("-------------------------\n");
                
          break;
        case 4:
                printf("你想进行的操作:数据查询\n ");
                 printf("请输入要查询选手编号:"); 
                 scanf("%d",&c);
                 printf("所查选手的数据:编号%d    姓名%s   平均成绩%f   总成绩%f\n",singer[c].num,singer[c].name,singer[c].aver,singer[c].sum);
                 
                printf("--------------------------\n");
          break;
        case 5:
                printf("你想进行的操作:追加学生数据\n ");  
               addition(b);
                   printf("---------------------------\n");
                
          break;
        case 6: 
                printf("你想进行的操作:写入数据文件\n ");
                printf("将数据写入文件中:\n");
                for (i = 0 ; i <=b ; i++)
                {
                    fprintf(fp,"%d ",singer[i].num);
                    fprintf(fp,"%s ",singer[i].name);
                    fprintf(fp,"%d\n",singer[i].aver);
                    }
         break;
        case 7: exit(0);
        default :printf("输入错误请重新输入!\n");
    }
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/kui576/article/details/124258004

延伸 · 阅读

精彩推荐
  • C/C++c语言的程序环境与预处理详解

    c语言的程序环境与预处理详解

    大家好,本篇文章主要讲的是c语言的程序环境与预处理详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下...

    .SacaJawea4982022-09-15
  • C/C++利用C语言实现“百马百担”问题方法示例

    利用C语言实现“百马百担”问题方法示例

    百马百担是道经典的算法题,下面这篇文章主要给大家介绍了利用C语言实现“百马百担”问题的相关资料,文中通过示例代码介绍的非常详细,需要的朋友...

    诸葛玥10262021-06-11
  • C/C++C++实现统计代码运行时间计时器的简单实例

    C++实现统计代码运行时间计时器的简单实例

    这篇文章主要介绍了 C++实现统计代码运行时间计时器的简单实例的相关资料,需要的朋友可以参考下...

    ap10058347112021-05-23
  • C/C++C++ namespace相关语法实例分析

    C++ namespace相关语法实例分析

    这篇文章主要介绍了C++ namespace相关语法实例分析,对C++初学者有很好的参考借鉴价值,需要的朋友可以参考下...

    C++教程网8792021-01-29
  • C/C++C语言实现猜数字小项目

    C语言实现猜数字小项目

    这篇文章主要为大家详细介绍了C语实现猜数字小项目,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    weixin_528227839962022-08-28
  • C/C++解析之C++的列表初始化语法

    解析之C++的列表初始化语法

    有朋友在使用std::array时发现一个奇怪的问题:当元素类型是复合类型时,编译通不过。按说std::array和原生数组的行为几乎是一样的,可为什么当元素类型...

    华为云开发者社区9492021-11-08
  • C/C++C++使用string的大数除法运算(4)

    C++使用string的大数除法运算(4)

    这篇文章主要为大家详细介绍了C++使用string的大数除法运算,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    好想告诉你wt10052021-08-02
  • C/C++C++在成员函数中使用STL的find_if函数实例

    C++在成员函数中使用STL的find_if函数实例

    这篇文章主要介绍了C++在成员函数中使用STL的find_if函数实例,包括了STL中find_if函数的具体用法及相关的完整实例,非常具有参考借鉴价值,需要的朋友可以参...

    C++教程网11162021-02-04