打保龄球是用一个滚球去撞击10个站立的瓶,将瓶击倒。一局分10 轮,每轮可滚球1 次或多次,以击到的瓶数为依据计分,一局得分为10轮得分之和,而每轮的得分不仅与本轮的滚球情况有关,还可能与后一轮或两轮的滚球情况有关,即:某轮某次滚球击倒的瓶数不仅要计入本轮得分,还可能会计入前一轮或两轮得分。计分规则如下
若某一轮的第一次滚球就击倒全部10个瓶,则本轮不再滚球(若是第10轮还需加2次滚球),该轮得分为本次击倒瓶数10与以后2次滚球所击倒瓶数之和。
若某一轮的第一次滚球未击倒全部10个球,则对剩下未击倒的瓶再滚球一次,如果这2次滚球击倒全部10个瓶,则本轮不再滚球(若是第10轮还需加1次滚球),该轮得分为这2次击倒瓶数10与以后1次滚球所击倒瓶数之和。
若某一轮2次滚球未击倒全部10个瓶,则本轮不在滚球,该轮得分为这2次滚球所击倒瓶数之和。
源文件:
#include\#include\
void li(int a[11][11]); int qiu();
void paixu(struct people st[],int n); /*定义结构体存储人和其对应的分数*/ struct people { int num; int score; };
void main() { FILE *fp; int i,n;
struct people st[80]; puts(\请输入总人数:\ scanf(\
for(i=0;i printf(\请输入第%d人击倒的瓶数\\n\ st[i].num=i+1; st[i].score=qiu(); } for(i=0;i { printf(\第%d人击倒的瓶数是:%d\ printf(\ } /*将存储后的数据排序*/ paixu(st,n); puts(\排序=============================================\ for(i=0;i { printf(\第]人击倒瓶的总数是]\ printf(\ } /*排序后的结果存储到binbin.txt*/ if((fp=fopen(\ { puts(\不能打开文件======\ exit(0); } for(i=0;i fprintf(fp,\第%d人击倒瓶的总数是]\\n\ } fclose(fp); } /*排序子函数2*/ void paixu(struct people st[],int n) { int i,j; struct people t; for(i=0;i if(st[i].score>st[j].score) { t=st[i]; st[i]=st[j]; st[j]=t; } } } /*求每局总分数的子函数2*/ int qiu() { 2 后 int a[19][8],i,j,t,m,q,w,x,sum=0,k,y=0,Q=0,p; for(i=1;i<=10;i++) { for(j=0;j<1;) { printf(\请输入第%d轮第一次击倒的瓶数\\n\ puts(\注意输入击倒的瓶数不要高于10-------------\ scanf(\ t=a[i][j]; /*此阶段分为三中情况1.a[i][j]<10 2.a[i][j]==10 3.a[i][j]>10显然这是情形一*/ if(a[i][j]<10) { printf(\请输入第%d轮第二次击倒的瓶数\\n\ printf(\注意输入击倒的瓶数不要高于%d--------------\\n\ j++; scanf(\ if(a[i][j]<=10-t) { m=a[i][j]; } else { while(a[i][j]>10-t) { printf(\错误!!!请输入第%d轮第二次击倒的瓶数\\n\ printf(\注意输入击倒的瓶数不要高于%d-----------\\n\ scanf(\ } m=a[i][j]; } 3 if((a[i][j]<=10-t)&&(i<10)) { printf(\该轮击倒的瓶数是%d\\n\ x=0; } if((a[i][j]<10-t)&&(i==10)) { printf(\该轮击倒的瓶数是%d\\n\ x=0; } if((a[i][j]==10-t)&&(i==10)) { puts(\请再次输入一次击倒的瓶数\ puts(\输入击倒的瓶数不要大于10----------\ scanf(\ if(k<=10) x=k;/*引入K便于最后总分的计算, 因为前两次的可以方便用数组a[i][j]存贮二此次不可在用数组存储, 否则步利于总分的计算*/ else { while(k>10) { puts(\再次输入一次击倒的瓶数\ printf(\输入击倒的瓶数不要大于10------------\ scanf(\ } x=k; } printf(\该轮击倒的瓶数是%d\\n\ } } /* 情形2*/ if(a[i][j]==10) { if(i==10) { puts(\输入额外的第一次击倒的瓶数:\ puts(\注意输入击倒的瓶数不要高于10 ----------\ 4