fhloj1090 21点游戏

21点游戏

源文件:  poker(.bas/.c/.cpp/.pas)
输入文件: poker.in
输出文件: poker.out

小明和他的同学们最近痴迷一种叫做21点的纸牌游戏。游戏规则很简单,游戏一共需要两名玩家,两人分别从牌堆里面选取若干张牌。每张牌都有一个点数,每个玩家的点数就是手里存有的牌的点数之和。值得注意的是,如果一个玩家的点数超过21点,那么这名玩家的点数就会变成0。两名玩家通过比较各自的点数大小决定游戏的胜负,点数大的玩家获胜。现在我们把小明和他对手玩家的手牌告诉你,请你通过程序判断出他们的胜负,或者是平局。

输入数据的第一行是一个整数N(0<N<=10),代表游戏总局数。接下来有N组数据,每组数据的第一行有两个整数,m和n(0<m, n<=10)。m代表小明手里有m张牌,n代表小明的对手玩家手里有n张牌。接下来会有两行数据。第一行数据包含m个不超过13的正整数,代表小明每张手牌的点数,第二行数据包含n个不超过13的正整数,代表小明对手玩家每张手牌的点数。

输出数据有N行。对于第i(1<=i<=N)局游戏,在第i行输出判定结果。如果小明获胜,输出Win;如果小明的对手玩家获胜,输出Lose;如果双方点数相同,输出Draw。请同学们注意Win,Lose和Draw三个单词都需要首字母大写。

【样例输入】
2
2 2
10 11
11 11
3 3
2 2 2
1 2 3

【样例输出】
Win
Draw

【说明】

解题思路
1. 求和比较
2. 求和规则,超过21点记为0分
3. 多个test case,考察对输入和输出的控制能力

#include <stdio.h>
#include <stdlib.h>

int main (int argc, char const* argv[])
{
    int a, b, c, m, n, i, t;

    scanf("%d", &c);
    while (c--) {
        scanf("%d %d", &m, &n);

        a = 0;
        for (i = 0; i < m; i++) {
            scanf("%d", &t);
            a += t;
        }
        if (a > 21) a = 0;

        b = 0;
        for (i = 0; i < n; i++) {
            scanf("%d", &t);    
            b += t;
        }
        if (b > 21) b = 0;

        if (a > b) {
            printf("Win\n");
        } else if (a == b) {
            printf("Draw\n");
        } else {
            printf("Lose\n");
        }
    }

    return 0;
}

你可能感兴趣的:(2012,水题,fhloj,天津小学组真题)