酷代码 AI
菜单
服务商

C++ 实现:根据 11 分制与 21 分制计算比赛比分结果

```cpp // 引入输入输出流库,用于进行输入输出操作 #include<iostream> // 引入数学库,这里虽然引入但代码中未使用 #include<cmath> // 使用标准命名空间,这样可以直接使用标准库中的对象和函数 using namespace std; // 定义一个包含两个元素的整数数组 f,分别存储两种比赛规则下的获胜所需最少分数 int f[2] = {11, 21}; // 定义一个整数数组 a,用于存储比赛结果,数组大小足够存储可能的最大数据量 int a[25 * 2500 + 10], n = 0; // 主函数,程序的入口点 int main(){ // 定义一个字符变量 tmp,用于临时存储从输入读取的字符 char tmp; // 进入一个无限循环,持续读取输入字符 while(1){ // 从标准输入读取一个字符到 tmp 变量 cin >> tmp; // 如果读取到的字符是 'E',表示输入结束,跳出循环 if(tmp == 'E') break; // 如果读取到的字符是 'W',表示一场比赛获胜,将 1 存入数组 a 中,并将数组索引 n 加 1 else if(tmp == 'W') a[n++] = 1; // 如果读取到的字符是 'L',表示一场比赛失败,将 0 存入数组 a 中,并将数组索引 n 加 1 else if(tmp == 'L') a[n++] = 0; } // 循环两次,分别计算两种比赛规则下的比赛结果 for(int k = 0; k < 2; k++){ // 定义两个整数变量 w 和 l,分别用于记录当前比赛阶段的获胜场数和失败场数 int w = 0, l=0; // 遍历存储比赛结果的数组 a for(int i = 0; i < n; i++){ // 如果当前比赛结果是获胜(a[i] 为 1),则将 w 加 1;否则(a[i] 为 0),将 l 加 1 w += a[i]; l += 1 - a[i]; // 检查是否满足当前比赛规则下的结束条件: // 获胜场数和失败场数中的最大值大于等于当前规则下的获胜所需最少分数 f[k], // 并且获胜场数和失败场数的差值的绝对值大于等于 2 if((max(w, l) >= f[k]) && abs(w - l) >= 2) { // 输出当前比赛阶段的获胜场数和失败场数,格式为 "w:l",并换行 cout << w << ":" << l << endl; // 重置获胜场数和失败场数为 0,开始记录下一个比赛阶段 w = 0; l = 0; } } // 输出最后一个未完成比赛阶段的获胜场数和失败场数,格式为 "w:l",并换行 cout << w << ":" << l << endl; // 输出一个空行,用于分隔两种比赛规则的结果 cout << endl; } // 程序正常结束,返回 0 return 0; } ``` 代码功能 这段 C++ 代码的主要功能是读取一系列表示比赛结果的字符输入(`W` 表示获胜,`L` 表示失败,`E` 表示输入结束),并根据两种不同的比赛规则(分别是 11 分制和 21 分制)计算并输出每场比赛的结果。比赛结束的条件是一方得分达到对应规则的最少分数(11 分或 21 分),并且双方分差至少为 2 分。最后会输出每种规则下最后一场未完成比赛的当前比分。 ######[AI问答 | 905点数解答 | 2025-12-02 18:33:13]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]