#include <stdio.h>
void swtich_p(int h) //将数字转化为汉字拼音
{
switch (h)
{
case 1:printf_s("yi"); break;
case 2:printf_s("er"); break;
case 3:printf_s("san"); break;
case 4:printf_s("si"); break;
case 5:printf_s("wu"); break;
case 6:printf_s("liu"); break;
case 7:printf_s("qi"); break;
case 8:printf_s("ba"); break;
case 9:printf_s("jiu"); break;
case 0:printf_s("ling"); break;
}
}
int main(void)
{
int m=0,num=0;
while ((m = getchar()) != '\n') //单独取出每一位数
if(m <= 57 && m >= 48) num += (m - 48); //滤掉非数字字符(这是后来加的加了也没用还是过不了),将数字字符的acill转化为数字,并相加
do
{
if (num / 100)
{
swtich_p(num / 100);
num -= 100 * (num / 100);
}
else if (num / 10)
{
swtich_p(num / 10);
num -= 10 * (num / 10);
}
else
{
swtich_p(num);
num /= 10;
}
}
while (num != 0 && printf_s(" ")); //短路运算字符间留“ ”
return 0;
}
来来回回改了几遍还是过不去
你没有控制输入的数字个数不超过100
供参考:
#include<stdio.h>
int main()
{
int a[10]={0},m=0,i=0;
char *s[]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
char ch;
while((ch=getchar())!='\n'){
if(ch>='0' && ch<='9') m += ch-'0';
}
while(m){
a[i++] = m%10;
m /= 10;
}
for(i--;i>=0;i--)
printf("%s%c",s[a[i]],i==0?'\n':' ');
return 0;
}