PAT乙級 1002 寫出這個數 20

2021-07-15 12:47:52 字數 2169 閱讀 9233

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

輸入格式:

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

輸出格式:

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

輸入樣例:

輸出樣例:

yi san wu

1.以字元陣列的形式讀入給出的自然數n,並用strlen函式獲取n的長度。且因為n<10^100,字元陣列最小為10^101

char

str[110];

gets(str);

int len = strlen(str);

之後列舉字元陣列每一位,將字元對應的數字進行累加

for (int i = 0; isum += str[i] - '0';    //將每一位累加

}

將sum每一位壓入堆疊中,並用計數器cnt計數

呼叫num_to_string函式按格式輸出

version1.0(num_to_string函式版)

/**

* @tag pat_b_1002

* @date 2016-07-17 15:53:16-16:45

* @version 1.0

* @language c++

* @ranking 35/7667

*/#include

#include

#include

#include

using

namespace

std;

string num_to_string(int n)

else

if (n == 2)

else

if (n == 3)

else

if (n == 4)

else

if (n == 5)

else

if (n == 6)

return

"liu";

else

if (n == 7)

return

"qi";

else

if (n == 8)

return

"ba";

else

if (n == 9)

return

"jiu";

else

return

"error";

}int sum;

int cnt;

int main()

cout

<< num_to_string(sum);

for (int i = 0; i < cnt; i++)

return

0;}

version2.0(二維陣列版,摘自晴神演算法筆記)
#include 

#include

char

str[110];

int main()

int num = 0, ans[10]; //num表示sum的位數

while (sum != 0)

//將sum的每一位存到ans陣列中,sum的低位存到ans的低位

/*進行數字和字串的轉換*/

char change[10][5] = ;

for (int i = num - 1; i >= 0; i--)

return

0;}

1.數字和字元之間的轉化可以考慮用二維陣列來存,更簡單

char change[10][5] = ;
之後輸出要注意:

for (int i = num - 1; i >= 0; i--)

vs2015採用新標準,其中的gets函式要換成gets_s函式

gets_s(str);

PAT 乙級 1002 寫出這個數

讀入乙個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。輸入格式 每個測試輸入包含1個測試用例,即給出自然數n的值。這裡保證n小於10100。輸出格式 在一行內輸出n的各位數字之和的每一位,拼音數字間有1 空格,但一行中最後乙個拼音數字後沒有空格。輸入樣例 123456789098765...

PAT 乙級 1002 寫出這個數

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 讀入乙個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。輸入格式 每個測試輸入包含1個測試用例,即給出自然數n的值。這裡保證n小於10100。輸出格式 在一行...

Pat乙級1002 寫出這個數

題目 讀入乙個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。輸入格式 每個測試輸入包含1個測試用例,即給出自然數n的值。這裡保證n小於10100。輸出格式 在一行內輸出n的各位數字之和的每一位,拼音數字間有1 空格,但一行中最後乙個拼音數字後沒有空格。輸入樣例 123456789098...