PAT-B 1002 寫出這個數 【字串+遞迴列印】

Enjoy_process發表於2019-02-15

                                        PAT-B 1002 寫出這個數 

                    https://pintia.cn/problem-sets/994805260223102976/problems/994805324509200384

 

題目

讀入一個正整數 n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。

輸入

每個測試輸入包含 1 個測試用例,即給出自然數 n 的值。這裡保證 n 小於 10​^100​​。

輸出

在一行內輸出 n 的各位數字之和的每一位,拼音數字間有 1 空格,但一行中最後一個拼音數字後沒有空格。

樣例輸入

1234567890987654321123456789

樣例輸出

yi san wu

分析

使用字串讀入,然後進行遞迴列印即可。

C++程式

#include<iostream>
#include<string>

using namespace std;

string a[]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};//數字的拼音

void print(int n)
{
	if(n)
	{
		print(n/10);
		if(n/10) cout<<" ";
		cout<<a[n%10];

	}
}

int main()
{
	string s;
	while(cin>>s)
	{
		int ans=0;
		for(int i=0;i<s.length();i++)
		  ans+=s[i]-'0';
		//輸出
		if(!ans)
		  cout<<a[0];
		else
		  print(ans);
		cout<<endl; 
	}
	return 0;
} 

 

相關文章