PAT乙級題解——1002. 寫出這個數 (20) 【大整數運算】 【 字符串處理】

題目:

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

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

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

輸入樣例:
1234567890987654321123456789
輸出樣例:
yi san wu

用到的知識:1、字符與數字的相互轉換,2、整數逐位存儲到數組

首先用字符串讀取大整數,然後累加大整數的每一位,用一個數組存儲累加和,最後逐位輸出。

注意:本題要求格式輸出,末尾不得有空格。所以最後處理時,先輸出第一位,剩下的按"空格—值"的格式輸出

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
	char n[10101];
	scanf("%s",&n);//將大數存儲在字符數組中 
	int mei[1000]={0};//存儲相加後的每一位數字 
	int s=strlen(n);//獲取大數的位數 
	string show[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
	int m=0;//每一位相加和 
	int num=0;//逐位相加 
	for(int i=0;i<s;i++) //對每位求和 
	{
		m+=n[i]-'0';
	}
	while(m>0)//按個十百……給mei[]數組每位數字賦值 
	{
		num++;
		mei[num]=m%10;
		m/=10;
	}
	cout<<show[mei[num]];//首先輸出第一位,之後的每位輸出空格加數字 
	for(int i=num-1;i>0;i--)
	{
		cout<<" "<<show[mei[i]];
	}
	return 0; 
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章