刚做的时候,思路错误,结果一直无法得到正确输出,在网上看了一下别人的代码,其实方法很简单。。。
把0,1,2,。。。。20,30,。。90存到一个数组里,n1,n2,n3代表每三位的数,刚开始自动匹配,n3开始计算,遇到million,thousand,hundred,再乘以10^n最后把n1,n2,n3加在一起就是所求结果。
#include<stdio.h>
#include<string.h>#include<stdlib.h>
char str[28][15]={"zero", "one", "two", "three", "four"
, "five", "six", "seven", "eight", "nine"
, "ten", "eleven", "twelve", "thirteen"
, "fourteen", "fifteen", "sixteen", "seventeen"
, "eighteen", "nineteen", "twenty", "thirty"
, "forty", "fifty", "sixty", "seventy"
, "eighty", "ninety"} ;
int main()
{
int i,n1,n2,n3,N;
char c,s[100];
while(scanf("%d",&N)!=EOF){
while(N--){
n1=0;n2=0;n3=0;
while(1){
scanf("%s",s);
if(s[0]=='m'){n1=(n2+n3)*1000000;n2=0;n3=0;}
if(strcmp(s,"thousand")==0){n2=n3*1000;n3=0;}
if(strcmp(s,"hundred")==0){n3*=100;}
for(i=0;i<20;i++){
if(strcmp(str[i],s)==0){n3+=i;break;}
}
for(i=20;i<28;i++){
if(strcmp(str[i],s)==0){n3+=(i-18)*10;break;}
}
c=getchar();
if(c=='\n') break;
}
printf("%d\n",n1+n2+n3);
}
}
system("pause");
return 0;
}