HDU 1228 (13.07.13)

来源:互联网 发布:淘宝网花肥 编辑:程序博客网 时间:2024/06/05 20:25

A + B

Time Limit:1000MS   Memory Limit:32768KB   64bit IO Format:%I64d & %I64u

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

39096水题 别的不说了~AC代码如下:
#include<stdio.h>#include<string.h>#include<stdlib.h>char list[10][10] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};int change(char *p) {if(strcmp(p, list[0]) == 0)return 0;else if(strcmp(p, list[1]) == 0)return 1;else if(strcmp(p, list[2]) == 0)return 2;else if(strcmp(p, list[3]) == 0)return 3;else if(strcmp(p, list[4]) == 0)return 4;else if(strcmp(p, list[5]) == 0)return 5;else if(strcmp(p, list[6]) == 0)return 6;else if(strcmp(p, list[7]) == 0)return 7;else if(strcmp(p, list[8]) == 0)return 8;else if(strcmp(p, list[9]) == 0)return 9;}int main() {char str[100];int t1 = 0;int t2 = 0;int flag = 0;while(1) {scanf("%s", &str);if(str[0] != '=') {if(str[0] == '+')flag = 1;if(str[0] != '+' && flag == 0) {t1 = t1 * 10 + change(str);}if(str[0] != '+' && flag == 1) {t2 = t2 * 10 + change(str);}}else {if(t1 == 0 && t2 == 0)break;else {printf("%d\n", t1 + t2);t1 = t2 = 0;flag = 0;}}}return 0;}