1002. 写出这个数 (20)

1002. 写出这个数 (20)

时间限制

400 ms

内存限制

65536 kB

代码长度限制

8000 B

判题程序

Standard

作者

CHEN, Yue

读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。

输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。

输入样例:

1234567890987654321123456789

输出样例:

yi san wu


代码:

#include#includeint main()

{

char bignumber[100];

int i;

int j;

int k;

int m;

int sum=0;

char str[4];

while(scanf("%s",bignumber)!=EOF){

sum =0;

for(i=0;i<100;i++){

if(charToDigit(bignumber[i])== 10){

break;

}

sum += charToDigit(bignumber[i]);

}

sprintf(str,"%d",sum);

for(i=0;i<4;i++){

if(i!=0){

//printf(" ");

}

printfPinyin(str[i],i);

}

}

return 0;

}

//根据传入的数字输出对应的拼音

int printfPinyin(int i,int j){

char numberPinyin[10][5]={

"ling",

"yi",

"er",

"san",

"si",

"wu",

"liu",

"qi",

"ba",

"jiu"

};

int x = charToDigit(i);

if(x!=10){

if(j == 0){

printf("%s",numberPinyin[x]);

}else{

printf(" ");

printf("%s",numberPinyin[x]);

}

}

return 0;

}

//解析字符的函数,传入一个字符,返回一个字符对应的整型数字

int charToDigit(int c){

switch(c){

case '0':

return 0;

case '1':

return 1;

case '2':

return 2;

case '3':

return 3;

case '4':

return 4;

case '5':

return 5;

case '6':

return 6;

case '7':

return 7;

case '8':

return 8;

case '9':

return 9;

default:

return 10;

}

}

运行结果:

1002. 写出这个数 (20)_第1张图片

你可能感兴趣的:(1002. 写出这个数 (20))