1. 程式人生 > >PAT 乙級 1002 寫出這個數

PAT 乙級 1002 寫出這個數

1002 寫出這個數 (20 point(s))

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

輸入格式:

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

輸出格式:

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

輸入樣例:

1234567890987654321123456789

輸出樣例:

yi san wu

經驗總結:

emmmmm  就是先用字元陣列儲存,然後將每一位數加起來得到結果,最後處理的時候,可以利用整除法計算出數字的位數,然後再從高位到低位依次去整輸出,(能用這種方法的原因是100位就算全是9加起來也就900,10的3次方而已,不會超限)注意末尾沒有空格哦,其他的就沒啥啦~

AC程式碼

#include <cstdio>
#include <cmath>
int process(char a[])
{
	int result=0;
	for(int i=0;a[i]!='\0';++i)
	{
		result+=a[i]-'0';
	}
	return result;
}

int main()
{
	char num[110];
	char arti[10][6]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
	scanf("%s",num);
	int res=process(num);
	int count=0;
	int temp=res;
	while(temp!=0)
	{
		temp/=10;
		++count;
	}
	int pro;
	do
	{
		pro=pow(10.0,count-1);
		printf("%s",arti[res/pro]);
		if(count>1)
			printf(" ");
		else
			printf("\n");
		res%=pro;
		--count;
	}while(count>0);
	return 0;
}