1. 程式人生 > >PAT1002 寫出這個數 (C++實現)

PAT1002 寫出這個數 (C++實現)

中文 什麽 namespace style 進行 color += 留言 UNC

PAT乙級考試題目 1002 寫出這個數 (20 分)

題目要求:

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

輸入格式:

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

輸出格式:

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

輸入樣例:

1234567890987654321123456789

輸出樣例:

yi san wu

我的答案(C++實現):

本程序采用“棧”的方法來實現。

1.用getchar()函數收集數字並累加到sum變量;

2.將sum的各位數字推入棧中(從末位開始,逆序進行);

3.將棧頂為0的元素推出棧(sum中“多余”的0);

4.從棧頂元素開始,依次用中文拼音拼寫(註意讀第一個元素前無“空格”);

 1 #include "pch.h"
 2 #include <iostream>
 3 #include <stack>
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     char pin[10][10] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu" };
 9     int n,sum=0;
10     stack<int
>s; 11 //累加各位數字 12 while ((n = getchar())!= \n) 13 { 14 sum+=n-0; 15 } 16 //分解數 17 for (int i = 0; i < 3; i++) { 18 s.push(sum % 10); 19 sum /= 10; 20 } 21 while(s.top() == 0) { 22 s.pop(); 23 } 24 //讀數程序 25 cout << pin[s.top()];
26 s.pop(); 27 while (!s.empty()) { 28 cout <<" "<< pin[s.top()]; 29 s.pop(); 30 } 31 return 0; 32 }

有什麽問題歡迎留言交流~

 

PAT1002 寫出這個數 (C++實現)