rqn 51 乒乓球(字符串处理)

本文介绍了一个简单的网球比分统计系统实现方案。系统通过读取输入字符来更新比分,并判断何时一局结束。考虑到比赛规则中特有的胜利条件,即一方须领先至少两分且达到特定分数才能胜出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目连接:http://www.rqnoj.cn/Problem_51.html

解题思路:一次读入一个字符,对每个字符进行处理,注意的是获胜的条件除了一方到达21 或11 球之外,还有需要超过两球,就是说20:21不算分出胜负,20:22才算。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
const int N = 10005;


int main() {
    char c;
    int cntO[N][2], cntT[N][2];
    int nO = 0, nT = 0;
    memset(cntO, 0, sizeof(cntO));
    memset(cntT, 0, sizeof(cntT));

    while (scanf("%c", &c) == 1) {
	if (c == 'E')	break;

	if (c == 'W') {
	    cntT[nT][0]++;
	    cntO[nO][0]++;
	}
	else if (c == 'L') {
	    cntT[nT][1]++;
	    cntO[nO][1]++;
	}

	if ((cntO[nO][0] >= 11 || cntO[nO][1] >= 11) && abs(cntO[nO][0] - cntO[nO][1]) > 1)
	    nO++;

	if ((cntT[nT][0] >= 21 || cntT[nT][1] >= 21) && abs(cntT[nT][0] - cntT[nT][1]) > 1)
	    nT++;
    }

    for (int i = 0; i <= nO; i++)
	printf("%d:%d\n", cntO[i][0], cntO[i][1]);
    printf("\n");
    for (int i = 0; i <= nT; i++)
	printf("%d:%d\n", cntT[i][0], cntT[i][1]);
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值