1002. 写出这个数 (20)
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:1234567890987654321123456789输出样例:
yi san wu
分析:把输入的数用字符串储存,将其转化为数组后求和取位数,用switch输出结果。
代码:
#include<iostream>
#include<cstring>
#define MAX 10000
using namespace std;
void trans(long num)
{
int temp[MAX] = {0};
int cnt = 0;
for(int i = 0; num != 0; i++){
temp[i] = num % 10;
num /= 10;
cnt++;
}
for(int i = cnt - 1; i >= 0; i--){
char ch = (i == 0) ? '\n' : ' ';
switch(temp[i]){
case 0:
cout << "ling" << ch;
break;
case 1:
cout << "yi" << ch;
break;
case 2:
cout << "er" << ch;
break;
case 3:
cout << "san" << ch;
break;
case 4:
cout << "si" << ch;
break;
case 5:
cout << "wu" << ch;
break;
case 6:
cout << "liu" << ch;
break;
case 7:
cout << "qi" << ch;
break;
case 8:
cout << "ba" << ch;
break;
case 9:
cout << "jiu" << ch;
break;
}
}
}
long getNum(char *s)
{
long sum = 0;
for(int i = 0; i < strlen(s); i++)
sum += s[i] - '0';
return sum;
}
int main()
{
char n[MAX];
cin >> n;
trans(getNum(n));
return 0;
}