c语言程序设计--保龄球计分系统-绝对可用-完美测试_第1页
c语言程序设计--保龄球计分系统-绝对可用-完美测试_第2页
c语言程序设计--保龄球计分系统-绝对可用-完美测试_第3页
c语言程序设计--保龄球计分系统-绝对可用-完美测试_第4页
c语言程序设计--保龄球计分系统-绝对可用-完美测试_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选#includestdio.h#includestdlib.hint totscore();void paixu(struct people st,int n);/* 排序函数 */struct people int num;int score;/* 定义结构体存储人和其对应的分数 */int K=1;void main()int J;printf( 第 %d 局比赛成绩录入: n,K);printf(n);FILE *fp;/* FILE *fp 是声明,声明 fp 是指针,用来指向 FILE 类型的对象 */int i,n;/*n 是参加比赛人数*/struct people st80

2、;puts(请输入总人数:);scanf(%d,&n);for(i=0;in;i+)/* 完成一一对应的存储过程*/printf( 请输入第 %d 人击倒的瓶数 n,i+1);sti.num=i+1;sti.score= totscore();/* 引用结构体元素的形式ai.b*/for(i=0;in;i+)/* 输出没有排序前的数据结果*/ printf(n);printf( 第 %d 人击倒的瓶数是: %dn,sti.num,sti.score);printf(n);/* 将存储后的数据排序*/paixu(st,n);puts(= 排序后 =);printf(n);printf(第局的比赛

3、结果排序情况:n,K);printf( 排名 t 选手 t 得分 n);printf(n);for(i=0;in;i+)printf(第 d 名 t 第 d 人? dn,i+1,sti.num,sti.score);printf(n);/* 排序后的结果存储到 Result.txt */if(fp=fopen(Result.txt,a+)=NULL)puts(= 不能打开文件=);exit(0);/* int fprintf( FILE *stream, const char *format, . );. fprintf() 只能. */fprintf()函数根据指定的format(格式)发送

4、信息(参数)到由stream毓)指定的文件和 printf() 一样工作 . fprintf() 的返回值是输出的字符数 ,发生错误时返回一个负值fprintf(fp, 以下是第 %d 局比赛结果的排名 :,K);fprintf(fp,n);fprintf(fp, 排名 t 选手 t 得分 n);for(i=0;in;i+)fprintf(fp,第d 名? 第d 人? dn,i+1,sti.num,sti.score); fprintf(fp,n);fclose(fp);K+;printf( 是否继续录入下一局数据? 1/0);printf(n);scanf(%d,&J);while(J!=1

5、)&(J!=0)printf( 输入错误,请重新输入: 1/0 ? );scanf(%d,&J);printf(n);printf(n);if(J=1) main();elsesystem(Result.txt);system(pause); /*使输出窗口暂停*/*/* 排序子函数,实现以总分为标准,将结构体成员按分数降序排列void paixu(struct people st,int n) int i,j;struct people t;/* 声明中间量t 也是结构体*/for(i=0;in-1;i+)for(j=i+1;jn;j+)if(sti.scorestj.score) t=st

6、i;sti=stj;stj=t;/* 求每局总分数的子函数*/int totscore()int a195,i,j,t,m,k,x,q,w,sum=0,y=0,r=0,p=0;/*i 控制第几轮数目, j 控制第几次数目, t 为寄存第一次击倒瓶子数变量, m 为第二次击倒瓶子数变量, k 为第十轮第三次击倒瓶子数目变量, x 为寄存 k 的变量,最后要t+m+x 统计第十轮总数*/for(i=1;i=10;i+)for(j=0;j1;)/*用i表示第i轮,j表示第i轮的第(j+1)次*/printf( 请输入第 %d 轮第一次击倒的瓶数 :n,i);puts(注意输入击倒的瓶数不要高于10)

7、;scanf(%d,&aij);/*上面是第i论的(j+1)次击球数目,根据第一次的击球数又分为下面三种情况决定第二次击球,主要讨论aij10)printf(error 数值溢出,请重新输入第 %d 轮第一次击倒的瓶数 :n,i);puts( 请输入击倒的瓶数不要大于10);scanf(%d,& aij);t=aij;/* 只有数据正确才会脱离while 语句,赋值给变量t ,放便于数据的变化,而数组专门用来存放每轮每次的击倒球数目,所以具体分以下两种情况*/* 情况一,第一次击球少于10 个时 */if(aij10)printf( 请输入第 %d 轮第二次击倒的瓶数:n,i);printf(

8、 注意输入击倒的瓶数不要高于 %dn,10-t);j+;/* 此时下面这个aij 已经是第 i 轮的第二次击球了,并且又分为第十轮以下第十轮以上的情况*/scanf(%d,&aij);if(aij10-t)printf(error 数值溢出,请输入第 %d 轮第二次击倒的瓶数:n,i);printf( 注意输入击倒的瓶数不要高于%dn,10-t);scanf(%d,&aij);/* 如果输入的一直大于10-t 就一直显示错误 */m=aij;/* 由于第 10 轮又有特殊情况,所以下面又加以区分: */if(m=10-t)&(i10)/* 在第十轮以下时,直接计算两次总和输出 */ print

9、f(第轮击倒的瓶数是dn,i,m+t);printf(n);x=0; /* 防止最后结果是随机数以下一样*/if(m10-t)&(i=10)/* 第十轮的第二次击球如果少于10-t 个,将失去第三次击球机会所以也是直接输出结果*/printf(第轮击倒的瓶数是dn,i,m+t);printf(n);x=0;if(m=10-t)&(i=10)/* 第十轮第二次正好击倒 10-t 个瓶子,则第十轮第一第二次总和为 10 瓶子,所以获得第三次击球奖励,之后再计算三次总和 */puts( 请再次输入一次击倒的瓶数 );puts(输入击倒的瓶数不要大于10);scanf(%d,&k);if(k10)pu

10、ts(error 数据溢出,请再次输入一次击倒的瓶数:);printf( 输入击倒的瓶数不要大于10);scanf(%d,&k); x=k; printf( 第 %d 轮击倒的瓶数是%dn,i,m+t+x);printf(n);/* 至此情况 1 完毕 */* 情形2,第一次击球就已经够10 个时 */if(t=10)/*t 表示第一次的击球数目,在前面已经有写,这里注释提醒*/if(i=10)/* 第 10论的第一次击球够10个时 */puts( 输入额外的第一次击倒的瓶数: );puts(注意输入击倒的瓶数不要高于 10 );scanf(%d,&w);while(w10)puts(erro

11、r 数据溢出,请重新输入第一次额外击倒的瓶数: );puts( 请输入击倒的瓶数不要大于10);scanf(%d,&w);if(w=10) y=w;输入第二次额外击倒的瓶数! );if(y=10) puts(puts( 请输入击倒的瓶数不要大于 10);scanf(%d,&p);if(p10)puts(error 数据溢出,请输入第二次额外击倒的瓶数: );puts( 请输入击倒的瓶数不要大于10);scanf(%d,&p);r=p;x=0;/* 防止最后结果是随机数 */ else/* 是 y=w=10 的10 情况,即是第一次额外击球不 10 个,这里第二次就是把剩下的进行击球 */put

12、s( 输入第二次额外击倒的瓶数! );printf( 请输入击倒的瓶数不要大于%d 的分数! n,10-y);scanf(%d,&p);if(p10-y)puts( 输入第二次额外击倒的瓶数! );printf( 请 输 入 击 倒 的 瓶 数 不 要 大 于 %d 的 分 数 !n,10-y);scanf(%d,&p);r=p;x=0;/* 避免计算结果时产生随机数*/printf(第 轮击倒的瓶数是 dn”,i,10+y+r);printf(n);printf(n);j+;aij=0;*/if(i10) /* 如果第十轮之前的第一次击球已经 10 个,直接到省去二次击球printf(第 轮击倒的瓶数是 dn,i,aij);p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论