6-保龄球计分管理系统 下载本文

打保龄球是用一个滚球去撞击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