没什么好说的,注意字符串的处理,以及当数字是13的倍数时,只需高位叫法的单词。比如26,是“hel”,而不是“hel tret”。

代码:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <map>
#include <string>
#include <string.h>
using namespace std;
char mars1[13][20]={"tret","jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec"};
char mars2[13][20]={"","tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou"};
map<char*,int>maps;int main()
{int n;char str[20];int decade,digit;scanf("%d",&n);getchar();for(int i=0;i<n;i++){gets(str);if('0'<=str[0]&&str[0]<='9'){int num=atoi(str);if(num/13 && num%13==0){//注意整除的情况。。。printf("%s\n",mars2[num/13]);}else if(num/13){decade=num/13;digit=num%13;printf("%s %s\n",mars2[decade],mars1[digit]);}else{printf("%s\n",mars1[num]);}}else{int len=strlen(str);//如果是一个字符串的话,加上\0顶多4位。不过要注意也要比较下十位数if(len<5){digit=-1;for(int i=0;i<13;i++){if(strcmp(str,mars1[i])==0){digit=i;break;}}if(digit==-1){for(int i=1;i<13;i++){if(strcmp(str,mars2[i])==0){decade=i;break;}}printf("%d\n",decade*13);}elseprintf("%d\n",digit);}else{char tmp[20];int i;for(i=0;i<len && str[i]!=' ';i++){tmp[i]=str[i];}tmp[i]='\0';//十位数for(int k=1;k<13;k++){if(strcmp(tmp,mars2[k])==0){decade=k;break;}}i++;int p=0;for(;i<len;i++,p++)tmp[p]=str[i];tmp[p]='\0';//个位数for(int k=0;k<13;k++){if(strcmp(tmp,mars1[k])==0){digit=k;break;}}printf("%d\n",decade*13+digit);}}}return 0;
}

View Code

转载于:https://www.cnblogs.com/chenxiwenruo/p/6102581.html

PAT甲级题解-1100. Mars Numbers (20)-字符串处理相关推荐

  1. PAT甲级1100 Mars Numbers (20 分)题解

    \quad这个题稍微有点麻烦,需要分别处理数字转火星文和火星文转数字两种情况.不过数字最高两位,处理起来分别讨论即可.程序如下: #include <iostream> using nam ...

  2. 【PAT甲级 火星数字】1100 Mars Numbers (20 分)Java 全部AC

    题目 提交Java的时候,千万不要写第一行的包名称!!被这个bug折腾了一个小时.. 题解1:Java import java.util.ArrayList; import java.util.Lis ...

  3. PAT 1100. Mars Numbers (20)

    People on Mars count their numbers with base 13: Zero on Earth is called "tret" on Mars. T ...

  4. 1100 Mars Numbers (20 分)【难度: 一般 / 知识点: 模拟】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805367156883456 乙级的原题.. #include<bi ...

  5. 1100 Mars Numbers (20分)

    这类题目是C++标准模板库的使用,是重点知识. 题目描述如下: 题目大致意思与大致思路: 这道题目其实就是一道10进制与13进制之间的进制转换的题目,如果输入的是10进制,则将十进制转换为13进制,根 ...

  6. PAT_(STL使用)map-1100 Mars Numbers (20分)-1054 The Dominant Color (20分)-1071-1022

    目录 1100 Mars Numbers (20分) 1054 The Dominant Color (20分) 1071 Speech Patterns (25分) 1022 Digital Lib ...

  7. pat1100. Mars Numbers (20)

    1100. Mars Numbers (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue People o ...

  8. PAT甲级1100 Mars Numbers:[C++题解]进制位、使用stringstream类读入

    文章目录 题目分析 题目分析 分析: 使用char型二维数组 names[][5] 存储这些 火星文. ac代码 #include<iostream> #include<sstrea ...

  9. 【PAT甲级题解记录】1148 Werewolf - Simple Version (20 分)

    [PAT甲级题解记录]1148 Werewolf - Simple Version (20 分) 前言 Problem:1148 Werewolf - Simple Version (20 分) Ta ...

最新文章

  1. Origin对于标注点
  2. 适合利用计算机模拟的是,计算机模拟在数学建模中的应用
  3. Spring中DispacherServlet、WebApplicationContext、ServletContext的关系
  4. 法拉克机器人自动怎么调_在使用钢网印刷SMT贴片红胶时全自动印刷机的参数怎么调?...
  5. oracle 执行sql,Oracle动态执行SQL
  6. php declaration of,PHP 7.2中的新功能(参数类型声明)
  7. Process Stats:了解你的APP怎样使用内存
  8. 四元数和欧拉角在线转换
  9. top命令详解(转载)
  10. (转)马云又在押宝智能投顾!
  11. 200. 岛屿数量 leetcode
  12. ASP 文件下载实例
  13. html5 移动端上传图片插件,H5文件上传插件easyUpload.js
  14. 微信小程序账号注册初始化环境搭建
  15. win10 更新Node JS和npm
  16. 树的先序、中序、后序和层次遍历的C++递归实现
  17. 教你如何提高信用额度
  18. 剑网3指尖江湖开局门派选TA最好 叉叉助手伴你快意江湖
  19. 电源设计1【测试方法、LDO】
  20. 百度网盘偷偷更新,白嫖用户终于也可以下载不限速了

热门文章

  1. 雪花算法生成数字id_全局唯一iD的生成 雪花算法详解及其他用法
  2. STM32中GPIO_Mode--GPIO配置
  3. 3倍根号x加1分之一c语言,用C语言将一个数开根号后再取倒数的方法
  4. Java笔记-concurrent集合及线程池
  5. C++笔记-const与mutable、static_cast与reinterpret_cast
  6. Linux学习笔记-消息队列概念
  7. Java基础入门笔记-数组链表
  8. 收银系统服务器有什么好处,生鲜超市收银系统软件怎么选?收银系统能带来什么好处?...
  9. php导出csv带图片,PHP导出CSV文件:刚测试过,这个导出CSV可以
  10. c语言指针的地址存放,c语言 - *指针 和 地址