1002 寫出這個數

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

#include <stdio.h>
#include <string.h>

int main(void)
{
	char num[101];	// 用來存儲用戶輸入,因爲題目限制輸入的數最大不過10的100次方,所以這個空間就夠用了
	int sum = 0;	// 用來存儲各位的和
	int ssum[3];	// 用來分位存儲sum的值,因爲其值據題義不會超過900,所以這個空間夠用了
	char pinyin[10][5] = { "ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu" };

	scanf("%s", num);

	for (int i = 0; i < strlen(num); i++)
		sum += num[i] - '0';

	int i;		// i用來記錄在ssum數組中有幾位是有效的
	// 在下面這個循環中,將算出來的和sum以數組的形式逆向存儲在ssum數組中
	for (i = 0; sum != 0; i++)
	{
		ssum[i] = sum % 10;
		sum /= 10;
	}
	// 該循環結束後,ssum數組中有i個數字爲有效值,

	// 將ssum數組中的值逆序輸出,輸出樣式對應着pinyin數組中的內容
	for (; i >0; i--)
	{
		printf("%s", pinyin[ssum[i - 1]]);
		if (i != 1)
			printf(" ");
	}

	return 0;
}

// 該題略有意思,計算機等級考試二級C語言65分水平,適宜於熟悉C語言的基礎

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