zoukankan      html  css  js  c++  java
  • 完美世界在线笔试编程题2

    将一个四位数的整数,输出它的拼音形式。如1001,输出“yiqianlingyi”,10,输出“10”

      

    // wamie2.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include<map>
    #include<string>
    #include<iostream>
    using namespace std;
    
    int main()
    {
        int number = 0;
        map<int, string> ismap1;
        ismap1[0] = "ling";
        ismap1[1] = "yi";
        ismap1[2] = "er";
        ismap1[3] = "san";
        ismap1[4] = "si";
        ismap1[5] = "wu";
        ismap1[6] = "liu";
        ismap1[7] = "qi";
        ismap1[8] = "ba";
        ismap1[9] = "jiu";
        ismap1[10] = "shi";
        map<int, string> ismap2;
        ismap2[0] = "";
        ismap2[1] = "shi";
        ismap2[2] = "bai";
        ismap2[3] = "qian";
        string temp, ret;
        while (cin >> number)
        {
            int cnt = -1;
            ret = "";
            bool tag = true;
            if (number < 20)
            {
                if (0 == number)
                    cout << "ling" << endl;
                else
                {
                    while (0 != number)
                    {
                        ++cnt;
                        temp = "";
                        int i = number % 10;
                        if (1 == i && 1 == cnt)
                            temp = ismap1[10];
                        else
                            temp = ismap1[i] + ismap2[cnt];
                        ret = temp.append(ret);
                        number /= 10;
                    }
                    if (ret.size() >= 5 && "ling" == ret.substr(ret.size() - 4, 4))
                        ret = ret.substr(0, ret.size() - 4);
                    cout << ret << endl;
                }
            }
            else
            {
                while (0 != number)
                {
                    ++cnt;
                    temp = "";
                    int i = number % 10;
                    if (true == tag && 0 == i)
                    {
                        temp = ismap1[i];
                        tag = false;
                    }
                    else
                    {
                        if (0 != i)
                        {
                            temp = ismap1[i] + ismap2[cnt];
                            tag = true;
                        }
                    }
                    ret = temp.append(ret);
                    number /= 10;
                }
                if (ret.size() >= 5 && "ling" == ret.substr(ret.size() - 4, 4))
                    ret = ret.substr(0, ret.size() - 4);
                cout << ret << endl;
            }
            
        }
        return 0;
    }
  • 相关阅读:
    发送邮箱验证信息的工具类
    Tensor的组合与分块-02
    09-ImageJ的安装与使用
    01 织布缺陷——断针缺陷检测
    Map 与结构体的混合使用
    c++ 读取TXT文件,中文乱码处理
    Code128 混合编码--译码方式及校验准则
    08-局部阈值分割算法总结
    code128码国标
    vector使用的相关博客
  • 原文地址:https://www.cnblogs.com/csudanli/p/5433212.html
Copyright © 2011-2022 走看看