【转】HDU-1228-A+B: strcmp();

C/C++函数,比较两个字符串

设这两个字符串为str1,str2,

若str1==str2,则返回零;

若str1>str2,则返回正数;

若str1<str2,则返回负数。

两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇‘\0‘为止。

#include<iostream>
#include<map>
#include<string>
#include<cstring>
using namespace std;
map<string,int>M;
int main()
{
        M["zero"]=0;M["one"]=1;M["two"]=2;M["three"]=3;M["four"]=4;M["five"]=5;
        M["six"]=6;M["seven"]=7;M["eight"]=8;M["nine"]=9;M["ten"]=10;
        while(1)
        {
                int A=0;
                char Str[10];
                while(cin>>Str && strcmp(Str,"+"))
                {
                        A=A*10+M[Str];
                }
                int B=0;
                while(cin>>Str && strcmp(Str,"="))
                {
                        B=B*10+M[Str];
                }
                if( A==0 && B==0 )
                    break;
                else
                    cout<<A+B<<endl;
        }
        return 0;
}

  

时间: 2024-10-19 14:12:09

【转】HDU-1228-A+B: strcmp();的相关文章

HDU 1228 A + B 的浙大考研题

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 + eig

[ACM] hdu 1228 A+B (字符串处理)

A + B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 11543    Accepted Submission(s): 6699 Problem Description 读入两个小于100的正整数A和B,计算A+B. 需要注意的是:A和B的每一位数字由对应的英文单词给出. Input 测试输入包含若干测试用例,每个测试用例占一行,

hdu 1228 A + B 详细题解 字符串/哈希

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1228 这道题可以同时用两种方法做,第一种是字符串,第二种是哈希. 第一种方法: 我们可以定义一个字符串类型的二位数组,存放"zero"--"nine"十个字符串 这十个字符串可以与下标0--9一一对应.这样就可以建立字符串与数字之间的关系了 char a[][10]={"zero","one","two",&q

题解报告:hdu 1228 A+B

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1228 题解思路:这道题本来想用gets函数,循环读进来的字符串,把每一个单词存到二维数组里面,再与已存在的二维数组进行比较.但看了别人的题解后才发现忘了scanf有这个功能即遇到空格.换行.回车.水平制表符.换页符.垂直制表符就会停止读取(这里用到的是空格的功能),不仅效率高,而且思路清晰,代码简洁. AC代码: 1 #include<bits/stdc++.h> 2 using namespac

HDU 1228 A + B (水题)

A + B Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 13260 Accepted Submission(s): 7797 Problem Description 读入两个小于100的正整数A和B,计算A+B. 需要注意的是:A和B的每一位数字由对应的英文单词给出. Input 测试输入包含若干测试用例,每个测试用例占一行,格式为"A

【HDU 1228】A + B

题 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 nin

HDU 1228 另类A+B

直接上题目,,略无聊.. A + B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 12635    Accepted Submission(s): 7407 Problem Description 读入两个小于100的正整数A和B,计算A+B. 需要注意的是:A和B的每一位数字由对应的英文单词给出. Input 测试输入包含若干测试

HDU 1228 A + B【字符串的处理】

//对字符串的处理很好 A + B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 12172    Accepted Submission(s): 7118 Problem Description 读入两个小于100的正整数A和B,计算A+B. 需要注意的是:A和B的每一位数字由对应的英文单词给出. Input 测试输入包含若干测试用

HDU 1228 A+B

A + B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 14543    Accepted Submission(s): 8629 Problem Description 读入两个小于100的正整数A和B,计算A+B.需要注意的是:A和B的每一位数字由对应的英文单词给出. Input 测试输入包含若干测试用例,每个测试用例占一行,格式

HDU 1228 字符串到数字的转化

一道水题,练练字符串的输入输出 1 #include <cstdio> 2 #include <cstring> 3 4 using namespace std; 5 char s1[15] , s2[15]; 6 7 int get_num(char *s) 8 { 9 if(s[0] == 'z') return 0; 10 else if(s[0] == 'o') return 1; 11 else if(s[0] == 't' && s[1] == 'w')