如何用c++编写一个随机生成排球比赛结果的程序
排球比分要求AB两队比赛采用三局两胜制,每局25分。
由首先赢得25分,并且超过对方2分的队获得本局胜利
每次运行打印比赛随机比分过程和最终比分结果以及获胜队
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
// 初始化随机数种子
srand(time(NULL));
// 初始化比分和局数
int scoreA = 0, scoreB = 0;
int winA = 0, winB = 0;
int round = 0;
// 开始比赛
while (winA < 2 && winB < 2)
{
round++;
cout << "第" << round << "局比赛开始:" << endl;
// 模拟比赛过程
while (true)
{
// 随机生成得分队伍
if (rand() % 2 == 0)
{
scoreA++;
cout << "A 得分!" << endl;
}
else
{
scoreB++;
cout << "B 得分!" << endl;
}
// 判断是否获胜
if (scoreA >= 25 && scoreA - scoreB >= 2)
{
winA++;
cout << "A 获得本局胜利!" << endl;
break;
}
else if (scoreB >= 25 && scoreB - scoreA >= 2)
{
winB++;
cout << "B 获得本局胜利!" << endl;
break;
}
}
// 输出当前比分
cout << "当前比分:" << endl;
cout << "A:" << scoreA << " B:" << scoreB << endl << endl;
// 重置比分
scoreA = scoreB = 0;
}
// 输出最终比分和获胜队伍
cout << "比赛结束,共进行了 " << round << " 局比赛。" << endl;
cout << "最终比分:" << endl;
cout << "A:" << winA << " 局 B:" << winB << " 局" << endl;
if (winA > winB)
{
cout << "A 获得胜利!" << endl;
}
else
{
cout << "B 获得胜利!" << endl;
}
return 0;
}
可以随机生成范围为0到1,生成为0A队加一分为1B队加一分。
双层死循环第一层循环输出胜场比,判断是否有一队获胜两场,有则输出获胜队并break;
第二次循环生成数字,输出比分,判断分差和总分是否满足条件,若满足该队胜场加一并break;
鉴于近几年蓝桥杯DP题目数目增加,一定要对DP有较高的熟练度,并且能够秒杀经典题目。
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main() {
srand(time(NULL)); //设置随机数种子,用系统当前时间,保证每次结果都不同
int score_a = 0, score_b = 0; //两队得分情况
int win_a = 0, win_b = 0; //两队获胜次数
int round = 1; //局数
while (win_a < 2 && win_b < 2) { //只有一方获得两局胜利才结束比赛
cout << "Round " << round << ":" << endl;
int i = 0;
while (true) {
int r = rand() % 2; //产生0或1的随机数,决定此局哪一方得分
if (r == 0) {
score_a++;
} else {
score_b++;
}
cout << "Score: " << score_a << "-" << score_b << endl;
if (score_a >= 25 && score_a - score_b >= 2) {
win_a++;
cout << "Team A wins this round!" << endl << endl;
break;
}
if (score_b >= 25 && score_b - score_a >= 2) {
win_b++;
cout << "Team B wins this round!" << endl << endl;
break;
}
}
score_a = score_b = 0; //每场比赛结束时要将得分情况清零
round++;
}
if (win_a > win_b) {
cout << "Team A wins the game!" << endl;
} else {
cout << "Team B wins the game!" << endl;
}
return 0;
}