c语言歌手系统

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42175505/article/details/81150030

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 3
#define M 3
int add = N - 1;
int sum[N] = { 0 }, Max[N], Min[N];
float aver[N] = { 0 };
struct player
{
    int num;
    char name[8];
    int score[M];
};

void Inistplayer(struct player a[], int n)
{
    int i;
    for (i = 0; i < n; i++)
        scanf("%d %s", &a[i].num, a[i].name);
}
void Inputscore(int score[], int n)
{
    int i;
    for (i = 0; i < n; i++)
        scanf("%d",&score[i]);
}
void sort(struct player a[], float b[], int n)
{
    int i, k, j,t;
    float temp;
    //struct player temp1;
    char str[8];
    for (i = 0; i < n-1; i++)
    {
        k = i;
        for (j = i + 1; j < n; j++)
            if (b[k] > b[j])
                k = j;
        if (k != i)
        {
            temp = b[i];
            b[i] = b[k];
            b[k] = temp;
            strcpy(str, a[i].name);
            strcpy(a[i].name, a[k].name);
            strcpy(a[k].name, str);
            t = a[i].num;
            a[i].num = a[k].num;
            a[k].num = t;
        }

    }
}
int main()
{
    int flag = 1, n, i, m, j;
    FILE *fp;
    struct player a[20];
    printf("--------------------------------------------------------\n");
    printf("********************************************************\n");
    printf("                   欢迎进入歌手比赛系统                 \n");
    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");
    while(flag)
    {
        printf("输入序号以进行的操作:");
            scanf("%d",&n);
        switch(n)
        {
    case 1:Inistplayer(a,N);
        break;
    case 2:
        for(i=0;i<N;i++)
        {
            printf("%d位选手的成绩:",i+1);
                Inputscore(a[i].score,M);
            for(j=0;j<M;j++)
                printf("%d\t",a[i].score[j]);
            printf("\n");
        }
        break;
    case 3:for(i=0;i<N;i++)
           {
               Max[i]=a[i].score[0];
               Min[i]=a[i].score[0];
               for(j=0;j<M;j++)
               {
                   sum[i]+=a[i].score[j];
                   if(Max[i]<a[i].score[j])
                       Max[i]=a[i].score[j];
                   if(Min[i]>a[i].score[j])
                       Min[i]=a[i].score[j];
               }
               aver[i]=(float)(sum[i]-Max[i]-Min[i])/(M-2);

           }
        sort(a,aver,N);
        for(i=0;i<N;i++)
            printf("%s\t%5.2f\n",a[i].name,aver[i]);
        break;
    case 4:printf("你想查询的选手的数据:");
               scanf("%d",&m);
        for(i=0;i<N;i++)
            if(a[i].num==m)
            {
                printf("%d 号选手%s 总分:%d,最高分%d,最低分%d,平均分%5.2f",a[i].num,a[i].name,sum[i],Max[i],Min[i],aver[i]);
                printf("\n");
            }
            break;
    case 5:printf("请输入要追加的选手数据:\n");
             add=add+1;
             scanf("%d %s",&a[add].num,a[add].name);
             break;
    case 6:printf("将数据写入文件:\n");
    fp=fopen("date.txt","w");
for(int i=0;i<add+2;i++)
    {
        fprintf(fp,"%d %s\n",a[i].num,a[i].name);
    }
    fclose(fp);
        break;
    case 7:exit(0);
        break;
    default:flag=0;
        }
    }

    return 0;
}

展开阅读全文

没有更多推荐了,返回首页