A + B------HDOJ杭电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

题意很清楚啊!!!!!!

看不懂的是要闹哪样啊!!!!!!

好吧今天我就是水一贴的,

谁说我是水一贴的!!!!!!

很认真写的好不好!!!!!!

好吧这题一看的确感觉没什么算法可以用,纯粹就是按照题意慢慢敲代码,稍微理下思绪:

咱们分两组读取,一个是+以前的字符串,一个是+以后的字符串,以空格为读取结束符,定义cs数组存储读取的字符串,然后用strcmp判断出读取的是什么数字,当然开头要定义好0-9的字符串数组!!!!!!

嗯,思路完了!!!!!!

接下来就是代码时间:

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    int i,j,k;
    int t,n,m;
    int a,b,bj;
    char liu[100];
    char zm[16][6]={"zero","one","two","three","four","five","six","seven","eight","nine"};
    char cs[6];
    while(1)
    {
        memset(cs,0,strlen(cs));
        gets(liu);
        if(liu[0]==‘z‘&&liu[7]==‘z‘)
            break;
        for(i=0;i<strlen(liu);i++)   ///find ‘+‘;
            if(liu[i]==‘+‘)
            {
                bj=i;
                break;
            }
        a=0;
        for(i=0;i<bj;i++)
        {
            if(liu[i]==‘ ‘)
            {
                for(j=0;j<i;j++)     ///提取string
                {
                    cs[j]=liu[j];
                }
                cs[j]=‘\0‘;

                for(k=0;k<10;k++)
                    if(strcmp(cs,zm[k])==0)
                        a=k;
                memset(cs,0,strlen(cs));
                if(liu[i+1]!=‘+‘)
                {
                    k=0;
                    for(j=i+1;j<bj-1;j++)
                        cs[k++]=liu[j];
                    for(j=0;j<10;j++)
                        if(strcmp(cs,zm[j])==0)
                            a=a*10+j;
                }
                break;
            }
        }
        memset(cs,0,strlen(cs));
        b=0;
        for(i=bj+2;i<strlen(liu);i++)               ///确定a;
        {
            if(liu[i]==‘ ‘)
            {
                k=0;
                for(j=bj+2;j<i;j++)     ///提取string
                {
                    cs[k++]=liu[j];
                }
                cs[k]=‘\0‘;

                for(k=0;k<10;k++)
                    if(strcmp(cs,zm[k])==0)
                        b=k;
                memset(cs,0,strlen(cs));
                if(liu[i+1]!=‘=‘)
                {
                    k=0;
                    for(j=i+1;j<strlen(liu)-1;j++)
                        cs[k++]=liu[j];
                    cs[k-1]=‘\0‘;

                    for(j=0;j<10;j++)
                        if(strcmp(cs,zm[j])==0)
                            b=b*10+j;
                }
                break;
            }
        }
        printf("%d\n",a+b);
    }
    return 0;
}

写代码能力有限,如有编程爱好者发现BUG,还请指出,不胜感激!!!!!!

A + B------HDOJ杭电1228(读取字符串练基础),布布扣,bubuko.com

时间: 2024-10-12 13:35:23

A + B------HDOJ杭电1228(读取字符串练基础)的相关文章

魔咒词典------HDOJ杭电1880(字符串的处理,很简单)

Problem Description 哈利波特在魔法学校的必修课之一就是学习魔咒.据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一个需要的魔咒,所以他需要你的帮助. 给你一部魔咒词典.当哈利听到一个魔咒时,你的程序必须告诉他那个魔咒的功能:当哈利需要某个功能但不知道该用什么魔咒时,你的程序要替他找到相应的魔咒.如果他要的魔咒不在词典中,就输出"what?" Input 首先列出词典中不超过100000条不同的魔咒词条,每条格式

Is It A Tree?------HDOJ杭电1325(两种方法,可以用也可以不用并查集!!!!!!详解)

Problem Description A tree is a well-known data structure that is either empty (null, void, nothing) or is a set of one or more nodes connected by directed edges between nodes satisfying the following properties. There is exactly one node, called the

IP的计算------HDOJ杭电2206(写完脑洞大开,想象力要足够丰富)

Problem Description 在网络课程上,我学到了很多有关IP的知识.IP全称叫网际协议,有时我们又用IP来指代我们的IP网络地址,现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如192.168.100.16,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字). 但是粗心的我,常常将IP地址写错,现在需要你用程序来判断. Input 输入有多个c

饭卡------HDOJ杭电2546(还是01背包!!!!!!)

Problem Description 电子科大本部食堂的饭卡有一种非常诡异的设计,即在购买之前推断剩余金额. 假设购买一个商品之前,卡上的剩余金额大于或等于5元,就一定能够购买成功(即使购买后卡上剩余金额为负),否则无法购买(即使金额足够).所以大家都希望尽量使卡上的剩余金额最少. 某天,食堂中有n种菜出售.每种菜可购买一次. 已知每种菜的价格以及卡上的剩余金额,问最少可使卡上的剩余金额为多少. Input 多组数据.对于每组数据: 第一行为正整数n.表示菜的数量.n<=1000. 第二行包含

HDOJ(HDU) 2500 做一个正气的杭电人(水~)

Problem Description 做人要有一身正气,杭电学子都应该如此.比如我们今天的考试就应该做到"诚信"为上. 每次考试的第一个题目总是很简单,今天也不例外,本题是要求输出指定大小的"HDU"字符串,特别地,为了体现"正气"二字,我们要求输出的字符串也是正方形的(行数和列数相等). Input 输入的第一行包含一个正整数N(N<=20),表示一共有N组数据,接着是N行数据,每行包含一个正整数M(M<=50),表示一行内有M个

字符串统计(杭电2017)

/*字符串统计 Problem Description 对于给定的一个字符串,统计其中数字字符出现的次数. Input 输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串. Output 对于每个测试实例,输出该串中数值的个数,每个输出占一行. Sample Input 2 asdfasdf123123asdfasdf asdf111111111asdfasdfasdf Sample Output 6 9 */ #include<cstdi

杭电2005(第几天?)java字符串水过

点击打开杭电2005 1.split的应用:将字符串以某某字符为界划分为多个字符串 2.面向对象的编程 Problem Description 给定一个日期,输出这个日期是该年的第几天. Input 输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的. Output 对于每组输入数据,输出一行,表示该日期是该年的第几天. Sample Input 1985/1/20 2006/3/12 Sample Out

hdoj 1290 献给杭电五十周年校庆的礼物 【几何模板】

献给杭电五十周年校庆的礼物 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7597    Accepted Submission(s): 4145 Problem Description 或许你曾经牢骚满腹 或许你依然心怀忧伤 或许你近在咫尺 或许你我天各一方 对于每一个学子 母校 永远航行在 生命的海洋 今年是我们杭电建校五十周年,

杭电ACM分类

杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 童年生活二三事 递推题1008 University 简单hash1009 目标柏林 简单模拟题1010 Rails 模拟题(堆栈)1011 Box of Bricks 简单题1012 IMMEDIATE DECODABILITY