A + B (1010)

来源:互联网 发布:软件测试x模型 编辑:程序博客网 时间:2024/06/06 00:21

题目描述:                       

读入两个小于100的正整数A和B,计算A+B.
需要注意的是:A和B的每一位数字由对应的英文单词给出.
输入:                       
测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为0时输入结束,相应的结果不要输出.
输出:                       
对每个测试用例输出1行,即A+B的值.
样例输入:                       
one + two =three four + five six =zero seven + eight nine =zero + zero =
样例输出:                       
39096
---------------------------------------------------------------
<span style="font-size:12px;">#include<stdio.h>#include<string.h>int CtoD(char s[]){       if(s[0]=='z')        return 0;    if(s[0]=='o')        return 1;    if(s[0]=='e')        return 8;    if(s[0]=='n')        return 9;    if(s[1]=='w')        return 2;    if(s[1]=='h')        return 3;    if(s[1]=='o')        return 4;    if(s[0]=='f')        return 5;    if(s[1]=='i')        return 6;    if(s[0]=='s')        return 7;}void main(){    char str[30];    int a,b,t;    char tmp[10];    int i,j,flag;    while(gets(str))    {        a=0;        b=0;        flag=-1;        t=1;        memset(tmp,0,10);        for(i=0,j=0;i<strlen(str);i++)        {            if(str[i]!='+' && flag ==-1)            {                if(str[i]!=' ')                {                    tmp[j++]=str[i];                    continue;                }                else                {                    a=a*t+CtoD(tmp);                    t*=10;                      memset(tmp,0,10);                    j=0;                    continue;                                     }            }            if(str[i]=='+')            {                flag=1;                 j=0;                memset(tmp,0,10);                t=1;                i=i+1;                continue;            }                         if(str[i]!='=' && flag !=-1)            {                if(str[i]!=' ')                {                    tmp[j++]=str[i];                    continue;                }                else                {                    b=b*t+CtoD(tmp);                    t*=10;                      memset(tmp,0,10);                    j=0;                    continue;                                     }            }        }        if(a==0 && b==0)            break;        printf("%d\n",a+b);    }}</span>
---------------------------------------------------------------
主要是数字单词的归类,空格的处理,以及a、b数字段的判断。
如有不同意见,欢迎交流!
---------------------------------------------------------------
 
 
 
 
 
来源:                        
2005年浙江大学计算机及软件工程研究生机试真题

 

 

 

 

0 0
原创粉丝点击