PAT_Basic — 1002
**
1002. 写出这个数 (20)
**
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
#include <iostream>
#include <string>
using namespace std;
void main(){
char num[101] = {};
char **name;
name = (char**)malloc(sizeof(char*)* 10);
name[0] = (char*)malloc(sizeof(char)* 10 * 5);
for (int i = 0; i < 10; i++){
name[i] = name[i - 1] + 5;
}
name[0] = "ling";
name[1] = "yi";
name[2] = "er";
name[3] = "san";
name[4] = "si";
name[5] = "wu";
name[6] = "liu";
name[7] = "qi";
name[8] = "ba";
name[9] = "jiu";
cin >> num;
//char zero = '0';
//int a = *num[1] - zero;
//cout << a;
int count = 0;
for (int i = 0; i < 101; i++){
if (num[i] == '\0')
break;
count += (num[i]) - '0';
}
cout << count << endl;
char num_str[4] = {};
sprintf(num_str, "%d", count);
for (int i = 0; i < 4; i++){
if (num_str[i] == '\0')
break;
int tmp = num_str[i] - '0';
cout << name[tmp] << " ";
}
cout << endl;
system("pause");
}