PAGE
PAGE 1
#include"stdio.h"
#include"stdlib.h"
inttotscore();
voidpaixu(structpeoplest[],intn);/*排序函数*/
structpeople
{intnum;
intscore;
};/*定义结构体存储人和其对应的分数*/
intK=1;
voidmain()
{
intJ;
printf("第%d局比赛成绩录入:\n",K);
printf("\n");
FILE*fp;/*FILE*fp是声明,声明fp是指针,用来指向FILE类型的对象*/
inti,n;/*n是参加比赛人数*/
structpeoplest[80];
puts("请输入总人数:");
scanf("%d",&n);
for(i=0;i
{
printf("请输入第%d人击倒的瓶数\n",i+1);
st[i].num=i+1;
st[i].score=totscore();/*引用结构体元素的形式a[i].b*/
}
for(i=0;i
{printf("\n");
printf("第%d人击倒的瓶数是:%d\n",st[i].num,st[i].score);
printf("\n");
}
/*将存储后的数据排序*/
paixu(st,n);
puts("======================排序后========================");
printf("\n");
printf("第%d局的比赛结果排序情况:\n",K);
printf("排名\t选手\t得分\n");
printf("\n");
for(i=0;i
{printf("第%d名\t第%d人\t%d\n",i+1,st[i].num,st[i].score);
printf("\n");
}
/*排序后的结果存储到Result.txt*/
if((fp=fopen("Result.txt","a+"))==NULL)
{
puts("====不能打开文件====");
exit(0);
}
/*intfprintf(FILE*stream,constchar*format,...);
fprintf()函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件.fprintf()只能和printf()一样工作.fprintf()的返回值是输出的字符数,发生错误时返回一个负值.*/
fprintf(fp,"以下是第%d局比赛结果的排名:",K);
fprintf(fp,"\n");
fprintf(fp,"排名\t选手\t得分\n");
for(i=0;i
{
fprintf(fp,"第%d名\t第%d人\t%d\n",i+1,st[i].num,st[i].score);
fprintf(fp,"\n");
}
fclose(fp);
K++;
printf("是否继续录入下一局数据?1/0");
printf("\n");
scanf("%d",&J);
while((J!=1)&&(J!=0))
{
printf("输入错误,请重新输入:1/0?");
scanf("%d",&J);
}
printf("\n");
printf("\n");
if(J==1)
{
main();
}
else
{system("Result.txt");
system("pause");/*使输出窗口暂停*/
}
}
/*排序子函数,实现以总分为标准,将结构体成员按分数降序排列*/
voidpaixu(structpeoplest[],intn)
{inti,j;
structpeoplet;/*声明中间量t也是结构体*/
for(i=0;i
for(j=i+1;j
{
if(st[i].score
{t=st[i];
st[i]=st[j];
st[j]=t;
}
}
}
/*求每局总分数的子函数*/
inttotscore()
{
inta[19][5],i,j,t,m,k,x,q,w,sum=0,y=0,r=0,p=0;
/*i控制第几轮数目,j控制第几次数目,t为寄存第一次击倒瓶子数变量,m为第二次击倒瓶子数变量,k为第十轮第三次击倒瓶子数目变量,x为寄存k的变量,最后要t+m+x统计第十轮总数*/
for(i=1;i<=10;i++)
{
for(j=0;j<1;)/*用i表示第i轮,j表示第i轮的第(j+1