c语言程序设计--保龄球计分系统-绝对可用-完美测试

上传人:日度 文档编号:146168052 上传时间:2020-09-27 格式:DOC 页数:7 大小:32KB
返回 下载 相关 举报
c语言程序设计--保龄球计分系统-绝对可用-完美测试_第1页
第1页 / 共7页
c语言程序设计--保龄球计分系统-绝对可用-完美测试_第2页
第2页 / 共7页
c语言程序设计--保龄球计分系统-绝对可用-完美测试_第3页
第3页 / 共7页
c语言程序设计--保龄球计分系统-绝对可用-完美测试_第4页
第4页 / 共7页
c语言程序设计--保龄球计分系统-绝对可用-完美测试_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《c语言程序设计--保龄球计分系统-绝对可用-完美测试》由会员分享,可在线阅读,更多相关《c语言程序设计--保龄球计分系统-绝对可用-完美测试(7页珍藏版)》请在金锄头文库上搜索。

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; puts(-请输入总人数

2、:);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(第%d局的比赛结果排序情况:n,K)

3、; printf( 排名t 选手t 得分n); printf(n); for(i=0;in;i+) printf(第%d名t 第%d人t %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()函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件. fpr

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

5、输入错误,请重新输入: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=sti; sti=stj; stj=t;

6、/*求每局总分数的子函数*/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-); scanf(%d,&aij);/*上面是第i论的(j

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

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

9、; /*防止最后结果是随机数以下一样*/ if(m10-t)&(i=10)/*第十轮的第二次击球如果少于10-t个,将失去第三次击球机会所以也是直接输出结果*/ printf(第%d轮击倒的瓶数是%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) puts(error数据溢出,请再次输入一次击倒的瓶数:); p

10、rintf(-输入击倒的瓶数不要大于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(error数据溢出,请重新输入第一次额外击倒的瓶数:); puts( -请输入击倒的瓶数不要大于10-); scanf(%d,&w); if(w=10) y=w; if(y=10) puts( 输入第二次额外击倒的瓶数!); puts( -请输入击倒的瓶数不要大于10-); scanf(%d,&p);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号