IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> [PAT练级笔记] 59 Basic Level 1059 C语言竞赛 -> 正文阅读

[C++知识库][PAT练级笔记] 59 Basic Level 1059 C语言竞赛

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

PAT乙级BasicLevelPractice 1059

问题分析

题目要求按照参赛选手名次和颁奖规则为选手颁奖。
由于是题目给定了明确的规则, 所以仍然是模拟题的思路。

完整描述步骤

  1. 获取输入: 参数选手信息(ID, 输入次序为排名)
  2. 对于每一个参赛选手:
    • 如果名次是1, 则送神秘大奖;
    • 如果名次是质数, 则送小黄人玩偶;
    • 否则送巧克力;
  3. 获取输入: 查询次数
    • 如果查询的ID存在, 且是第一次查询该ID, 则输出奖品
    • 如果查询的ID存在, 但不是第一次查询该ID, 则输出Checked
    • 如果查询的ID不存在, 则输出Are you kidding?

伪代码描述

  1. get input: player_amount
  2. init recorder:
    • rewards
    • player_info
  3. get input:
    • player_ID (as index in player_info)
    • player_rank
      • is input order
      • stored as value of player_info[player_ID])
  4. for each player:
    • if rank == 1:
      • rewards[player.ID] = ‘Mystery Award’;
    • else if is_prime(rank):
      • rewards[player.ID] = ‘Minion’;
    • else:
      • rewards[player.ID] = ‘Chocolate’;
  5. get input: query_amount
  6. init recorder:
    • checked (init all elements as False)
  7. for each query:
    • if queried_ID in player_info and checked[queried_ID] == False:
      • print(rewards[queried_ID])
    • else if queried_ID in player_info:
      • print(ID + “: Checked”)
    • else:
      • print(ID + “: Are you kidding?”)

完整提交代码

/*
# 问题分析
题目要求按照参赛选手名次和颁奖规则为选手颁奖。
由于是题目给定了明确的规则, 所以仍然是模拟题的思路。

# 完整描述步骤
1. 获取输入: 参数选手信息(ID, 输入次序为排名)
2. 对于每一个参赛选手:
    - 如果名次是1, 则送神秘大奖;
    - 如果名次是质数, 则送小黄人玩偶;
    - 否则送巧克力;
3. 获取输入: 查询次数
    - 如果查询的ID存在, 且是第一次查询该ID, 则输出奖品
    - 如果查询的ID存在, 但不是第一次查询该ID, 则输出Checked
    - 如果查询的ID不存在, 则输出Are you kidding?

# 伪代码描述
1. get input: player_amount
2. init recorder:
    - rewards
    - player_info
3. get input: 
    - player_ID (as index in player_info)
    - player_rank
        - is input order
        - stored as value of player_info[player_ID])
3. for each player:
    - if rank == 1:
        - rewards[player.ID] = 'Mystery Award';
    - else if is_prime(rank):
        - rewards[player.ID] = 'Minion';
    - else:
        - rewards[player.ID] = 'Chocolate';
4. get input: query_amount
5. init recorder:
    - checked (init all elements as False)
6. for each query:
    - if queried_ID in player_info and checked[queried_ID] == False:
        - print(rewards[queried_ID])
    - else if queried_ID in player_info:
        - print(ID + ": Checked")
    - else:
        - print(ID + ": Are you kidding?")
*/


# include<stdio.h>
# include<math.h>

char rewards[3][20] = {"Mystery Award", "Minion", "Chocolate"};

int is_prime(int number){
    int sqrt_root = (int)sqrt(number) + 1;
    for (int i = 2; i < sqrt_root; i++){
        if (number % i == 0) return 0;
    }
    return 1;
}


void print_reward(int ID, int rank){
    if (rank == 1){
        printf("%04d: %s\n", ID, rewards[0]);
        return;
    }
    
    if (is_prime(rank) == 1){
        printf("%04d: %s\n", ID, rewards[1]);
        return;
    }
    
    printf("%04d: %s\n", ID, rewards[2]);
    
}

int main(){
    int player_amount;
    int ranking[10000] = {0};
    scanf("%d", &player_amount);
    int ID;
    for (int i = 0; i < player_amount; i++){
        scanf("%d", &ID);
        ranking[ID] = i + 1;
    }

    int checked[10000] = {0};
    int query_amount;
    scanf("%d", &query_amount);
    for (int i = 0; i < query_amount; i++){
        scanf("%d", &ID);
        if (ranking[ID] == 0){
            printf("%04d: Are you kidding?\n", ID);
        } else if (checked[ID] == 1){
            printf("%04d: Checked\n", ID);
        } else{
            checked[ID] = 1;
            print_reward(ID, ranking[ID]);
        }
    }

    return 0;
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:13:43  更:2022-10-17 12:17:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 5:05:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码