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

📄 3.c

📁 用C做的一个运动会系统
💻 C
字号:
/*运行环境为TC2.0*/
#include <malloc.h>  
#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#define NULL 0 
#define MaxSize 30 

typedef struct athletestruct 
{ 
 char name[20];  
 int score;  
 int range; 
 int item; 
}ATH; 
typedef struct schoolstruct 
{ 
 int count;
 int serial; 
 int menscore; 
 int womenscore; 
 int totalscore; 
 ATH athlete[MaxSize]; 
 struct schoolstruct *next;  
}SCH; 

int nsc,msp,wsp;  
int ntsp;  
int i,j;  
int overgame;  
int serial,range;  
int n;  
SCH *head,*pfirst,*psecond;  
int *phead=NULL,*pafirst=NULL,*pasecond=NULL;  

input () 
{ 
 char answer;  
 head = (SCH *)malloc(sizeof(SCH));  
 head->next = NULL; 
 pfirst = head;  
 answer = 'y'; 
 while ( answer == 'y' ) 
 { 
Is_Game_DoMain: 
 printf("\n奇数项目取前五名\n偶数项目取前三名"); 
 printf("\n输入运动项目序号 (x<=%d):",ntsp); 
 scanf("%d",pafirst); 
 overgame = *pafirst; 
 if ( pafirst != phead ) 
 { 
 for ( pasecond = phead ; pasecond < pafirst ; pasecond ++ ) 
 { 
 if ( overgame == *pasecond ) 
 { 
 printf("\n这个项目已经存在请选择其他的数字\n"); 
 goto Is_Game_DoMain; 
 } 
 } 
 } 
 pafirst = pafirst + 1; 
 if ( overgame > ntsp ) 
 { 
 printf("\n项目不存在"); 
 printf("\n请重新输入"); 
 goto Is_Game_DoMain; 
 } 
 switch ( overgame%2 ) 
 { 
 case 0: n = 3;break; 
 case 1: n = 5;break; 
 } 
 for ( i = 1 ; i <= n ; i++ ) 
 { 
Is_Serial_DoMain: 
 printf("\n输入序号 of the NO.%d (0<x<=%d): ",i,nsc); 

 scanf("%d",&serial); 
 if ( serial > nsc )  
 { 
 printf("\n超过学校数目,请重新输入"); 
 goto Is_Serial_DoMain; 
 } 
 if ( head->next == NULL )  
 { 
 create(); 
 } 
 psecond = head->next ;  
 while ( psecond != NULL )  
 { 
 if ( psecond->serial == serial ) 
 { 
 pfirst = psecond; 
 pfirst->count = pfirst->count + 1; 
 goto Store_Data; 
 } 
 else 
 { 
 psecond = psecond->next; 
 } 
 } 
 create(); 
Store_Data: 

 pfirst->athlete[pfirst->count].item = overgame; 
 pfirst->athlete[pfirst->count].range = i; 
 pfirst->serial = serial; ("Input name:) : "); 

 scanf("%s",pfirst->athlete[pfirst->count].name); 
 } 
 printf("\n继续输入运动项目(y&n)?"); 
 answer = getch(); 
 printf("\n"); 
 } 
} 

calculate() /**/ 
{ 
 pfirst = head->next; 
 while ( pfirst->next != NULL ) 
 { 
 for (i=1;i<=pfirst->count;i++) 
 { 
 if ( pfirst->athlete[i].item % 2 == 0 )  
 { 
 switch (pfirst->athlete[i].range) 
 { 
 case 1:pfirst->athlete[i].score = 5;break; 
 case 2:pfirst->athlete[i].score = 3;break; 
 case 3:pfirst->athlete[i].score = 2;break; 
 } 
 } 
 else  
 { 
 switch (pfirst->athlete[i].range) 
 { 
 case 1:pfirst->athlete[i].score = 7;break; 
 case 2:pfirst->athlete[i].score = 5;break; 
 case 3:pfirst->athlete[i].score = 3;break; 
 case 4:pfirst->athlete[i].score = 2;break; 
 case 5:pfirst->athlete[i].score = 1;break; 
 } 
 } 
 if ( pfirst->athlete[i].item <=msp )  
 { 
 pfirst->menscore = pfirst->menscore + pfirst->athlete[i].score; 
 } 
 else  
 { 
 pfirst->womenscore = pfirst->womenscore + pfirst->athlete[i].score; 
 } 
 } 
 pfirst->totalscore = pfirst->menscore + pfirst->womenscore; 
 pfirst = pfirst->next; 
 } 
} 

output() 
{ 
 pfirst = head->next; 
 psecond = head->next; 
 while ( pfirst->next != NULL )  
 { 
 clrscr(); 
 printf("\n第%d号学校的结果成绩:",pfirst->serial); 
 printf("\n\n运动项目序号\t学校的名字\t项目成绩"); 
 for (i=1;i<=ntsp;i++)  
 { 
 for (j=1;j<=pfirst->count;j++)  
 { 
 if ( pfirst->athlete[j].item == i ) 
 { 
  
  
 printf("\n %d\t\t %s\t\t %d",i,pfirst->athlete[j].name,pfirst->athlete[j].score);break; 
  
 } 
 } 
 } 
 printf("\n\n\n\t\t\t\t\t\t按任意建 进入下一页"); 
 getch(); 
 pfirst = pfirst->next; 
 } 
 clrscr(); 
 printf("\n运动会结果:\n\n学校编号\t男运动员成绩\t女运动员成绩\t总分"); 
 pfirst = head->next; 
 while ( pfirst->next != NULL ) 
 { 
 printf("\n %d\t\t %d\t\t %d\t\t %d",pfirst->serial,pfirst->menscore,pfirst->womenscore,pfirst->totalscore); 
 pfirst = pfirst->next; 
 } 
 printf("\n\n\n\t\t\t\t\t\t\t按任意建结束"); 
 getch(); 
} 

create() 
{ 
  
 pfirst = (struct schoolstruct *)malloc(sizeof(struct schoolstruct)); 
 pfirst->next = head->next ; 
 head->next = pfirst ; 
  
 pfirst->count = 1; 
 pfirst->menscore = 0; 
 pfirst->womenscore = 0; 
 pfirst->totalscore = 0; 
} 
main() 
{ 
 system("cls"); 
 printf("\n\t\t\t 运动会分数统计\n"); 
 printf("输入学校数目 (x>= 5):"); 
 scanf("%d",&nsc);  
 printf("输入男选手的项目(x<=20):"); 
 scanf("%d",&msp);  
 printf("输入女选手项目(y<=20):"); 
 scanf("%d",&wsp);  
 ntsp = msp + wsp;  

 phead = calloc(ntsp,sizeof(int)); 
 pafirst = phead; 
 pasecond = phead; 
 input(); 
 calculate();  
 output();  
}  

⌨️ 快捷键说明

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