读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10^100。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
这个题的思路就是将输入的值赋值到字符数组中,然后将字符数组减去48 算出总和,然后再求出总和共多少位然后输出。下面是我写的代码
#include<stdio.h>
#include<math.h>
int main ()
{
char a[ 100 ];
int sum = 0, c = 0, ss = 0;//c用于记录数字
int gg = 0, z = 0;
int mm = 0;
gets (a);//输入到字符数组,算出总和
for ( int x = 0; a[ x ] != '\0'; x++ )
{
sum = a[ x ] - 48 + sum;
}
ss = sum;
//判断多少位
while ( sum != 0 )
{
sum /= 10;
c++;
}
// 开始输出
for ( int i = c; i>0; i-- )
{
z=ss / pow (10, i-1);
z = z % 10;
if ( i == 1 )
{
switch ( z )
{
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;
}
}
else
{
switch ( z )
{
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;
}
}
}
getchar ();
return 0;
}