题解报告:hdu 1228 A+B(字符串)
2024-09-30 16:20:44
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1228
Problem 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
3 90 96
题解思路:这道题本来想用gets函数,循环读进来的字符串,把每一个单词存到二维数组里面,再与已存在的二维数组进行比较。但看了别人的题解后才发现忘了scanf有这个功能即遇到空格、换行、回车、水平制表符、换页符、垂直制表符就会停止读取(这里用到的是空格的功能),不仅效率高,而且思路清晰,代码简洁。
AC代码:
#include<bits/stdc++.h>
using namespace std;
char t[][]={"zero","one","two","three","four","five","six","seven","eight","nine"};//先用二维数组保存对应的数字
int fd(char str[])//查找字符串
{
int i;
for(i=;i<;i++)
if(!strcmp(t[i],str))break;
return i;//返回该字符串对应的数字
}
int main()
{ char c[];
int a,b;
while(){
a=b=;
while(scanf("%s",c)&&strcmp(c,"+"))a=a*+fd(c);//遇到'+'就会结束当前循环
while(scanf("%s",c)&&strcmp(c,"="))b=b*+fd(c);//遇到'='就会结束当前循环
if(a==&&b==)break;//题目要求当A、B都为0时停止输入
else cout<<(a+b)<<endl;//直接计算输出结果
}
return ;
}
最新文章
- oneM2M标准发展神速 实现万物联网的愿景
- Microsoft Dynamics CRM 2013 CD-KEY
- Merge Two Sorted Lists
- JSP和servlet有什么区别?
- 用PHP做服务器接口客户端用http协议POST访问安全性一般怎么做
- 数据库 SQL :有关 NULL 值引发 TRUE、FALSE、UNKNOW 三值逻辑
- 阻止事件冒泡(stopPropagation和cancelBubble)和阻止默认行为(preventDefault和returnValue)
- web运维第一篇:nginx配置文件详解笔记
- The server quit without updating PID file (mysql.pid)一次意外mysql停止运行备忘录
- Java的函数与函数重载
- 怎样将android studio项目导入eclipse
- ReferenceTypeDemo
- 【Electron】Electron开发入门
- (转)Linux命令unzip
- Android的微信智能心跳方案
- Ubuntu18.04更换国内源(阿里,网易,中科大,清华等源)
- tensorflow 经典教程及案例
- power designer的安装
- C# 8小特性
- 论文笔记-Mining latent relations in peer-production environments