演算法學習之路|寫出這個數(20)
讀入一個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。
輸入格式:每個測試輸入包含1個測試用例,即給出自然數n的值。這裡保證n小於10100。
輸出格式:在一行內輸出n的各位數字之和的每一位,拼音數字間有1 空格,但一行中最後一個拼音數字後沒有空格。
輸入樣例:
1234567890987654321123456789
輸出樣例:
yi san wu
思路:
把每一部分功能函式化,
sum()函式負責錄入並計算錄入數的和。
retpin()函式接收一個數(0~9),返回這個數的拼音string。
printpin()函式負責接收一個數(全部整數),把這個數的每一位以拼音形式輸出。
利用這三個函式解題即可。
#include<iostream>
#include<stack>
#include <vector>
using namespace std;
int sum(void){
char ch;
int count=0;
ch=getchar();
while(1){
count+=ch-48;
ch=getchar();
if(ch==`
`)
break;
}
return count;
}
string retpin(int n){
vector<string> v ={"ling","yi","er","san","si","wu",
"liu","qi","ba","jiu"};
if (n==0) {
return v[0];
}
if (n==1) {
return v[1];
}
if (n==2) {
return v[2];
}
if (n==3) {
return v[3];
}
if (n==4) {
return v[4];
}
if (n==5) {
return v[5];
}
if (n==6) {
return v[6];
}
if (n==7) {
return v[7];
}
if (n==8) {
return v[8];
}
else {
return v[9];
}
}
void printpin(int number){
int i=number%10;
number/=10;
stack<string> v;
while(i!=0||number!=0){
v.push(retpin(i));
i=number%10;
number/=10;
}
while(1){
cout<<v.top();
v.pop();
if(v.empty())
break;
cout<<" ";
}
}
int main(){
printpin(sum());
}
相關文章
- 演算法學習之路|個位數統計演算法
- 演算法學習之路|朋友數演算法
- 演算法學習之路|數零壹演算法
- 演算法學習之路|科學計數法演算法
- 演算法學習之路|賣個萌演算法
- 演算法學習之路|最簡分數演算法
- 演算法學習之路|愛丁頓數演算法
- 1002 寫出這個數 (20 分)javaJava
- 演算法學習之路|划拳演算法
- 演算法學習之路|A除以B演算法
- 演算法學習之路|列印排名演算法
- 演算法學習之路|方格分割演算法
- 演算法學習之路|SpellItRight演算法
- 演算法學習之路|歐幾里得遊戲演算法遊戲
- 演算法學習之路|月餅演算法
- 演算法學習之路|PATRanking演算法
- 演算法學習之路|列印沙漏演算法
- 演算法學習之路|快速排序演算法排序
- 演算法學習之路|結繩演算法
- 演算法學習之路|開學寄語演算法
- 演算法學習之路|說反話演算法
- 演算法學習之路|幼兒園買玩具演算法
- 演算法學習之路|小賭怡情演算法
- 演算法學習之路|影像過濾演算法
- 演算法學習之路|日期問題演算法
- 演算法學習之路|螺旋矩陣演算法矩陣
- 演算法學習之路|選擇題演算法
- 演算法學習之路|字元統計演算法字元
- Rust學習之旅1——寫個猜數字遊戲Rust遊戲
- 演算法學習之路|PlayOnWords(尤拉道路+dfs)演算法
- 演算法學習之路|舊鍵盤打字演算法
- 演算法學習之路|檢驗身份證演算法
- 演算法學習之路|最小生成樹——prime演算法演算法
- 強化學習之路一 QLearning 演算法強化學習演算法
- 演算法學習之路|狀態壓縮dp演算法
- 演算法學習之路|棋盤問題(博弈)演算法
- 演算法學習之路|進位制轉換演算法
- 演算法學習之路|宇宙無敵加法器演算法