乒乓球单打比赛程序模拟
五、编程题(总计40分;其中规范方面分数包含在每题分数中)。
乒乓球单打比赛程序模拟。比赛的双方简称A和B,他们的比赛规则采用: 1, 比赛胜负采用7局4胜制:谁先取得4局胜利就赢得比赛; 2, 每局比分采用11分制: A、如果比赛双方谁获得11分并且领先对方2分或2分以
上,则该局比赛结束,获得11分一方获胜;B、如果一方获得11分,但领先对手
的分数不足2分,则还要继续比赛,直至一方分数领先另一方2分以上,该局比赛
才结束,领先对手2分以上的一方获胜;
3, 发球规则:在比分10比10之前,每人可以连续发球两次,后换发球发球两次;在
比分10比10之后,每人发1次球后换发;
4, 得分方法:每次发球后得分的信息由函数int Shot()获得,如shot返回1则
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示发
球的一方得分,如返回0则表示接球的一方得分;
5, 首局比赛由A先发球,次局比赛由B先发球,依次顺序循环;
程序要求:
1, 请按照上面的规则编写程序,并调用函数Output将结果输出。
其中函数Shot和Output,以及结构体Score_t由题目提供,不得修改。 2,程序要求逻辑清楚、结构良好。
3,程序能够运行,运行结果正确。
4,题意理解不正确扣分。
5,输入文件默认为d:\ scores.txt
附
关于int Shot()函数;
如shot返回1则表示发球的一方得分,
如shot返回0则表示接球的一方得分;
#include
int shot()
{
FILE* fp;
static int nIndex = 0;
static int inputData[200] = {-1};
static int isfirst = 1;
int i;
if (isfirst)
{
fp = fopen("D:\\book1.txt","r");
for(i = 0; i < 200; i++){
合计2页 第1页
if(fscanf(fp,"%d,",&inputData[i]) == EOF)
break;
}
isfirst = 0;
fclose(fp);
}
if(nIndex == 200)
return -1;
return inputData[nIndex++];
}
关于void Output(Score_t *p)函数;
void Output(Score_t *p)
{
FILE* fp = fopen("d:\\scores.txt","w");
int i;
fprintf(fp,"================A vs B Result====================\n");
fprintf(fp,"A vs B = %d : %d\n", p->An, p->Bn);
for(i = 0; i < p->An + p->Bn; i++){
fprintf(fp,"%dst Match Scores is %d : %d\n",i+1,p->Match[i].scoreA,p->Match[i].scoreB);
}
fprintf(fp,"\n");
fclose(fp);
}
使用的数据结构:
typedef struct {
char scoreA; // A选手局得分
char scoreB; // B选手局得分
} Match_t; //局比分信息
typedef struct {
char An; // A选手赢的局数
char Bn; // B选手赢的局数
Match_t Match[7]; //最多7局比分
}Score_t;
合计2页 第2页