比如说,在对学生讲解第1234567009号位置上的碱基时,光看着数字是很难准确的念出来的。
所以,他迫切地需要一个系统,然后当他输入12 3456 7009时,会给出相应的念法:
十二亿三千四百五十六万七千零九
用汉语拼音表示为
shi er yi san qian si bai wu shi liu wan qi qian ling jiu
这样他只需要照着念就可以了。
你的任务是帮他设计这样一个系统:给定一个阿拉伯数字串,你帮他按照中文读写的规范转为汉语拼音字串,相邻的两个音节用一个空格符格开。
注意必须严格按照规范,比如说“10010”读作“yi wan ling yi shi”而不是“yi wan ling shi”,“100000”读作“shi wan”而不是“yi shi wan”,“2000”读作“er qian”而不是“liang qian”。
#include <stdio.h>
int main()
{
char *num[] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
char *wei[] = {"shi", "bai", "qian", "wan", "yi"};
char *str[20];
int i, j, k, n, l[2] = {0};
i = 0;
j = 0;
scanf("%d", &n);
while(n > 0)
{
k = n % 10;
n /= 10;
if(k > 0)
{
if(i > 0)
{
if(i >= 4 && !l[i / 4 - 1])
{
l[i / 4 - 1] = 1;
str[j++] = wei[i / 4 + 2];
}
if(i % 4 != 0)
str[j++] = wei[i % 4 - 1];
}
str[j++] = num[k];
}
else if(j > 0 && str[j - 1] != num[0])
{
str[j++] = num[0];
}
i++;
}
if(!(str[j - 1] == "yi" && j > 1 && str[j - 2] == "shi"))
printf("%s ", str[j-1]);
for(i = j - 2; i >= 0; i--)
printf("%s ", str[i]);
return 0;
}