2013年4月_武科大程序设计大赛_解题报告(problem 1005)

A + B

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 9963    Accepted Submission(s): 5681


Problem 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 Output
  
  
3 90 96
用一个二维数组保存0-9的英文单词,对应的下标就是单词对应的整数。
剩下的就是将字符串转化为整数就够了。
ps(利用scanf("%s")读入数据,可以跳过空格)
#include<stdio.h>
#include<string.h>
int main()
{
    int s1,s2,i;
    char num[11][11]={"zero","one","two","three","four","five","six","seven","eight","nine","ten"};
    char a[20];			//将0-9的英文对应着存在num[][]中,用num的一维下标代表对应的数
    while(1)
    {
        s1=s2=0;
        while(scanf("%s",&a)&&a[0]!='+')
        {
            for(i=0;i<11;i++)
                if(strcmp(a,num[i])==0)
                {
                    s1=s1*10+i;			//将字符串转化为整数的通用方法
                }
        }
        while(scanf("%s",&a)&&a[0]!='=')
        {
            for(i=0;i<11;i++)
                if(strcmp(a,num[i])==0)
                {
                    s2=s2*10+i;
                }
        }
        if(s1+s2==0) break;			//题目意思输出的必为正数,所以为0则退出。
        printf("%d\n",s1+s2);
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TommyTT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值