「PAT乙级真题解析」Basic Level 1071 小赌怡情 (问题分析+完整步骤+伪代码描述+提交通过代码)

题设要求按照筹码计算规则计算玩家的下注、输赢以及筹码剩余情况, 并出给了具体的步骤规则, 所以这是一道模拟题, 需要明确规则编写逻辑; 计算环节分为: - 读取玩家下注 - 检查玩家下注与筹码是否合理 - 计算游戏结果和玩家收益 - 按照规则输出

#算法#数据结构#c语言#需求分析#pat考试

Table of Contents

乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范。从小白开始逐步掌握用编程解决问题。

PAT乙级BasicLevelPractice 1071 小赌怡情

问题分析

题设要求按照筹码计算规则计算玩家的下注、输赢以及筹码剩余情况, 并出给了具体的步骤规则, 所以这是一道模拟题, 需要明确规则编写逻辑; 计算环节分为:

  • 读取玩家下注
  • 检查玩家下注与筹码是否合理
  • 计算游戏结果和玩家收益
  • 按照规则输出

完整描述步骤

  1. 获取输入: 玩家初始筹码, 回合数目
  2. 初始化统计器:
    • 玩家剩余筹码 = 玩家初始筹码
  3. 对于每一个回合:
    • 读取输入: 第一个数, 玩家下注, 下注筹码, 第二个数
    • 如果玩家下注筹码超过其剩余筹码, 输出"Not enough tokens. Total = {玩家剩余筹码}.", 并跳过该回合
    • 如果玩家下注第二个整数将会比打一个数大/小, 且下注正确, 则:
      • 玩家剩余筹码 += 玩家下注筹码数目
      • 输出"Win {玩家剩余筹码}! Total = {玩家剩余筹码}."
    • 否则:
      • 玩家剩余筹码 += 玩家下注筹码数目
      • 输出"Lose {玩家剩余筹码}! Total = {玩家剩余筹码}."
    • 如果回合结束, 玩家剩余筹码 等于0, 则输出"Game Over.", 并结束游戏

伪代码描述

  1. get input: player_token_amount, game_round_amont;
  2. for each round:
    • get input: first_number, bet, token, second_number;

    • if player_token_amount < token:

      • print("Not enough tokens. Total = {player_token_amount}.");
      • continue;
    • else if (second_number > first_number and bet == 1) or (second_number < first_number and bet == 0):

      • player_token_amount += token;
      • print("Win {玩家剩余筹码}! Total = {玩家剩余筹码}.")
    • else:

      • player_token_amount -= token;
      • print("Lose {玩家剩余筹码}! Total = {玩家剩余筹码}.")
    • if player_token_amount == 0:

      • print("Game Over.");
      • end program;

完整提交代码

/*
# 问题分析
题设要求按照筹码计算规则计算玩家的下注、输赢以及筹码剩余情况, 并出给了具体的步骤规则, 所以这是一道模拟题, 需要明确规则编写逻辑;
计算环节分为:
- 读取玩家下注
- 检查玩家下注与筹码是否合理
- 计算游戏结果和玩家收益
- 按照规则输出
 
# 完整描述步骤
1. 获取输入: 玩家初始筹码, 回合数目
2. 初始化统计器:
    - 玩家剩余筹码 = 玩家初始筹码
3. 对于每一个回合:
    - 读取输入: 第一个数, 玩家下注, 下注筹码, 第二个数
    - 如果玩家下注筹码超过其剩余筹码, 输出"Not enough tokens.  Total = {玩家剩余筹码}.", 并跳过该回合
    - 如果玩家下注第二个整数将会比打一个数大/小, 且下注正确, 则:
        - 玩家剩余筹码 += 玩家下注筹码数目
        - 输出"Win {玩家剩余筹码}! Total = {玩家剩余筹码}."
    - 否则:
        - 玩家剩余筹码 += 玩家下注筹码数目
        - 输出"Lose {玩家剩余筹码}! Total = {玩家剩余筹码}."
    - 如果回合结束, 玩家剩余筹码 等于0, 则输出"Game Over.", 并结束游戏
 
# 伪代码描述
1. get input: player_token_amount, game_round_amont;
2. for each round:
    - get input: first_number, bet, token, second_number;
    - if player_token_amount < token:
        - print("Not enough tokens.  Total = {player_token_amount}.");
        - continue;
    - else if (second_number > first_number and  bet == 1)
        or (second_number < first_number and bet == 0):
        - player_token_amount += token;
        - print("Win {玩家剩余筹码}! Total = {玩家剩余筹码}.")
    - else:
        - player_token_amount -= token;
        - print("Lose {玩家剩余筹码}! Total = {玩家剩余筹码}.")
    
    - if player_token_amount == 0:
        - print("Game Over.");
        - end program;
*/
 
# include<stdio.h>
# define BIGGER 1
# define SMALLER 0
 
int main(){
    int player_token_amount, game_round_amont;
    scanf("%d %d", &player_token_amount, &game_round_amont);
    
    int first_number, bet, token, second_number;
    for (int i = 0; i < game_round_amont; i++){
        scanf("%d %d %d %d\n", &first_number, &bet, &token, &second_number);
        if (player_token_amount < token){
            printf("Not enough tokens.  Total = %d.\n", player_token_amount);
        } else if ((second_number > first_number && bet == BIGGER) || (second_number < first_number && bet == SMALLER)) {
            player_token_amount += token;
            printf("Win %d!  Total = %d.\n", token, player_token_amount);
        } else {
            player_token_amount -= token;
            printf("Lose %d.  Total = %d.\n", token, player_token_amount);
        }
 
        if (player_token_amount == 0){
            printf("Game Over.\n");
            break;
        }
    }
    
    return 0;
}
「PAT乙级真题解析」Basic Level 1071 小赌怡情 (问题分析+完整步骤+伪代码描述+提交通过代码) | 生活糖果