我这里有一个类似的程序,楼主的程序写起来有点大,仅供参考,当然如果不闲麻烦,可以用swich的case 语句结合来写,而我认为数的判定方式有多种,在这里,对于整数部分我们可以用将数值“三位为一组”来进行分!如:678为第一组,前面加上 thousand 345为第二组,前面加上 million 依次为 billion对于每组中的三个数分别含 百位 十位 个位 而小数点后面的则可以不用分位数,直接接对应的数!下面是类似程序: #includevoid main(){ char *Eng1[20]={"zero","one","two","three","four","five","six","seven", "eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen", "sixteen","seventeen","eighteen","nineteen"}; char *Eng2[8]={"twenty","thirty","fourty","fifty","sixty","seventy","eighty","ninety"}; int num; printf("请输入数字: "); scanf("%d",&num); printf("对应的英文为: "); if(num>=0&&num<=19) printf("%s\n",Eng1[num]); else if(num<100) { int s,y; s=num/10; y=num%10; printf("%s %s\n",Eng2[s-2],Eng1[y]); } else if(num<1000) { int b,s,y; b=num/100; y=num%100; if(y>9) { s=(num%100)/10; y=(num%100)%10; if(y==0) printf("%s hundred and %s\n",Eng1[b],Eng2[s-2]); else printf("%s hundred and %s %s\n",Eng1[b],Eng2[s-2],Eng1[y]); } else printf("%s hundred and %s\n",Eng1[b],Eng1[y]); }}