苹果升级ios11公测版:C语言里,保龄球问题

来源:百度文库 编辑:高考问答 时间:2024/04/30 13:30:49
先进行数据分析,算法分析画出N-S图,然后编写程序并上机运行,打印源程序并输出结果。
在保龄球比赛中,已知每次击球的球数,计算在一局比赛中一个人的得分,要求计算出每一轮的得分和每一轮之后的累计得分,比赛一共10轮,前9轮每轮最多滚两次球,第10轮可以滚两次或3次球,计分规则如下:
(1) 如果一轮中每个球击倒全部10个球,成为(好球)。则这一轮得分等于10加上下两次击中球的个数。
(2) 如果一轮中两个球击倒全部10个球,称为(成功)。则这一轮得分等于10加上下一次击中球的个数。
(3) 如果一轮中两个球击倒的球的个数少于10个,则称为(平常)则这以轮的得分等于击倒的球的总只数。

比如
第一轮 第一次 击球数10 第二次 不用
第二轮 第一次 击球数9 第二此 1
第三轮 第一次 击球数7 第二此 2
……
那么第一轮得分等于10+9+1 第二轮得分10+7 第三轮得分 7+2………………

可以帮忙编写出程序么。。。。同学让我帮他写,自己看了一下,好像有点难度,时间又比较急,我最近自己也忙着考试,所以求助于论坛上的大虾了。。不好意思。。。谢谢了,希望各位大虾可以抽空帮我写一下。。
我想是一轮一轮的输,第一轮输入10就可以直接进入第二轮,第二轮第一次是9,就再进行第二次,第二次无论是否把余下的一球打中都进入第三轮……

我觉得应该是循环输入吧。。总共循环10次,一次循环再分为两次(前九轮)或三次(第十轮)

以下程序已通过调试^_^
楼主可以自己用数据试试

/*保龄球输入:按分数个个输入,比如:第一轮:10,第二轮:9和1,第三轮:7和2……于是输入:10 9 1 7 2……*/
/*输出:每轮得分一个数,比如:20 17 9……*/

#include <stdio.h>
#include <string.h>
int main()
{
int a[10],b[10],c[10];
/*a[]用来记每轮得分,b[]用来记每轮得到的奖励次数,c[]用来记每轮的最多击球次数(其实就是最后一轮为3)*/
int i,j,k,x;
/*初始化*/
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for (i=0;i<9;i++) c[i]=2;
c[i]=3;
/*输入*/
for (i=0;i<10;i++)
{
/*每轮的数据输入*/
for (j=0;j<c[i]&&a[i]<10;j++)
{
scanf("%d",&x);
a[i]+=x;
/*奖励分*/
for (k=2;k>0;k--)
if (b[i-k]) {b[i-k]--;a[i-k]+=x;}
}
/*记录每轮的奖励次数*/
if (a[i]==10)
{
if (j==1) b[i]=2;
else b[i]=1;
}
}
/*输出每轮总分数*/
for (i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
}