用中文写出数字
给一串数字串,请将其每一位数字相加,得到一个和,然后用中文的拼音将这个和的每一位“读”出来。
eg1: 输入123456789098765432
输出 ba jiu (因为以上数字每一位之和为89)
eg2:输入 1234567890987654321123456789
输出 yi san wu
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#define N 50
void transform(int k);
void main()
{
char numstr[N];
//len计算输入数字个数,sum计算所有数字相加,count计算相加结果的位数,temp用于计算位数的临时变量
int i,len,sum=0, temp, count=1,k;
gets(numstr);
len = strlen(numstr);
//所有数字相加
for (i = 0; i < len; i++)
sum = sum + numstr[i]-'0';
temp = sum;
//计算结果位数
do
{
temp /= 10;
count++;
} while (temp / 10 != 0);
//提取每一位数字
for (i = count; i>0; i--)
{
k =sum / pow((float)10, i - 1);
k = k % 10;
transform(k);
}
printf("\n");
system("pause");
}
void transform(int k)
{
switch (k)
{
case 0:
printf("ling "); break;
case 1:
printf("yi "); break;
case 2:
printf("er "); break;
case 3:
printf("san "); break;
case 4:
printf("si "); break;
case 5:
printf("wu "); break;
case 6:
printf("liu "); break;
case 7:
printf("qi "); break;
case 8:
printf("ba "); break;
case 9:
printf("jiu "); break;
}
}