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语言的基础

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