读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
//大体思路:本题并不难想,只需对所有的数字求和,再分析每一个数位然后输出即可
#include<stdio.h>
#include<string.h>
#define MAX 105
char* s[MAX]; //s数组储存结果
char vert[][10] = { "ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu" }; //用二维数组制表
int main() {
int i, sum;
char str[MAX];
scanf("%s", str);
sum = 0;
for (i = 0; i < strlen(str); i++)
sum += (str[i] - '0'); //str[i] - '0'把数字字符转化乘对应的数值,并求和
for (i = 0; sum; i++) {
s[i] = vert[sum % 10]; //得到每一位
sum /= 10;
}
while (i--) //--i >= 0也可,逆序输出数组中的拼音
printf("%s%s", s[i], (i > 0) ? " " : ""); //题目要求最后一个拼音后没有空格,可以用三目运算符实现(用的比较多)
return 0;
}