计算形如one + two three = 以前提过有积分,

来源:百度知道 编辑:UC知道 时间:2024/06/25 22:15:54
分在两次里。给解决了 ,去前面两帖回复一下,积分都给你。
http://zhidao.baidu.com/question/49711282.html
http://zhidao.baidu.com/question/49994164.html

============================================
输入:two + three four =
输出:2 + 34 = 36

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int trans(char str[])
{ int n,i;
char *num[]={"zero","one","two","three","four","five","six","seven","eight","nine","+","="};
for(i=0;i<=11;i++)
if(strcmp(num[i],str)==0)return i;
return 12;
}

int main()
{
int trans(char str[]);
int sum,r,l,m,n,j,i,num[j],pl

根据你原有的code修改的,比对下吧.

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int trans(char str[])
{
int n,i;
char *num[]={"zero","one","two","three","four","five","six","seven","eight","nin
e","+","="};
for(i=0;i<=11;i++)
if(strcmp(num[i],str)==0) break;
return i;
}

int main()
{
int sum,r,l,m,n,j,i,num[8],pl,eq;
char str[10][6];
n=0;
int res, s_res;
while((s_res=scanf("%s",str[n]))==1 && strcmp(str[n++], "=")!=0);
for(i=0;i<n;i++)
{
num[i] = trans(str[i]);
if(num[i]==10)pl=i;
if(num[i]==11)eq=i;
}
r=0;
l=0;
j=0;
while(j<pl) r = 10 * r + num[j++];
while(++j<eq) l = 10 * l + num[j];
sum=r+l;
printf("%d + %d = %d\n",r,l,sum);