69,372
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <string.h>
#define max 50
char dest[10][max]={"zero","one","two","three","four","five","six","seven","eight","nine"};
char str[max];//输入
char temp[max];//用于缓存字符串
int m,n,s1,s2;//s1,s2存放+两边的数值
void input(char *string)
{
int k=0,len;
while(gets(string))
{
//getchar();
len=strlen(string);
for(int i=0;i<len;i++)
if(string[i]==' ')
k++;
if(k<=5)
break;
else
{
k=0;
printf("输入错误,请重新输入:\n");
continue;
}
}
}
//该函数传递数值
int function(char *string)
{
for(int i=0;i<10;i++)
{
if(strcmp(string,dest[i])==0)
break;
}
return i;
}
void oprate(char *string1,char *string2)
{
char temp_char;
while(1)
{
for(int i=0;string1[i]!=' ';i++);
strncpy(string2,string1,i);//截取字符串
string2[i]='\0';
temp_char=*(string1+i+1);//判断是否为'+'
if(temp_char!='+'&&temp_char!='=')
{
for(int j=0;j<10;j++)
if(!strcmp(string2,dest[j]))
{
//存放数值
m=function(dest[j])*10;
n+=m;
}
string1+=(i+1);//验证完毕之后,指针完后移动
}
else
{
if(temp_char=='=')
{
for(int j=0;j<10;j++)
if(!strcmp(string2,dest[j]))
{
//存放数值
m=function(dest[j]);
n+=m;
s2=n;
n=0;
}
}
else
{
for(int j=0;j<10;j++)
if(!strcmp(string2,dest[j]))
{
//存放数值
m=function(dest[j]);
n+=m;
s1=n;
n=0;
}
}
string1+=(i+3);//验证完毕之后,指针完后移动
}
if(temp_char=='=')
break;
}
}
int main(void)
{
char ch;
printf("输入任意键继续(q退出):\n");
while((ch=getchar())!='q')
{
getchar();
printf("请输入:\n");
input(str);
oprate(str,temp);
printf("结果如下:\n");
printf("%d + %d =%d\n",s1,s2,s1+s2);
printf("输入任意键继续(q退出):\n");
}
return 0;
}