【GPLT】L1-007 念數字

  • 2019 年 11 月 8 日
  • 筆記

版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。

本文鏈接:https://blog.csdn.net/weixin_42449444/article/details/88616273

題目描述:

輸入一個整數,輸出每個數字對應的拼音。當整數為負數時,先輸出fu字。十個數字對應的拼音如下:

0: ling  1: yi  2: er  3: san  4: si  5: wu  6: liu  7: qi  8: ba  9: jiu

輸入描述:

輸入在一行中給出一個整數,如:1234

提示:整數包括負數、零和正數。

輸出描述:

在一行中輸出這個整數對應的拼音,每個數字的拼音之間用空格分開,行末沒有最後的空格。如 yi er san si

輸入樣例:

-600

輸出樣例:

fu liu ling ling

解題思路:

水題,先判斷是不是負數,若是負數則輸出"fu"並把負數變成正數,然後把數字轉換成字元串,無腦for-each從左至右對字元串進行分割,輸出每個數字對應的拼音即可。

AC程式碼:

#include <bits/stdc++.h>  using namespace std;    void transfer(int n)  {      switch(n)      {          case 0: cout << "ling"; break;          case 1: cout << "yi"; break;          case 2: cout << "er"; break;          case 3: cout << "san"; break;          case 4: cout << "si"; break;          case 5: cout << "wu"; break;          case 6: cout << "liu"; break;          case 7: cout << "qi"; break;          case 8: cout << "ba"; break;          case 9: cout << "jiu"; break;          default : break;      }  }    int main()  {      int n;      cin >> n;      if(n < 0)      {          cout << "fu ";          n = abs(n);      }      string s = to_string(n);      bool isVirgin = true;      for(auto it : s)      {          if(isVirgin)          {              transfer(it-'0');              isVirgin = false;          }          else          {              cout << " ";              transfer(it-'0');          }      }      return 0;  }