英文加法运算
别妄想泡我
816次浏览
2020年08月02日 00:28
最佳经验
本文由作者推荐
平庸的近义词-了解的近义词
#include
#include
char a[30];
char comp[10][6] = {"zero","one","two","three","four","five","six","seven","eight","nine"};
void StringBracket(char *str)//删除空格
{
int i,j,len;
len=strlen(str);
j=0;
for(i=0; i
if(str[i]!=' ')
{
str[j]=str[i];
j=j+1;
}
}
str[j]='0';
}
int calval(char *str) //计算每个表达式的值 形参接受数组a的地址
{
int i,j,len;
int a1=0,a2=-1,b1=0,b2=-1;//每个表达式最多有4个整数
char str1[20],str2[20];//分解为两个字符串
char stra1[10],stra2[10]={0},strb1[10],strb2[10]={0};//每个字符串最多分解为两个子串
len=strlen(str); //把数组a的长度付给变量len
for(i=0; i
str1[i]=str[i];
if(str[i]=='+')
{
str1[i]='0';
for(j=i+1; j
str2[len-i-2]='0';
break;
}
}
len=strlen(str1);
for(i=0; i
stra1[i]=str1[i];
if(i>1 && str1[i]==' ')
{
stra1[i]='0';
for(j=i+1; j
stra2[len-i-1]='0';
break;
}
}
len=strlen(str2);
for(i=0; i
strb1[i]=str2[i];
if(i>1 && str2[i]==' ') //i>1表示不考虑前面的空格
{
strb1[i]='0';
for(j=i+1; j
strb2[len-i-1]='0';
break;
}
}
StringBracket(stra1);
StringBracket(stra2);
StringBracket(strb1);
StringBracket(strb2);
for(i=0; i<10; i++)
{
if(strcmp(stra1,comp[i])==0)ta1=i;
if(strcmp(stra2,comp[i])==0)ta2=i;
if(strcmp(strb1,comp[i])==0)tb1=i;
if(strcmp(strb2,comp[i])==0)tb2=i;
}
if(a2>=0) a1=a1*10+a2; //a2初始化为-1,>=0表示为两位数
if(b2>=0) b1=b1*10+b2;
return a1+b1;
}
int main()
{
int i,val;
char str[10];
while(1)
{
gets(a); //从键盘获取字符串保存在数组a中
val=calval(a);
itoa(val, str, 10);//整数转换为字符串
for(i=0;i
printf("
");
}
return 0;
}