题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1228
题解思路:这道题本来想用gets函数,循环读进来的字符串,把每一个单词存到二维数组里面,再与已存在的二维数组进行比较。但看了别人的题解后才发现忘了scanf有这个功能即遇到空格、换行、回车、水平制表符、换页符、垂直制表符就会停止读取(这里用到的是空格的功能),不仅效率高,而且思路清晰,代码简洁。
AC代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 char t[10][10]={"zero","one","two","three","four","five","six","seven","eight","nine"};//先用二维数组保存对应的数字 4 int fd(char str[])//查找字符串 5 { 6 int i; 7 for(i=0;i<10;i++) 8 if(!strcmp(t[i],str))break; 9 return i;//返回该字符串对应的数字 10 } 11 int main() 12 { 13 14 char c[10]; 15 int a,b; 16 while(1){ 17 a=b=0; 18 while(scanf("%s",c)&&strcmp(c,"+"))a=a*10+fd(c);//遇到‘+‘就会结束当前循环 19 while(scanf("%s",c)&&strcmp(c,"="))b=b*10+fd(c);//遇到‘=‘就会结束当前循环 20 if(a==0&&b==0)break;//题目要求当A、B都为0时停止输入 21 else cout<<(a+b)<<endl;//直接计算输出结果 22 } 23 return 0; 24 }