2018年中南大学机试题b题

2018年中南大学机试题b题

题目链接
2018年中南大学机试题全部讲解链接

题目描述

读入两个小于100的正整数A和B,计算A+B,注意: A+B的每一位由对应的英文字母给出。

输入

测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为zero时输入结束,相应的结果不要输出.

输出

对每个测试用例输出1行,即A+B的值.

样例输入

one + two =
three four + five six =
zero + zero =

样例输出

3
90

题目思路

这道题和之前讲过的单词替换这题思路是一样的,单词替换是将字符串分成一个个单词,这道题也是一样。然后再进行计算。上代码

#include<stdio.h>
#include<string.h>
char digit[12][10] = {"zero","one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
int judge(char *s)
{
    for(int i = 0; i < 10; i++)
    {
        if(!strcmp(digit[i], s))
            return i;
    }
}
int main()
{
    char str[100];
    int len, p;
    char word[20][20];
    int a, b, pow, temp, d[2][2], j;
    while(gets(str))
    {
        int l = strlen(str);
        p = len = 0;
        for(int i = 0; i < l; i++)
        {
            if(str[i] == '=')
            {
                continue;
            }
            if(str[i] == ' ')
            {
                word[len++][p] = '\0';
                p = 0;
            }
            else
                word[len][p++] = str[i];
        }
        pow = 1;
        p = 1;
        j = 0;
        memset(d, 0, sizeof(d));
        for(int i = len - 1; i >= 0; i--)
        {
            if(!strcmp(word[i], "+"))
            {
                p = 1;
                j++;
                continue;
            }
            d[j][p] = judge(word[i]);
            p--;
        }
        a = d[0][0] * 10 + d[0][1];
        b = d[1][0] * 10 + d[1][1];
        if(a == b && b == 0)
            break;
        printf("%d\n", a+b);
    }
    return 0;
}
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Bep_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值