保龄球积分c语言程序,C语言保龄球积分.doc

C语言保龄球积分

题目:保龄球计分

【问题描述】打保龄球是用一个滚球去撞击10个站立的瓶,将瓶击倒。一局分10 轮,每轮可滚球1?次或多次,以击到的瓶数为依据计分,一局得分为10轮得分之和,而每轮的得分不仅与本轮的滚球情况有关,还可能与后一轮或两轮的滚球情况有关,即:某轮某次滚球击倒的瓶数不仅要计入本轮得分,还可能会计入前一轮或两轮得分。计分规则如下:

若某一轮的第一次滚球就击倒全部10个瓶,则本轮不再滚球(若是第10轮还需加2次滚球),该轮得分为本次击倒瓶数10与以后2次滚球所击倒瓶数之和。

若某一轮的第一次滚球未击倒全部10个球,则对剩下未击倒的瓶再滚球一次,如果这2次滚球击倒全部10个瓶,则本轮不再滚球(若是第10轮还需加1次滚球),该轮得分为这2次击倒瓶数10与以后1次滚球所击倒瓶数之和。

若某一轮2次滚球未击倒全部10个瓶,则本轮不在滚球,该轮得分为这2次滚球所击倒瓶数之和。

【实现提示】

模拟10个人各打一局保龄球比赛过程,统计每局各轮得分和累计总分。

逐人逐轮逐次输入一次滚球击倒的瓶数。

对10人的得分由低到高排序并显示。

最后,把排序的存入文件中。

代码:

/* Note:Your choice is C IDE */

#include "stdio.h"

#include "string.h"

#include "stdlib.h"

void main()

{

FILE *fp;

int sum1(int *k);

int sum2(int *k);

int a[10][10][2];

int sum[10][10];

int sum_person[10]={0,0,0,0,0,0,0,0,0,0};

int i,j,n,p;

int b[10]={1,2,3,4,5,6,7,8,9,10},c;

int *p1,*p2;

char g[20],f[20],h[1];

char str1[]={"As the rank and the score of each player shown below :\n"};

char str2[]={"RANK"};

char str3[]={"NO."};

char str4[]={"SCORE"};

char str5[]={" "};

for (n=0;n<=9;n++) /*一局内,输入每轮每次击打保龄球个数,保存到a[n][i][j]*/

{

for (i=0;i<=9;i++)

{

for(j=0;j<=1;j++)

{

printf("请输入%d号选手第%d轮第%d次保龄球击打个数:",n+1,i+1,j+1);

scanf("%d",&a[n][i][j]);

if (a[n][i][0]==10)

{

a[n][i][1]=0;break;

}

}

}

}

for (n=0;n<=9;n++) /*统计每人每局每轮得分,并相应赋值到sum_person[n],sum[n][i]*/

{

for (i=0;i<=9;i++)

{

p1=&a[n][i][0];p=*p1+*(p1+1);

switch(i)

{

case 0:

case 1:

case 2:

case 3:

case 4:

case 5:

case 6:

case 7:

if (*p1==10)

sum[n][i]=sum1(p1);

else if (p==10)

sum[n][i]=sum2(p1);

else

sum[n][i]=p;

break;

case 8:

if (*p1==10||p==10)

sum[n][i]=sum2(p1);

else

sum[n][i]=p;break;

case 9:

sum[n][i]=p;break;

}

}

p2=&sum[n][0];

for (j=0;j<=9;j++)

sum_person[n]= sum_person[n]+(*(p2+j));

}

for (i=0;i<=9;i++) /*十个选手得分排名*/

{

for (n=i;n<=9;n++)

{

if (sum_person[n]>sum_person[i])

{c=sum_person[n];

sum_person[n]=sum_person[i];

sum_person[i]=c;

c=b[n];

b[n]=b[i];

b[i]=c;

}

}

}

/*成绩输出到D:\\work\\bowling-grade.txt文件

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,以下是一个简单的打保龄球C语言程序设计: ```c #include <stdio.h> int main() { int score[10]; // 存储每一局数 int total_score = 0; // 总数 int i, j; // 输入每一局数 for (i = 0; i < 10; i++) { printf("请输入第%d局的数:", i+1); scanf("%d", &score[i]); } // 计算总数 for (i = 0; i < 10; i++) { total_score += score[i]; // 如果是第10局,则考虑加赛的情况 if (i == 9) { if (score[i] == 10) { // 如果第10局是全中,则可以再投两次 printf("请再投一次:"); scanf("%d", &j); total_score += j; printf("请再投一次:"); scanf("%d", &j); total_score += j; } else if (score[i] + score[i-1] == 10) { // 如果第10局是补中,则可以再投一次 printf("请再投一次:"); scanf("%d", &j); total_score += j; } } else { if (score[i] == 10) { // 如果这一局是全中,则加上下两局的数 total_score += score[i+1]; total_score += score[i+2]; } else if (score[i] + score[i+1] == 10) { // 如果这一局是补中,则加上下一局的第一次投的数 total_score += score[i+2]; } } } printf("总数为:%d", total_score); return 0; } ``` 这个程序会要求用户输入每一局数,然后计算总数。如果最后一局是全中,则会让用户再投两次;如果是补中,则会让用户再投一次。注意,这个程序没有做输入合法性的检查,实际使用时需要加上。 ### 回答2: 保龄球是一种有趣的运动,我们可以用C语言来编写一个简单的保龄球程序。首先,我们需要定义一些变量来表示比赛的相关信息,比如玩家的姓名,每轮等等。 首先,我们可以定义一个结构体来存储玩家的姓名和每轮的得: ```c struct Player { char name[50]; int scores[10]; }; ``` 然后,我们可以定义一个函数来计算每轮的得。根据保龄球规则,如果在一轮中击倒了全部的10个瓶,那么这一轮的得就是10,并且这一轮的得会加上接下来两轮中每击倒瓶的数量。否则,如果在第一轮中就击倒了全部的瓶,那么这一轮的得是10加上下一轮中击倒瓶的数量。如果未击倒全部瓶,得就是本轮中击倒的瓶数。 ```c int calculateScore(int round, int knockedPins) { int score = knockedPins; if (round < 9) { if (knockedPins == 10) { score += knockedPins // 加上下两轮的得 } else { score += knockedPins + knockedPins // 加上下一轮的得 } } return score; } ``` 接下来,我们可以编写主函数来实现整个游戏的逻辑。首先,我们可以创建一个玩家数组来存储多个玩家的信息。然后,我们可以使用循环来模拟每一轮的比赛过程,并根据玩家的输入来获取每一轮的得。最后,我们可以计算每个玩家的总得并输出结果。 ```c #include <stdio.h> int main() { int numOfPlayers; printf("请输入参与比赛的玩家数量:"); scanf("%d", &numOfPlayers); struct Player players[numOfPlayers]; for (int i = 0; i < numOfPlayers; i++) { printf("请输入玩家%d的姓名:", i+1); scanf("%s", players[i].name); for (int j = 0; j < 10; j++) { printf("请输入玩家%d第%d轮的得:", i+1, j+1); scanf("%d", &players[i].scores[j]); } } for (int i = 0; i < numOfPlayers; i++) { int totalScore = 0; for (int j = 0; j < 10; j++) { totalScore += calculateScore(j, players[i].scores[j]); } printf("玩家%s的总得为:%d\n", players[i].name, totalScore); } return 0; } ``` 这样,我们就完成了一个简单的保龄球C语言程序。用户可以输入参与比赛的玩家数量以及每个玩家每轮的得程序会计算每个玩家的总得并输出结果。当然,这只是一个简单的示例,实际的保龄球程序可以更加复杂和完善。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值