#include
int main()
{
int a;
int t=1;
scanf("%d",&a);
if(a<0){
printf("fu ");
a=-a;
}
int b=a;
while(a>9){
a/=10;
t=t*10;
}
while(b>0){
int digit=b/t;if(b=0){
printf("ling");
}
switch (digit){
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;
case 0:
printf("ling ");
}
b=b%t;
t=t/10;
}
return 0;
}
题主的代码修改如下,改动处见注释,供参考:
#include <stdio.h>
int main()
{
int a;
int t=1;
scanf("%d",&a);
if(a<0){
printf("fu ");
a=-a;
}
int b=a;
while(a>9){
a/=10;
t=t*10;
}
while(t > 0){ //while(b>=0) 修改
int digit = b/t;
//if(b==0){//if(b=0) 修改
// printf("ling"); 修改
//} 修改
switch (digit){
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;
case 0:
printf("ling ");
break;
}
b=b%t;
t=t/10;
}
return 0;
}
#include <stdio.h>
int main()
{
char *s[] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu" };
int digit[10];
int n,y,i;
scanf("%d", &n);
if (n < 0)
{
n = -n;
printf("fu ");
}
for(i=0;n;i++)
{
y = n % 10;
digit[i] = y;
n /= 10;
}
for (i=i-1; i > 0; i--)
printf("%s ", s[digit[i]]);
printf("%s", s[digit[0]]);
return 0;
}