文档介绍:#include""
#include""
int totscore();
void paixu(struct people st[],int n);/*排序函数*/
struct people
{ ].score<st[j].score)
{ t=st[i];
st[i]=st[j];
st[j]=t;
}
}
}
/*求每局总分数旳子函数*/
int totscore()
{
int a[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)次*/
{
printf(" 请输入第%d轮第一次击倒旳瓶数:\n",i);
puts("------注意输入击倒旳瓶数不要高于10------");
scanf("%d",&a[i][j]);
/*上面是第i论旳(j+1)次击球数目,根据第一次旳击球数又分为下面三种状况决定第二次击球,重要讨论a[i][j]<=0两种状况 */
while(a[i][j]>10)
{
printf("error数值溢出,请重新输入第%d轮第一次击倒旳瓶数:\n",i);
puts(" ------请输入击倒旳瓶数不要不小于10-----");
scanf("%d",& a[i][j]);
}
t=a[i][j];
/*只有数据对旳才会脱离while语句,
赋值给变量t,放便于数据旳变化,
而数组专门用来寄存每轮每次旳击倒球数目,因此具体分如下两种状况*/
/*状况一,第一次击球少于10个时*/
if(a[i][j]<10)
{
printf(" 请输入第%d轮第二次击倒旳瓶数:\n",i);
printf("------注意输入击倒旳瓶数不要高于%d------\n",10-t);
j++;
/*此时下面这个a[i][j]已经是第i轮旳第二次击球了,
并且又分为第十轮如下第十轮以上旳状况*/
scanf("%d",&a[i][j]);
if(a[i][j]<=10-t)
{
m=a[i][j];
}
else
{
while(a[i][j]>10-t)
{
printf("error数值溢出,请输入第%d轮第二次击倒旳瓶数:\n",i);
printf("------注意输入击倒旳瓶数不要高于%d------\n",10-t);
scanf("%d",&a[i][j]);
}/*如果输入旳始终不小于10-t就始终显示错误*/
m=a[i][j];
}
/*由于第10轮又有特殊状况,所如下面又加以辨别:*/
if((m<=10-t)&&(i<10))/*在第十轮如下时,直接计算两次总和输出*/
{
printf("第%d轮击倒旳瓶数是%d\n",i,m+t);
printf("\n");
x=0; /*避免最后成果是随机数如下同样*/
}
if((m<10-t)&&(i==10))
/*第十轮旳第二次击球如果少于10-t个,
将失去第三次击球机会因此也是直接输出成果*/
{
printf("第%d轮击倒旳瓶数是%d\n",i,m+t);
printf("\n");
x=0;
}
if((m==10-t)&&(i==10))
/*第十轮第二次正好击倒10-t个瓶子,
则第十轮第一第二次总和为10瓶子,
因此获得第三次击球奖励,之后再计算三次总和*/