读书人

one+two=3,该如何处理

发布时间: 2012-04-23 13:17:38 作者: rapoo

one+two=3
这个题完全没有思路,不知道从哪里下手
先发下描述


Description
读入两个小于100 的正整数A 和B,计算A+B。需要注意的是:A 和B 的每一位数字
由对应的英文单词给出。
Input
测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有
一个空格间隔。当A 和B 同时为0 时输入结束,相应的结果不要输出。
Output
对每个测试用例输出1 行,即A+B 的值。
Sample Input
one + two =
three four + five six =
zero seven + eight nine =
zero + zero =
Sample Input
3
90
96

[解决办法]
#include "stdio.h"
#include "string.h"

int swp(char a[10]);
int scan(void);
int main(int argc, char* argv[])
{
printf("input english number:\n");
int s1 = scan();
int s2 = scan();
printf("%d\n",s1+s2);
return 0;
}

int scan(void)
{
char a[10];
int g0,g1;
scanf("%s",a);
g0 = swp(a);
scanf("%s",a);
if((strcmp(a,"+")==0)||(strcmp(a,"=")==0))
{
return g0;
}
else
{
g1 = swp(a);
}
scanf("%s",a);
if((strcmp(a,"+")==0)||(strcmp(a,"=")==0))
{
return g0*10+g1;
}
}

int swp(char a[10])
{
int c;
if (strcmp(a,"zero")==0) c=0;
else if(strcmp(a,"one")==0)c=1;
else if(strcmp(a,"two")==0) c=2;
else if(strcmp(a,"three")==0) c=3;
else if(strcmp(a,"four")==0)c=4;
else if(strcmp(a,"five")==0)c=5;
else if(strcmp(a,"six")==0)c=6;
else if(strcmp(a,"seven")==0)c=7;
else if(strcmp(a,"eight")==0)c=8;
else if(strcmp(a,"nine")==0)c=9;
return c;
}
[解决办法]
那我也来写一个吧:

C/C++ code
#include <iostream>#include <string>using namespace std;int main(){    string word;    int i, a[2], b[2];    int first, second, sum;    while(1)    {        a[1] = a[2] = b[1] = b[2] = 10;        i = 0;        while(cin >> word)        {            if("zero" == word)                a[i] = 0;            if("one" == word)                 a[i] = 1;            else if("two" == word)                a[i] = 2;            else if("three" == word)                a[i] = 3;            else if("four" == word)                a[i] = 4;            else if("five" == word)                a[i] = 5;            else if("six" == word)                a[i] = 6;            else if("seven" == word)                a[i] = 7;            else if("eight" == word)                a[i] = 8;            else if("nine" == word)                a[i] = 9;            else if("+" == word)                break;            i++;        }        i = 0;        while(cin >> word)        {            if("zero" == word)                b[i] = 0;            if("one" == word)                 b[i] = 1;            else if("two" == word)                b[i] = 2;            else if("three" == word)                b[i] = 3;            else if("four" == word)                b[i] = 4;            else if("five" == word)                b[i] = 5;            else if("six" == word)                b[i] = 6;            else if("seven" == word)                b[i] = 7;            else if("eight" == word)                b[i] = 8;            else if("nine" == word)                b[i] = 9;            else if("=" == word)                break;            i++;        }        if(10 == a[1])            first = a[0];        else            first = a[0] * 10 + a[1];        if(10 == b[1])            second = b[0];        else            second = b[0] * 10 + b[1];        sum = first + second;        if(0 == sum)            break;        cout << sum << endl;    }    return 0;} 

读书人网 >C语言

热点推荐