⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档 (3).txt

📁 运动会积分系统 这个是我的大型作业
💻 TXT
字号:
# define LEN sizeof (SC)

# include"stdio.h”

# include"stdlib.h”

Typedef struct scoredetail

{ int score;

 Char programer;

 Char school;

}SC;

Typedef struct scoredef1

{ int score;

 Char programer;

 Char school;

 Struct scoredef1 *next;

}SC1;

Void input()                /*输入函数,完成将键盘输入的学生数据写入磁盘*/

{ SC a1;  char I;                 /*结构体变量a1用来存放一个运动员的数据*/

  FILE *fp;

  Clrslr();                   /*清屏*/

  If (fp=fopen("e:\\file1”, "wb”)= =NULL)

{printf("error!\n”);exit(0);}

While(i=’1’;i<=(‘m’+’w’-2*’1’)*(‘n’-‘1’+1);i++)        /*以循环方式输入每个运动员的数据*/

 {printf("\tschool:”);

  Scanf("%c”,&a1.school);

  while(a.school<’1’||a.school>’n’)

     {Printf(“\terror! Input school again.”);scanf(“\%c”,&a1.school);}

  Printf("\tprogramer:”);

  Scanf("%c”,&a1.programer);

  while(a.programer<’1’||a.programer>’m’+’w’)

     {printf(“\teror! Input programer again.”);scanf(“\%c”,&a1.programer);}

  Printf("\tscore:”);

  Scanf("%d”,&a1.score);

  While(a.score<0)

    {printf(“\terror! Input score again.”);scanf(“\%d”,&a1.score);}

  Fwrite(&a1,sizeof(SC),1,fp);

 }

 Fclose(fp);

}

SC1 creat ()           /*建立链表函数,完成用链表来存放从文件中读取的运动员数据*/

{SC1 *head1,*p1,*p2;

 FILE *fp;

 Clrslr();

 P1=p2=(SC1*)malloc(LEN);

 Head1=NULL;

 If(fp=fopen("e:\\file1”, "rb”))= =NULL)

  {printf("error!\n”);exit(0);}

 While(fread(*p1,sizeof(SC),1,fp)!=0)

   {if(head1= =NULL) head=p1;

Else p2->next=p1;

P2=p1;

P1=(SC1*)malloc(LEN);}

Free(p1);

P2->next=NULL;

Return head1;

}

SC thirdfifth(SC *p3,char a)     /*本函数实现找出运动项目a的前三(五)名的成绩*/

{ SC t,a[20],b[5];int i=0,j;

  While(p3!=NULL)           /*通过循环把各个学校的项目a的成绩放在数组a[20]中*/

{if(p3->programmer=a)

  {a[i]=*p3;i++;}

P3=p3->next;

}

For(i=0;i<5;i++)                       /*对a[20]中的数进行排序*/

  For(j=i+1;j<=20;j++)

If(a[i].score<a[j].score)

  {t=a[i];a[i]=a[j];a[j]=t;}

Printf("%d,%d,%d”,a[0].score,a[1].score,a[2].score);         /*输出前三名的成绩*/

If(a>=('m'-'1')/2+'1'&&a<'m'+'1'||a>=('w'-‘1’)/2+'m')

Printf(“%d,%d”,a[3].score,a[4].score);               /*输出第四、五名的成绩*/

For(i=0;i<5;i++)                                

B[i]=a[i];

Return b[5];

}

void Athirdfifth()             /*本函数实现输出各个项目的前三(五)名的成绩*/

{char I;

For(i='1';i<='m'+'w';i++)

 {printf(“\t The scores of the top 3 or 5 of the programmer %c are:\n”,i);

  Thirdfifth(head,i);

 }

 }

Int statistic(int *k,char b)                   /*本函数实现统计学校b的总成绩*/

{SC a[5];int ,j,s1,s2,s3,s4,s;char i;

 For(i='1';i<('m'-'1')/2+'1';i++)                     /*统计学校b男子团体的总分*/

  {a[5]=thirdfifth(head,i);

     For(j=0;j<3;j++)

       If(a[j].school=b)

          Switch(j)

            {case 0:s1+=5;break;

             Case 1:s1+=3;break;

             Case 2:s1+=2;break;

             }

 }

 For(i=('m'-'1')/2+'1';i<='m';i++)

{a[5]thirdfifth(head,i);

For(j=0;j<5;j++)

  If(a[j].school=b)

  Switch(j)

  {case 0:s2+=7;break;

   Case 1:s2+=5;break;

   Case 2:s2+=3;break;

   Case 3:s2+=2;break;

   Case 4:s2+=1;break;

  }

}

For(i='m’+’1';i<('w'-‘1’)/2+'m';i++)           /*统计学校b女子团体的总*/

  {a[5]=thirdfifth(head,i);

For(j=0;j<3;j++)

  If(a[j].school=b)

 Switch(j)

      {case 0:s3+=5;break;

       Case 1:s3+=3;break;

       Case 2:s3+=2;break;

       }

}

For(i=('w'-‘1’)/2+'m';i<='m'+'w';i++)

 {a[5]=thirdfifth(head,i);

  For(j=0;j<5;j++)

    If(a[j].school=b)

Switch(j)

      {case 0:s4+=7;break;

Case 1:s4=5;break;

case 2:s4+=3;break;

case 3:s4+=2;break;

case 4:s4+=1;break;

}

}

*k=s1+s2;

Return s=s1+s2+s3+s4;

}

void Astatistic()                        /*本函数实现输出各个学校的总分*/

{int sum,k1=0;char I;

For(i='1';i<='n';i++)

  {sum=statistic(&k1;i);

   Printf(“school\t%cscore\t%d\n”,I,sum)

   }

}

void sort()                                       /*本函数实现按学校编号.学校总分.男女团体总分排序输出*/

{struct schoolscore

  {char school;

    int score;

 }ss[20],ssb[20],ssw[20],t;   /*ss[20],ssb[20],ssw[20]分别存放各个学校的总分.男生团体总分.女生团体总分*/

  int a1=0;char i;int a,j,d;

  for(i='1',a=0;i<='n';i++,a++)

    {ss[a].score=statistic(&a1,i);

      ss[a].school=i;

      ssb[a].score=a1;

      ssb[a].school=i;

      ssw[a].school=ss[a].score-a1;

     ssw[a].school=i;

}

a--;

 for(d=0;d<a;d++)                /*对各个学校的总分.男生团体总分.女生团体总分进行排序*/

    for(j=d+1;j<a+1;j++)

       {if(ss[d].score<ss[j].score)

           {t=ss[d];ss[d]=ss[j];ss[j]=t;}

         if(ssb[d].score<ssb[j].score)

           {t=ssb[d];ss[d]=ss[j];ss[j]=t;}

         if(ssw[d].score<ssw[j].score)

           {t=ssw[d];ssw[d]=ssw[j];ssw[j]=t;}

  printf("\tassort by the sum of a school and output the result:\n");      /*输出按学校总分排序的结果*/

  for(d=0;d<=a;d++)

  printf("school\t%cscore\t%d",ss[d].school,ss[d].score);

  printf("\tassort by the sum of the boys of a school and output the result:\n");    

 /*输出按学校男生团体总分排序的结果*/

  for(d=0;d<a+1;d++)

  printf("\tschool\t%cboy score\t%d",ssb[d].school,ssb[d].score);       

 printf("\tassort on the sum of the girls of a school and output the result :\n"); 

 /*输出按学校女生团体总分排序的结果*/

 for(d=0;d<a+1;d++)

printf("\tschool\t%cgirl score\t%d",ssw{d].school.ssw[d].score);

}

void inquire1()                 /*本函数实现按学校编号查询学校某个项目的情况*/

{SC a[5];char a1,a2;

  int i;

  printf("\tinput the school code you want to inquire\n");

  scanf("%c\n",&a1);

  printf("\tinput the programmer code you want to inquire\n");

  scanf("%c\n",&a2);

  a[5]=thirdfifth(head,a2);                                     /*找出项目a2的前五名*/

   for(i=0;i<5;i++)                                /*通过循环找出学校a1的项目a2的成绩*/

      if(a[i].school=a1)

          break;

  if(i<3)

    printf("\tschool\t%c\tprogrammer \t%c\tranking\t%d",a1,a2,i+1);

  if(i>2&&(a[i].school>=('w'-‘1’)/2+'m'||a[i].school>=('m'-‘1’)/2+'1'&&a[i].school<'m’+1))

     printf("\tschool\t%c\tprogrammer\t%c\tranking\t%d".a1,a2.i+1);

 if(i=6)

   printf(“\tthe programmer gets no score\n”); 

}

void inquire2()                    /*本函数实现按项目编号查询取得前三(五)名的学校*/

{SC a[5];char a1;int i;

  printf("\tinput the programmer code you want to inquire\n");

  scanf("%c\n",&a1);

  a[5]=thirdfifth(head,a1);

  printf("\tthe top 3 or 5 schools of the programmer are\n");

  for(i=0;i<3;i++)

    printf("%c\t",a[i].school);

  if(a1>=('m'-‘1’)/2+'1'&&a[i].school<'m’+1||a1>=('w'-‘1’)/2+'m')

     for(i=3;i<5;i++)

       printf("%c",a[i].school);

}

main()

{int x,m1,n1,w1;char m,n,w;

  SC head;

   head=creat();                                                                 /* 将链表的首地址赋给head*/

   printf("\tinput the NO. of the school \n");

   scanf("%d",&n1);

   printf("\tinput the NO. of the boy programmer\n");

   scanf("%d",&m1);

  printf(“\tinput the NO. of the girl programmer\n");

  scanf(“%d”,&w1);

   m=(char)m1;                                                                   /*对m1个学校进行编码*/

   n=(char)n1;                                        /*对n1个项目进行编码*/

w=(char)w1;                                                                 /*对 w1个项目进行编码*/

   do

   {clrscr();

     printf("\n\n\n\n\n\t\tplayer score management system\n");

     printf("\t\t************************************************************************************************\n");

     printf("\t\t\t1-------input\n");                    /*当输入为1时,将调用input函数*/

     printf("\t\t\t2-------Athirdfifth\n");

     printf("\t\t\t3-------Astatistic\n");

     printf("\t\t\t4-------sort\n");

     printf("\t\t\t5-------inquire1\n");

     printf("\t\t\t6-------inquire2\n");

     printf("\t\t\t0-------exit\n");

     printf("\t\t************************************************************************************************\n");

     printf("\t\tplease choose:");

     scanf("%d",&a);

    switch(x)

        {case 1:input();break;

         case 2:Athirdfifth();break;

         case 3:Astatistic();break;

         case 4:sort();break;

         case 5:inquire1();break;

         case 6:inquire2();break;

         case 0;exit(0);

        }

}while(a!=0);

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -