资源描述:
《c语言课程设计-保龄球积分》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、题目:保龄球计分【问题描述】打保龄球是用一个滚球去撞击10个站立的瓶,将瓶击倒。一局分10轮,每轮可滚球1 次或多次,以击到的瓶数为依据计分,一局得分为10轮得分之和,而每轮的得分不仅与本轮的滚球情况有关,还可能与后一轮或两轮的滚球情况有关,即:某轮某次滚球击倒的瓶数不仅要计入本轮得分,还可能会计入前一轮或两轮得分。计分规则如下:①若某一轮的第一次滚球就击倒全部10个瓶,则本轮不再滚球(若是第10轮还需加2次滚球),该轮得分为本次击倒瓶数10与以后2次滚球所击倒瓶数之和。②若某一轮的第一次滚球未击倒全
2、部10个球,则对剩下未击倒的瓶再滚球一次,如果这2次滚球击倒全部10个瓶,则本轮不再滚球(若是第10轮还需加1次滚球),该轮得分为这2次击倒瓶数10与以后1次滚球所击倒瓶数之和。③若某一轮2次滚球未击倒全部10个瓶,则本轮不在滚球,该轮得分为这2次滚球所击倒瓶数之和。【实现提示】①模拟10个人各打一局保龄球比赛过程,统计每局各轮得分和累计总分。②逐人逐轮逐次输入一次滚球击倒的瓶数。③对10人的得分由低到高排序并显示。④最后,把排序的存入文件中。代码:/*Note:YourchoiceisCIDE*/#
3、include"stdio.h"#include"string.h"#include"stdlib.h"voidmain(){FILE*fp;intsum1(int*k);intsum2(int*k);inta[10][10][2];intsum[10][10];intsum_person[10]={0,0,0,0,0,0,0,0,0,0};inti,j,n,p;intb[10]={1,2,3,4,5,6,7,8,9,10},c;int*p1,*p2;charg[20],f[20],h[1];char
4、str1[]={"Astherankandthescoreofeachplayershownbelow:"};charstr2[]={"RANK"};charstr3[]={"NO."};charstr4[]={"SCORE"};charstr5[]={""};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次保龄球击打个数
5、:",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){case0:case1:case2:case3:case4:case5:case6:case7:if(*
6、p1==10)sum[n][i]=sum1(p1);elseif(p==10)sum[n][i]=sum2(p1);elsesum[n][i]=p;break;case8:if(*p1==10
7、
8、p==10)sum[n][i]=sum2(p1);elsesum[n][i]=p;break;case9: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
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文件*/if((fp=fopen("D:\work\bowling-grade.txt","w"))==NULL){prin
10、tf("cantopenfile!");exit(0);}fputs(str1,fp);fputs("",fp);printf("比赛得分与排名如下:");printf("排名:选手:得分:");fputs(str2,fp);fputs(str5,fp);fputs(str3,fp);fputs(str5,fp);fputs(str4,fp);fputs("",fp);for(n=0;n<=9;n++){printf("第%d名:No