运动会

来源:互联网 发布:php string length 编辑:程序博客网 时间:2024/04/23 20:19

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<time.h>
#include<math.h>
#include<stdlib.h>

struct xiangmu
{
 int bisai[5];
 int chengji[5];
}xiangmus;

struct team
{
 char name[30];
 int num,zc;    //队伍编号,是否注册 
    struct xiangmu xiangmus;
 int jin,yin,tong; 
 int zongfen;
}teams[20];

void freadteam()
{
 FILE *fp;
 int i=0;
 fp=fopen("team.txt","r");
 if(fp==NULL)
 {
  printf("文件打开失败/n");
  exit(0);
 }
 else
 {
  while(!feof(fp))
  {
   fscanf(fp,"%s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d/n",teams[i].name,&teams[i].num,&teams[i].zc,&teams[i].xiangmus.bisai[0],&teams[i].xiangmus.bisai[1],&teams[i].xiangmus.bisai[2],&teams[i].xiangmus.bisai[3],&teams[i].xiangmus.bisai[4],&teams[i].xiangmus.chengji[0],&teams[i].xiangmus.chengji[1],&teams[i].xiangmus.chengji[2],&teams[i].xiangmus.chengji[3],&teams[i].xiangmus.chengji[4],&teams[i].jin,&teams[i].yin,&teams[i].tong,&teams[i].zongfen);
   teams[i].xiangmus.chengji[0]=0;teams[i].xiangmus.chengji[1]=0;teams[i].xiangmus.chengji[2]=0;teams[i].xiangmus.chengji[3]=0;teams[i].xiangmus.chengji[4]=0;teams[i].jin=0;teams[i].yin=0;teams[i].tong=0;teams[i].zongfen=0;
   i++;
  }
 }
 fclose(fp);
}

void fwriteteams()
{
 FILE *fp;
 int i=0;
 fp=fopen("team.txt","w");
 if(fp==NULL)
 {
  printf("文件打开失败/n");
  exit(0);
 }
 else
 {
  while(i<20)
  {
   fprintf(fp,"%s %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d/n",teams[i].name,teams[i].num,teams[i].zc,teams[i].xiangmus.bisai[0],teams[i].xiangmus.bisai[1],teams[i].xiangmus.bisai[2],teams[i].xiangmus.bisai[3],teams[i].xiangmus.bisai[4],teams[i].xiangmus.chengji[0],teams[i].xiangmus.chengji[1],teams[i].xiangmus.chengji[2],teams[i].xiangmus.chengji[3],teams[i].xiangmus.chengji[4],teams[i].jin,teams[i].yin,teams[i].tong,teams[i].zongfen);
   i++;
  }
 }
 fclose(fp);
}
void zhuce()
{
 char name[30];
 int same,i,d,count=0,tf=1;
 system("cls");
 for(d=0;d<20;d++)
 {
  if(teams[d].num!=0)
  count=count+1;
 }
 while(tf)
 {
 printf("请输入要注册的队伍的名称: /n");
 scanf("%s",name);
 for(i=0;i<count;i++)
 {
 if(!strcmp(name,teams[i].name))
 same=1;
 else same=0;
 }
 if(same==1)
 printf("该队伍已经注册!");
 else
 {
  strcpy(teams[count].name,name);
  teams[count].num=count+1;
  teams[count].zc=1;
  count=count+1;
 }
 printf("是否继续注册?(是:1/否:0)");
 scanf("%d",&tf);
 }
}

void grade()
{
 int i,k,g,m,n,d,num,count=0,sign=0;
 for(d=0;d<20;d++)
 {
  if(teams[d].num!=0)
  count=count+1;//puts("ok");
 }//printf("%d",count);
 srand(time(NULL));
 for(k=0;k<5;k++)
 {//puts("ok");
 if(teams[0].xiangmus.bisai[k]==1)
 teams[0].xiangmus.chengji[k]=rand()%8+1;
 else
 teams[0].xiangmus.chengji[k]=0;
 if(teams[0].xiangmus.chengji[k]==1)
 teams[0].jin++;
 if(teams[0].xiangmus.chengji[k]==2)
 teams[0].yin++;
 if(teams[0].xiangmus.chengji[k]==3)
 teams[0].tong++;//puts("ok");
 for(num=1;num<count;num++)
 {
  //sign=0;
  m=num;//puts("ok");
 // g=rand()%8+1;puts("ok");
 while(sign!=num)
 {sign=0;
 g=rand()%8+1;
 for(i=num;i>0;i--)
 {//puts("ok");
 if(teams[i-1].xiangmus.chengji[k]!=g) 
  sign=sign+1;
 //else sign=sign+1;
 }
 /*if(sign==num)
 break;*/
 }
  if(teams[m].xiangmus.bisai[k]==1)
  teams[m].xiangmus.chengji[k]=g;
  else
  teams[m].xiangmus.chengji[k]=0;
  if(teams[m].xiangmus.chengji[k]==1)
      teams[m].jin++;
     if(teams[m].xiangmus.chengji[k]==2)
     teams[m].yin++;
     if(teams[m].xiangmus.chengji[k]==3)
     teams[m].tong++;
 }
 }
 /*for(i=0;i<count;i++)
 printf("%d  ",teams[i].xiangmus.chengji[0]);*/
}

void baoming()
{  
    char name[30];
    int i,j,m=1,d,count=5,sum=1;
    system("cls");
    for(d=0;d<20;d++)
 {
  if(teams[d].num!=0)
  count=count+1;
 }//puts("ok");
 while(m)
 {
    printf("请输入报名的团队名称 /n");
    scanf("%s",name);
    for(i=0;i<count;i++)
    {
    if(!strcmp(name,teams[i].name))
    {
 sum=0;
 printf("----------------------------/n");
 printf("        比赛项目如下        /n");
 printf("        1.跑步              /n");
    printf("        2.跳远              /n");
    printf("        3.跳高              /n");
    printf("        4.游泳              /n");
    printf("        5.接力              /n");
    printf("----------------------------/n");
    scanf("%d%d%d%d%d",&teams[i].xiangmus.bisai[0],&teams[i].xiangmus.bisai[1],&teams[i].xiangmus.bisai[2],&teams[i].xiangmus.bisai[3],&teams[i].xiangmus.bisai[4]);
    }
    }
    if(sum) printf("该队伍还未注册/n");
    printf("是否继续报名(是:1/否:0)");
 scanf("%d",&m);
 }
}

/*void grade()
{
 int i,k,g,m=1,n,d,num,count=0,sum=0;
 for(d=0;d<20;d++)
 {
  if(teams[d].num!=0)
  count=count+1;
 }//puts("ok");
 srand(time(NULL));
 for(k=0;k<5;k++)
 {
 if(teams[0].xiangmus.bisai[k]==1)
 teams[0].xiangmus.chengji[k]=rand()%8+1;
 else
 teams[0].xiangmus.chengji[k]=0;
 if(teams[0].xiangmus.chengji[k]==1)
 teams[0].jin++;
 if(teams[0].xiangmus.chengji[k]==2)
 teams[0].yin++;
 if(teams[0].xiangmus.chengji[k]==3)
 teams[0].tong++;//puts("ok");
 for(num=1;num<count;num++)
 {
  m=1;
 while(m)
 {
  for(i=num;i>0;i--)
  {
  g=rand()%8+1;
  if(teams[i-1].xiangmus.chengji[k]==g)
  {//puts("ok");
  m=1;
  }
  }
  m=0;
  /*if(sum==num)
  n=1;//puts("ok");//puts("ok");
  if(n)
  m=0;*/
/* }
  if(teams[num].xiangmus.bisai[k]==1)
  teams[num].xiangmus.chengji[k]=g;
  else
  teams[num].xiangmus.chengji[k]=0;
  if(teams[num].xiangmus.chengji[k]==1)
      teams[num].jin++;
     if(teams[num].xiangmus.chengji[k]==2)
     teams[num].yin++;
     if(teams[num].xiangmus.chengji[k]==3)
     teams[num].tong++;

 }
 }
 /*for(i=0;i<count;i++)
 printf("%d  ",teams[i].xiangmus.chengji[0]);*/
//}*/

void zchengji()
{
 int i,j,d,count=0;
 for(d=0;d<20;d++)
 {
  if(teams[d].num!=0)
  count=count+1;
 }
 for(i=0;i<count;i++)
 for(j=0;j<5;j++)
 teams[i].zongfen=teams[i].zongfen+teams[i].xiangmus.chengji[j];
}
void danxiang()
{
 int m,i,j,d,count=0;
 struct team temp;
 for(d=0;d<20;d++)
 {
  if(teams[d].num!=0)
  count=count+1;
 }
 system("cls");
 printf("----------------------------/n");
 printf("        1.跑步              /n");
    printf("        2.跳远              /n");
    printf("        3.跳高              /n");
    printf("        4.游泳              /n");
    printf("        5.接力              /n");
    printf("----------------------------/n");
    printf("请输入要查看的单项成绩:/n");
    scanf("%d",&m);
    switch(m)
    {
     case 1:
     printf("-----------------------------------------------/n");
     for(i=0;i<count;i++)
     for(j=0;j<count-i;j++)
     {
      if(teams[j].xiangmus.chengji[m-1]<teams[j+1].xiangmus.chengji[m-1])
      {
   temp=teams[j];
      teams[j]=teams[j+1];
      teams[j+1]=temp;
      }
     }
     for(i=0;i<count;i++)
     printf("%10s%d/n",teams[i].name,teams[i].xiangmus.chengji[m-1]);
     break;
     case 2:
     printf("-----------------------------------------------/n");
     for(i=0;i<count;i++)
     for(j=0;j<count-i;j++)
     {
      if(teams[j].xiangmus.chengji[m-1]<teams[j+1].xiangmus.chengji[m-1])
      {
   temp=teams[j];
      teams[j]=teams[j+1];
      teams[j+1]=temp;
      }
     }
     for(i=0;i<count;i++)
     printf("%10s%d/n",teams[i].name,teams[i].xiangmus.chengji[m-1]);
     break;
     case 3:
     printf("-----------------------------------------------/n");
     for(i=0;i<count;i++)
     for(j=0;j<count-i;j++)
     {
      if(teams[j].xiangmus.chengji[m-1]<teams[j+1].xiangmus.chengji[m-1])
      {
   temp=teams[j];
      teams[j]=teams[j+1];
      teams[j+1]=temp;
      }
     }
     for(i=0;i<count;i++)
     printf("%10s%d/n",teams[i].name,teams[i].xiangmus.chengji[m-1]);
     break;
     case 4:
     printf("-----------------------------------------------/n");
     for(i=0;i<count;i++)
     for(j=0;j<count-i;j++)
     {
      if(teams[j].xiangmus.chengji[m-1]<teams[j+1].xiangmus.chengji[m-1])
      {
   temp=teams[j];
      teams[j]=teams[j+1];
      teams[j+1]=temp;
      }
     }
     for(i=0;i<count;i++)
     printf("%10s%d/n",teams[i].name,teams[i].xiangmus.chengji[m-1]);
     break;
     case 5:
     printf("-----------------------------------------------/n");
     for(i=0;i<count;i++)
     for(j=0;j<count-i;j++)
     {
      if(teams[j].xiangmus.chengji[m-1]<teams[j+1].xiangmus.chengji[m-1])
      {
   temp=teams[j];
      teams[j]=teams[j+1];
      teams[j+1]=temp;
      }
     }
     for(i=0;i<count;i++)
     printf("%10s%d/n",teams[i].name,teams[i].xiangmus.chengji[m-1]);
     break;
    }

void jiangpai()
{
 int i,j,d,count=0;
 struct team temp;
 for(d=0;d<20;d++)
 {
  if(teams[d].num!=0)
  count=count+1;//printf("%d",count);
 }
 system("cls");
 printf("-----------------------------------------------/n");
 printf("     队名   |   金牌   |   银牌   |   铜牌    |/n");
 for(i=0;i<count;i++)
 for(j=0;j<count-i;j++)
 {
  if(teams[j].jin<teams[j+1].jin)
  {
  temp=teams[j];
  teams[j]=teams[j+1];
  teams[j+1]=temp;
  }
  /*if(teams[j].yin<teams[j+1].yin)
  {
  temp=teams[j];
  teams[j]=teams[j+1];
  teams[j+1]=temp;
  }
  if(teams[j].jin<teams[j+1].jin)
  {
  temp=teams[j];
  teams[j]=teams[j+1];
  teams[j+1]=temp;
  }*/
 }
 for(i=0;i<count;i++)
 for(j=0;j<count-i;j++)
 {
  if(teams[j].yin<teams[j+1].yin && teams[j].jin==teams[j+1].jin)
  {
  temp=teams[j];
  teams[j]=teams[j+1];
  teams[j+1]=temp;
  }
 }
 for(i=0;i<count;i++)
 for(j=0;j<count-i;j++)
 {
  if(teams[j].tong<teams[j+1].tong && teams[j].jin==teams[j+1].jin && teams[j].yin==teams[j+1].yin)
  {
  temp=teams[j];
  teams[j]=teams[j+1];
  teams[j+1]=temp;
  }
 }
 for(i=0;i<count;i++)
 printf("   %10s   |    %d    |    %d     |    %d    |/n",teams[i].name,teams[i].jin,teams[i].yin,teams[i].tong);
}

void tuanzong()
{
 int i,j,d,count=0;
 struct team temp;
 zchengji();
 for(d=0;d<20;d++)
 {
  if(teams[d].num!=0)
  count=count+1;
 }
 system("cls");
 printf("----------------------------------------/n");
 for(i=0;i<count;i++)
 for(j=0;j<count-i;j++)
 if(teams[j].zongfen<teams[j+1].zongfen)
 {
  temp=teams[j];
  teams[j]=teams[j+1];
  teams[j+1]=temp;
 }
 for(i=0;i<count;i++)
 printf("    %10s      |            %d            /n",teams[i].name,teams[i].zongfen);
}

main()
{
 int m,n;
 freadteam();
 while(1)
 {
  system("cls");
 printf("请输入要查看的选项:                    /n");
 printf("----------------------------------------/n");
 printf("             1.队伍注册                 /n");
 printf("             2.项目报名                 /n");
 printf("             3.退出程序                /n");
 //printf("             4.退出程序                 /n");
 /*printf("             5.团队总分                 /n");*/
 printf("             0.开始比赛                 /n");
 printf("----------------------------------------/n");
 scanf("%d",&m);
 switch(m)
 {
  case 1:zhuce();break;
  case 2:baoming();break;
  case 3:fwriteteams();exit(0);
  /*case 4:jiangpai();break;
  case 5:tuanzong();break;*/
  case 0:fwriteteams();
 }
 //getch();
 freadteam();
 grade();
 while(1)
 {
 system("cls");
 printf("请输入要查看的选项:/n");
 printf("             1.单项成绩                 /n");
 printf("             2.奖 牌 榜                 /n");
 printf("             3.团队总分                 /n");
 printf("             0.退出程序                 /n");
 scanf("%d",&n);
 switch(n)
 {
  case 1:danxiang();break;
  case 2:jiangpai();break;
  case 3:tuanzong();break;
  case 0:fwriteteams();exit(0);
 }
 getch();
 }
 }
}

Code:
  1. void grade()   
  2. {   
  3.  int i,k,g,m,n,d,num,count=0,sign=0;   
  4.  for(d=0;d<20;d++)   
  5.  {   
  6.   if(teams[d].num!=0)   
  7.   count=count+1;//puts("ok");   
  8.  }//printf("%d",count);   
  9.  srand(time(NULL));   
  10.  for(k=0;k<5;k++)   
  11.  {//puts("ok");   
  12.  if(teams[0].xiangmus.bisai[k]==1)   
  13.  teams[0].xiangmus.chengji[k]=rand()%8+1;   
  14.  else  
  15.  teams[0].xiangmus.chengji[k]=0;   
  16.  if(teams[0].xiangmus.chengji[k]==1)   
  17.  teams[0].jin++;   
  18.  if(teams[0].xiangmus.chengji[k]==2)   
  19.  teams[0].yin++;   
  20.  if(teams[0].xiangmus.chengji[k]==3)   
  21.  teams[0].tong++;//puts("ok");   
  22.  for(num=1;num<count;num++)   
  23.  {   
  24.   //sign=0;   
  25.   m=num;//puts("ok");   
  26.  // g=rand()%8+1;puts("ok");   
  27.  while(sign!=num)   
  28.  {sign=0;   
  29.  g=rand()%8+1;   
  30.  for(i=num;i>0;i--)   
  31.  {//puts("ok");   
  32.  if(teams[i-1].xiangmus.chengji[k]!=g)    
  33.   sign=sign+1;   
  34.  //else sign=sign+1;    
  35.  }   
  36.  /*if(sign==num)  
  37.  break;*/  
  38.  }   
  39.   if(teams[m].xiangmus.bisai[k]==1)   
  40.   teams[m].xiangmus.chengji[k]=g;   
  41.   else  
  42.   teams[m].xiangmus.chengji[k]=0;   
  43.   if(teams[m].xiangmus.chengji[k]==1)   
  44.       teams[m].jin++;   
  45.      if(teams[m].xiangmus.chengji[k]==2)   
  46.      teams[m].yin++;   
  47.      if(teams[m].xiangmus.chengji[k]==3)   
  48.      teams[m].tong++;   
  49.  }   
  50.  }   
  51.  /*for(i=0;i<count;i++)  
  52.  printf("%d  ",teams[i].xiangmus.chengji[0]);*/  
  53. }   
  54.   

 

 

这段让我弄了很久啊。。我的逻辑不行啊。。。。加强加强,还有一段就是奖牌榜那个,记住记住~~~

原创粉丝点击