乒乓球单打比赛程序模拟。比赛的双方简称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则表示发球的一方得分,如返回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++){ 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;
乒乓球单打比赛程序模拟。比赛的双方简称A和B,他们的比赛规则采用: 1, 比赛胜负采用7局4胜