Description:
读入两个小于100的正整数A和B,计算A+B的值并输出。
需要注意的是:整数A和B的每一位数字由对应的英文单词给出。如整数34表示为three four。
Input:
测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔。当A和B同时为0时输入结束,此时的结果不要输出。
Input Sample:
one + two =
three four + five six =
zero seven + eight nine =
zero + zero =
Output:
对每个测试用例输出一行结果,即A+B的值,用数值形式输出。
Output Sample:
3 90 96
思路:本题主要考察字符串对应的数字转化,可以通过函数处理字符串返回数字进行处理。这样就转换成普通的A+B问题了。
仔细观察输入,在“+”之前的为A,“=”之前的为B,而且输入之间都存在空格,使用scanf("%s")处理将十分方便。
附代码如下:(个人水平能力有限,题目AC,但不知道是不是完全正确,如有错误请指出)
#include<stdio.h>
#include<string.h>
//字符串指针传入,返回对应意思的数字
int number(char *p){
char a[10][50]={"zero","one","two","three","four","five","six","seven","eight","nine"};
int i=-1;
while(strcmp(p,a[++i]));
return i;
}
int main(){
char ch[10000],plus[]="+",equal[]="=";
int a,b;
do{
scanf("%s",ch);
a=0;b=0;
while(strcmp(plus,ch)!=0){
a=a*10+number(ch);
scanf("%s",ch);
}//获得 A ,有曾考虑过是否可以使用do-while实现,好像也可?
scanf("%s",ch);
while(strcmp(equal,ch)!=0){
b=b*10+number(ch);
scanf("%s",ch);
}//获得 B
if(a+b!=0)
printf("%d\n",a+b);
}while(a+b!=0);//多次输入
return 0;
}