#include <iostream> #include <cstdio> #include <cmath> using namespace std; int main() { char c; int h[30000][2]={0},a[30000][2]={0},i=0,j=0; while(scanf("%c",&c)!=-1){ if(c=='E') break; if(c=='W'){ h[i][0]++; h[j][1]++; } if(c=='L'){ a[i][0]++; a[j][1]++; } if((h[i][0]>=11 || a[i][0]>=11)&& abs(h[i][0]-a[i][0])>1) i++; if((h[j][1]>=21 || a[j][1]>=21)&& abs(h[j][1]-a[j][1])>1) j++; } for(int x=0;x<i+1;x++){ printf("%d:%d\n",h[x][0],a[x][0]); } printf("\n"); for(int x=0;x<j+1;x++){ printf("%d:%d\n",h[x][1],a[x][1]); } return 0; }
时间: 2023-12-16 19:04:52 浏览: 89
这是一段 C++ 代码,实现了计分板的功能。下面是对代码中每行的注释:
```cpp
#include <iostream> // 头文件,包含了输入输出流的定义
#include <cstdio> // 头文件,包含了输入输出函数的定义
#include <cmath> // 头文件,包含了数学函数的定义
using namespace std; // 使用标准命名空间
int main() { // 主函数
char c; // 定义一个字符变量 c
int h[30000][2]={0},a[30000][2]={0},i=0,j=0; // 定义两个二维数组 h 和 a,以及两个计数器 i 和 j,并初始化为 0
while(scanf("%c",&c)!=-1){ // 如果从标准输入中读取到字符 c,且其不等于 -1
if(c=='E') // 如果 c 等于字符 E,就跳出循环
break;
if(c=='W'){ // 如果 c 等于字符 W
h[i][0]++; // h 的第 i 行第 0 列加 1
h[j][1]++; // h 的第 j 行第 1 列加 1
}
if(c=='L'){ // 如果 c 等于字符 L
a[i][0]++; // a 的第 i 行第 0 列加 1
a[j][1]++; // a 的第 j 行第 1 列加 1
}
if((h[i][0]>=11 || a[i][0]>=11)&& abs(h[i][0]-a[i][0])>1) // 如果第 i 场比赛已经结束
i++; // i 加 1,表示开始一场新的比赛
if((h[j][1]>=21 || a[j][1]>=21)&& abs(h[j][1]-a[j][1])>1) // 如果第 j 场比赛已经结束
j++; // j 加 1,表示开始一场新的比赛
}
for(int x=0;x<i+1;x++){ // 打印每场比赛的得分情况
printf("%d:%d\n",h[x][0],a[x][0]); // 打印 h 的第 x 行第 0 列和 a 的第 x 行第 0 列
}
printf("\n"); // 打印一个空行
for(int x=0;x<j+1;x++){ // 打印每场比赛的得分情况
printf("%d:%d\n",h[x][1],a[x][1]); // 打印 h 的第 x 行第 1 列和 a 的第 x 行第 1 列
}
return 0; // 返回 0,表示程序正常结束
}
```
阅读全文