用c语言分离四位数4586,C语言课程设计要求编写一段程序题目是运动会分数..._统计师_帮考网...

#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("GET Top 5 when oddGET Top 3 when even");

printf("输入运动项目序号 (x<=%d):",ntsp);

scanf("%d",pafirst);

overgame = *pafirst;

if ( pafirst != phead )

{

for ( pasecond = phead ; pasecond < pafirst ; pasecond ++ )

{

if ( overgame == *pasecond )

{

printf("这个项目已经存在请选择其他的数字");

goto Is_Game_DoMain;

}

}

}

pafirst = pafirst + 1;

if ( overgame > ntsp )

{

printf("项目不存在");

printf("请重新输入");

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("输入序号 of the NO.%d (0scanf("%d",&serial);

if ( serial > nsc )

{

printf("超过学校数目,请重新输入");

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("继续输入运动项目(y&n)?");

answer = getch();

printf("");

}

}

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("第%d号学校的结果成绩:",pfirst->serial);

printf("项目的数目 学校的名字 分数");

for (i=1;i<=ntsp;i++)

{

for (j=1;j<=pfirst->count;j++)

{

if ( pfirst->athlete[j].item == i )

{

printf(" %d %s %d",i,pfirst->athlete[j].name,pfirst->athlete[j].score);break;

}

}

}

printf(" 按任意建 进入下一页");

getch();

pfirst = pfirst->next;

}

clrscr();

printf("运动会结果:学校编号 男运动员成绩 女运动员成绩 总分");

pfirst = head->next;

while ( pfirst->next != NULL )

{

printf(" %d %d %d %d",pfirst->serial,pfirst->menscore,pfirst->womenscore,pfirst->totalscore);

pfirst = pfirst->next;

}

printf(" 按任意建结束");

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;

}

void Save()

{FILE *fp;

if((fp = fopen("school.dat","wb"))==NULL)

{printf("can''t open school.dat");

fclose(fp);

return;

}

fwrite(pfirst,sizeof(SCH),10,fp);

fclose(fp);

printf("文件已经成功保存");

}

main()

{

system("cls");

printf(" 运动会分数统计");

printf("输入学校数目 (x>= 5):");

scanf("%d",&nsc);

printf("输入男选手的项目(x<=20):");

scanf("%d",&msp);

printf("输入女选手项目(<=20):");

scanf("%d",&wsp);

ntsp = msp + wsp;

phead = calloc(ntsp,sizeof(int));

pafirst = phead;

pasecond = phead;

input();

calculate();

output();

Save();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值