




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#include"stdio.h"#include"stdlib.h"int 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
2、,n;/*n是参加比赛人数*/ struct people st80; puts("-请输入总人数:");scanf("%d",&n); for(i=0;i<n;i+)/*完成一一对应的存储过程*/ printf(" 请输入第%d人击倒的瓶数n",i+1); sti.num=i+1; sti.score= totscore();/*引用结构体元素的形式ai.b*/ for(i=0;i<n;i+)/*输出没有排序前的数据结果*/ printf("n"); printf("第%d人击倒的瓶
3、数是:%dn",sti.num,sti.score); printf("n"); /*将存储后的数据排序*/ paixu(st,n); puts("=排序后="); printf("n"); printf("第%d局的比赛结果排序情况:n",K); printf(" 排名t 选手t 得分n"); printf("n"); for(i=0;i<n;i+) printf("第%d名t 第%d人t %dn",i+1,sti.num,sti.sco
4、re); printf("n"); /*排序后的结果存储到Result.txt */ if(fp=fopen("Result.txt","a+")=NULL) puts("=不能打开文件="); exit(0); /* int fprintf( FILE *stream, const char *format, . );fprintf()函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件. fprintf()只能和printf()一样工作. fprintf()的返回值是输出的字符数,
5、发生错误时返回一个负值. */ fprintf(fp,"以下是第%d局比赛结果的排名:",K); fprintf(fp,"n"); fprintf(fp," 排名t 选手t 得分n"); for(i=0;i<n;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&q
6、uot;);scanf("%d",&J);while(J!=1)&&(J!=0)printf("输入错误,请重新输入:1/0 ?");scanf("%d",&J);printf("n");printf("n");if(J=1)main();elsesystem("Result.txt");system("pause"); /*使输出窗口暂停*/*排序子函数,实现以总分为标准,将结构体成员按分数降序排列*/void paixu
7、(struct people st,int n) int i,j; struct people t;/*声明中间量t也是结构体*/ for(i=0;i<n-1;i+) for(j=i+1;j<n;j+) if(sti.score<stj.score)t=sti; 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的变
8、量,最后要t+m+x统计第十轮总数*/ for(i=1;i<=10;i+) for(j=0;j<1;)/*用i表示第i轮,j表示第i轮的第(j+1)次*/ printf(" 请输入第%d轮第一次击倒的瓶数:n",i); puts("-注意输入击倒的瓶数不要高于10-"); scanf("%d",&aij);/*上面是第i论的(j+1)次击球数目,根据第一次的击球数又分为下面三种情况决定第二次击球,主要讨论aij<=0两种情况 */ while(aij>10) printf("error数值溢出
9、,请重新输入第%d轮第一次击倒的瓶数:n",i);puts(" -请输入击倒的瓶数不要大于10-");scanf("%d",& aij); t=aij; /*只有数据正确才会脱离while语句,赋值给变量t,放便于数据的变化,而数组专门用来存放每轮每次的击倒球数目,所以具体分以下两种情况*/*情况一,第一次击球少于10个时*/ if(aij<10) printf(" 请输入第%d轮第二次击倒的瓶数:n",i); printf("-注意输入击倒的瓶数不要高于%d-n",10-t); j+;/*
10、此时下面这个aij已经是第i轮的第二次击球了,并且又分为第十轮以下第十轮以上的情况*/ scanf("%d",&aij); if(aij<=10-t) m=aij; else while(aij>10-t) printf("error数值溢出,请输入第%d轮第二次击倒的瓶数:n",i); printf("-注意输入击倒的瓶数不要高于%d-n",10-t); scanf("%d",&aij); /*如果输入的一直大于10-t就一直显示错误*/ m=aij; /*由于第10轮又有特殊情况,所
11、以下面又加以区分:*/ if(m<=10-t)&&(i<10)/*在第十轮以下时,直接计算两次总和输出*/ printf("第%d轮击倒的瓶数是%dn",i,m+t);printf("n");x=0; /*防止最后结果是随机数以下一样*/ if(m<10-t)&&(i=10)/*第十轮的第二次击球如果少于10-t个,将失去第三次击球机会所以也是直接输出结果*/ printf("第%d轮击倒的瓶数是%dn",i,m+t);printf("n");x=0; if(m=1
12、0-t)&&(i=10)/*第十轮第二次正好击倒10-t个瓶子,则第十轮第一第二次总和为10瓶子,所以获得第三次击球奖励,之后再计算三次总和*/ puts(" 请再次输入一次击倒的瓶数"); puts("-输入击倒的瓶数不要大于10-"); scanf("%d",&k); if(k<=10) x=k;/*引入K便于最后总分的计算, 因为只是希望数组aij存储两次的击球数目, 否则不利于总分的计算*/ else while(k>10) puts("error数据溢出,请再次输入一次击倒的瓶数
13、:"); 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("-注意
14、输入击倒的瓶数不要高于10 -"); scanf("%d",&w); while(w>10) puts("error数据溢出,请重新输入第一次额外击倒的瓶数:"); puts(" -请输入击倒的瓶数不要大于10-"); scanf("%d",&w); if(w<=10) y=w; if(y=10) puts(" 输入第二次额外击倒的瓶数!"); puts(" -请输入击倒的瓶数不要大于10-"); scanf("%d"
15、,&p); if(p<=10) r=p;/*引入 r的作用与引入k的作用是一样的,便于计算总分*/ else while(p>10) puts("error数据溢出,请输入第二次额外击倒的瓶数:"); puts(" -请输入击倒的瓶数不要大于10-"); scanf("%d",&p); r=p;x=0;/*防止最后结果是随机数*/ else/*是y=w<=10的<10情况,即是第一次额外击球不够10个,这里第二次就是把剩下的进行击球*/ puts(" 输入第二次额外击倒的瓶数!&quo
16、t;); printf(" -请输入击倒的瓶数不要大于%d的分数!-n",10-y); scanf("%d",&p); if(p<=10-y) r=p; else while(p>10-y) puts(" 输入第二次额外击倒的瓶数!"); printf(" -请输入击倒的瓶数不要大于%d的分数!-n",10-y); scanf("%d",&p); r=p; x=0;/*避免计算结果时产生随机数*/ printf("第%d轮击倒的瓶数是%dn",i,10+y+r); printf("n"); printf("n"); j+; aij=0; if(i<10) /*如果第十轮之前的第一次击球已经10个,直接到省去二次击球*/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 助理广告师试题及答案轻松掌握
- 广告设计师产品包装设计考题及答案
- 如何在设计项目中实现价值回报试题及答案
- 2024年设计基础知识国际商业美术设计师考试试题及答案
- 学校党务技能大赛课件
- 探讨纺织品国际标准对考试的指导意义试题及答案
- 2024年纺织工程师的复习指南试题及答案
- 助理广告师考试多媒体传播的创新实践试题及答案
- 2024年纺织品设计师证书考试细节试题及答案
- 保育员在线试题及答案
- 《甲烷吸附储存技术》课件
- 2025物业管理服务承包合同范本
- 企业所得税课件
- 2025年高考政治核心知识总结
- 18 井冈翠竹 课件
- 脊柱损伤的临床表现与急救处理
- 现金盘点表完整版
- 2021年苏州资产管理有限公司招聘笔试试题及答案解析
- 北票市沙金沟金矿地质调查总结
- 社会组织管理概论全套ppt课件(完整版)
- 高中舞蹈《彝族舞蹈-阿细跳月》 课件
评论
0/150
提交评论