1002.写出这个数
问题描述:
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char name[][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu","shi"};
void printnum(int num);
int main()
{
char n[100];
scanf("%s",&n);
int sum=0;
char *p=n;
while (*p!='\0'){
sum += *p - '0';
p++;
}
printnum(sum);
return 0;
}
void printnum(int num)
{
int t=0;
int l[5];
while (num>0){
l[t++] = num%10;
num /= 10;
}
printf("%s",name[l[t-1]]);
for (int i=t-2;i>=0;i--){
printf(" %s",*(name+l[i]));
}
}
Tips:
由于输入在10的100次方数量级,所以用数组来储存。
字符数字获取可以通过减去‘0’得到。