考试题易错点

6-3 大牌点计算函数 (100 分)

大牌点,英文全称是High Card Point,简写为hcp 。它是衡量一手牌好坏的标准。我们规定A=4hcp, K=3hcp, Q=2hcp, J=1hcp.由此,拿到一手牌我们可以很快地计算出他的hcp。我们也可以很快知道,一副牌一共是40Hcp。这个值对于每副牌来说,就是东南西北4个人手上大牌点的总和。

现我们重新规定每张排的点数,请你写一段函数来计算一下一手排的大牌点。

新规定如下:3,4,5均为1点,6,7,8均为2点,9,T(代表10)均为3点,J为4点,Q为5点,K为6点,A为8点,2为10点,B(代表小王)为15点,R(代表大王)为20点。

输入: 第一行为一个整数n(0<n<100),共n手牌; 后边为n行,每行为一个长度不超过20的字符串,代表一手牌(字符串中只可能包含字符3456789TJQKA2BR)。

输入: 共n行,将输入的n手牌按牌的点数依次输出(测试用例保证没有点数相同的牌)。

函数接口定义:

int        getPoint(char hand[]) ;

其中 hand 是用户传入的参数,为保存一手牌的数组。 函数的返回值为这手牌的大牌点数。

裁判测试程序样例:

#include<stdio.h>

#define        MAX        110
int        getPoint(char hand[]) ;

int main()
{
    char    poker[MAX];
    int        n ;

    scanf( "%d" , &n) ;
    while ( n -- )//循环n次 
    {
        scanf( "%s" , poker ); //读入字符串 
        printf( "%d\n" , getPoint(poker) ); //输出 
    }

    return 0;
}


/* 请在这里填写答案 */

输入样例:

5
QQQ56AJR9Q
T5RJJJT82
RKT8J6QT5A
5T9RJ9J6B
9994A7QRBQ

输出样例:

58
51
54
55
65

思路:思路很简单,但是字符判断是不是45678,必须要加上单引号来判断,不然就识别失败。

代码:

#include<stdio.h>

#define        MAX        110
int        getPoint(char hand[]) ;

int main()
{
    char    poker[MAX];
    int        n ;

    scanf( "%d" , &n) ;
    while ( n -- )//循环n次
    {
        scanf( "%s" , poker ); //读入字符串
        printf( "%d\n" , getPoint(poker) ); //输出
    }

    return 0;
}
int getPoint(char hand[]){
    int i=0;
    int ans=0;
    while(hand[i]!='\0'){
        if(hand[i]=='3' || hand[i]=='4' || hand[i]=='5'){
            ans+=1;
        }
        else if(hand[i]=='6' || hand[i]=='7' || hand[i]=='8'){
            ans+=2;
        }
        else if(hand[i]=='9' || hand[i]=='T'){
            ans+=3;
        }
        else if(hand[i]=='J'){
            ans+=4;
        }
        else if(hand[i]=='Q'){
            ans+=5;
        }
        else if(hand[i]=='K'){
            ans+=6;
        }
        else if(hand[i]=='A'){
            ans+=8;
        }
        else if(hand[i]=='2'){
            ans+=10;
        }
        else if(hand[i]=='B'){
            ans+=15;
        }
        else if(hand[i]=='R'){
            ans+=20;
        }
        else{
            ans+=0;
        }
        i++;
    }
    return ans;

}

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值