请大家帮忙解释一下下面的c语言代码。
此代码为“保龄球记分程序"
代码如下
#include <stdio.h>
#define N 13
struct { int n: /* 一轮内滚球次数 */
int f; /* 第一轮击倒柱数 */
int s; /* 第二次击倒柱数 */
int score; /* 本轮得分 */
int total; /* 至本轮累计总分 */
int m; /* 完成本轮得分计算, 还需要滚球次数 */
} s[N];
int ok = 0; /* 已完成完整计算的轮次数 */
int ball(int i, int n, int max) /* 完成一次滚球, 输入正确击倒柱数 */
{ if (i<= 10)
printf("输入第%d轮的第%d次滚球击倒柱数"), (<=%d)\n",i,n,max);
else
printf("输入附加的第%d次滚球击倒柱数"),(<=%d)\n",c++,max);
scanf("%d", &d);
if (d>=0 && d<=max) break;
printf("不合理的击倒柱数, 请重新输入, \n");
}
if ( OK< c-1)
{ /* 对以前未完成计算的轮次分别计算得分与累计总分 */
for (j = ok+1; j<i/j<=i-1; j++)
{a[j].scre+=d;
if (--a[j].m==0)
{a[j]. total = (j>i?a[j-1].total(:0/)j==1?0;a[j-1].total)+a[j].score;ok=j/ok+1;}
}
}
return d;
}
main0
{int i,/*轮次 */ first.second k;
for(i=1; ok<10;i++)
{ /*处理第一次滚球 */
a[i].score = a[i].f=first = ball(i,1,10);
if (first==10) a[i].m=2;
a[i].n=1;
if (first<10 && (i <=10 || i==11 && ok<10))
{ /*处理第二次滚球 */
a[i].score+=a[i]. s=score=ball(i,2,10-first);
if(first+second==10) a[i].m=1;
a[i].n++/a[i].n=a[i].n+1/a[i].n=2
}
if (i <=10 && first <10 && first+second < 10)
{ a[i].total = (i>1 ? a[i-1].total:0)+a[i].score;
ok=1;
}
printf("各轮第一次得分");
for(k=1; k<=i; k++) printf("%5d",a[k].f);
printf("\n各轮第二次得分");
for(k=1; k<= i; k++)
if (a[k].n<2) printf(" /");else printf("%5d", a[k].s);
printf("\n 各轮得分 ");
for (k=1; k<= ok; k++) printf("%5d", a[k].score);
printf("\n 累计总分 ");
for(k=1; k <= ok; k++) printf("%5d", a[k].total);
printf("\n\n");
}
}
要求:逐行解释。
注:如果觉得此程序不够简练,或有错误!可以提交你的程序并附之于逐行解释,多谢啦!
a[j]. total = (j>i?a[j-1].total(:0/)j==1?0;a[j-1].total)+a[j].score;ok=j/ok+1;}
a[i].n++/a[i].n=a[i].n+1/a[i].n=2 //错误
那位大侠能指教一下 这两句指令错在那里么!因为是论文题目,小弟急需!万分感谢!
次程序可能并不完善,需要根据如下题目改善此程序!麻烦那位大侠能帮忙看看程序那里有问题!!!!万分感谢
附上程序题目:
"1)若某一轮的第一次滚球就击倒全部十个球,则本轮不再滚球(若是第十轮则还需另加两次滚球)该轮得分为本次击倒球数10 与以后两次滚球所击倒球数之和.
2)若某一轮的第一次滚球未击倒十个球,则可对剩下未倒的球再滚球一次,如果这两次滚球击倒全部十个球,则本轮不再滚球(若是第十轮还需再加一次滚球),该轮得分为这两次共击倒球数10 与以后一次滚球所击倒球数之和.
3)若某一轮两次滚球未击倒全部十个球,则本轮不再急需滚球,该轮得分为这两次滚球击倒的球数之和.
总之,若一轮中一次滚球或两次滚球击倒十个球,则本轮得分是本轮首次滚球开始的连续三次滚球击倒球数之和(其中有一次或两次不是本轮滚球),若一轮内二次滚球击倒球数不足十个,则本轮得分即为这两次击倒球数之和."
求C语言代码解释(保龄球记分程序)
include <stdio.h> \/\/包含基本输入输出头文件 define N 13 \/\/宏定义13为N(N就是数字13)struct { int n: \/* 一轮内滚球次数 *\/ int f; \/* 第一轮击倒柱数 *\/ int s; \/* 第二次击倒柱数 *\/ int score; \/* 本轮得分 *\/ int total; \/* 至本轮累计总分 *\/ int m; \/* 完成...
c语言编程:保龄球问题
问题描述:用c语言实现保龄球的计分程序。保龄球:每一局共有10小格,每格可有两次投球机会.击倒的瓶数,即为其分数,满分为10分;定义设每格击球的数据结构为:struct strike {int first:int second;struct strike*next;} 按要求完成程序:1)编写函数creat(void)建立一个包含11格击球组成的单向...
求懂C语言的高手大虾
保龄球是用一个滚球去打击十个站立的柱,将柱击倒.一局分十轮.每轮可滚球一次或多次,以击倒的柱数为依据计分,一局得分为十轮得分之和,而每轮的得分不仅与本轮滚球的情况有关.还可能与后续一两轮的滚球情况有关,既,某论某次滚球击倒的柱数不仅要计入本轮得分,还可能会计入前一两轮得分.具体的...
保龄球计分代码
每一局共有10个瓶子,击倒一个瓶子得1分。若第1局到第9局的第一个球击倒10个瓶子(全倒),则跳入下一局,不需要打第2个球。若第10局的第1个球击倒10个瓶子,或者第10局的2个球加起来击倒10个瓶子(补中),则第10局可以打第3个球。保龄球10局最少打11个球,最多打21个球。计分方式若...
跪求一保龄球C语言程序
一局(GAME)保龄球分为10格,每格里有两次投球机会,如在第一次投球时全中,就有需要投第二球。每一格可能出现三种情况:1.失球(MISS)无论何种情况,在一格的两次投球时,未能击倒10个瓶,此格的分数为击倒的瓶数,未击中用一个(-)符号表示。2.补中(SPARE)当第二次投球击倒该格第一球余下的全部瓶子...
c语言编程:保龄球问题
int first;int second;struct strike *next;};struct strike *creat(){ struct strike *head;struct strike *p;struct strike *last;int n=0;while(n++<11){ p=(struct strike*)malloc(sizeof(struct strike));if(head=NULL)head=p;else last->next=p;last=p;} return head;} void set...
...帮我解释一下这个程序的意思,要详细。保龄球计分系统里的一段代码...
有点意思。。。
保龄球计分程序的时间复杂度
保龄球的计分不难,每一局总共有十格,每一格里面有两球,共有十支球瓶,我们要尽量在两球之内把球瓶全部击倒,如果第一球就把全部的球瓶都击倒了,也就是“STRIKE”,画面出现“X”,就算完成一格了,所得分数就是10分再加下一格两球的倒瓶数,但是如果第一球没有全倒时,就要再打一球了,...
c语言保龄球分数计算系统
这么麻烦的题目,你给的分数太少了, 哈哈, 你要是追加50以上分 我就写。 这系统做出来都能当成品了,我说的没错吧。
关于保龄球分数算法
关于这个保龄球得分的算法程序,楼主可以去这个网页参考一下:http:\/\/zhidao.baidu.com\/question\/8326550.html?fr=qrl3 虽然不能全部解决你的问题,但是多少提供了些参考.