2018年中南大学机试题b题
作者:互联网
2018年中南大学机试题b题
题目描述
读入两个小于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;
}
标签:word,试题,中南大学,int,len,++,zero,2018,str 来源: https://blog.csdn.net/Mrs_Jiangmengxia/article/details/104882538