• 字符串处理,Poj(2121)


    题目链接:http://poj.org/problem?id=2121

    差一点就WA哭了,主要是自己傻逼了。

    思路:

    遇到hundred,sum*100;

    但是遇到thouthend,million,ans+=sum*(... ...),sum=0;

    因为到了thouthend,million,后面肯定又是新的数字,跟前面的没关系了,sum=0;

    而hundred,后面是可以再加数的,比如22,所以这里只要sum*=100;

    注意:

    这里经典的一招,杰哥教我的,要重置一下order,只需要order[k]='/0';

    而不需要memset了。

    #include <stdio.h>
    #include <iostream>
    #include <string.h>
    
    using namespace std;
    
    char str[200];
    
    int main()
    {
        while(gets(str))
        {
            //printf("%s",str);
            if(strcmp(str,"")==0)
                break;
            bool flag = false;
            int ans=0;
            int sum=0;
            char order[30]={''};
            int k=0;
            for(int i=0;i<strlen(str)+1;i++)
            {
                if(str[i]!=' '&&str[i]!='')
                    order[k++] = str[i];
                else{
                    order[k] = '';
                    k=0;
                    if(!strcmp(order,"negative")) flag = true;
                    if(!strcmp(order,"zero")) sum+=0;
                    if(!strcmp(order,"one")) sum+=1;
                    if(!strcmp(order,"two")) sum+=2;
                    if(!strcmp(order,"three")) sum+=3;
                    if(!strcmp(order,"four")) sum+=4;
                    if(!strcmp(order,"five")) sum+=5;
                    if(!strcmp(order,"six")) sum+=6;
                    if(!strcmp(order,"seven")) sum+=7;
                    if(!strcmp(order,"eight")) sum+=8;
                    if(!strcmp(order,"nine")) sum+=9;
                    if(!strcmp(order,"ten")) sum+=10;
                    if(!strcmp(order,"eleven")) sum+=11;
                    if(!strcmp(order,"twelve")) sum+=12;
                    if(!strcmp(order,"thirteen")) sum+=13;
                    if(!strcmp(order,"fourteen")) sum+=14;
                    if(!strcmp(order,"fifteen")) sum+=15;
                    if(!strcmp(order,"sixteen")) sum+=16;
                    if(!strcmp(order,"seventeen")) sum+=17;
                    if(!strcmp(order,"eighteen")) sum+=18;
                    if(!strcmp(order,"nineteen")) sum+=19;
                    if(!strcmp(order,"twenty")) sum+=20;
                    if(!strcmp(order,"thirty")) sum+=30;
                    if(!strcmp(order,"forty")) sum+=40;
                    if(!strcmp(order,"fifty")) sum+=50;
                    if(!strcmp(order,"sixty")) sum+=60;
                    if(!strcmp(order,"seventy")) sum+=70;
                    if(!strcmp(order,"eighty")) sum+=80;
                    if(!strcmp(order,"ninety")) sum+=90;
                    if(!strcmp(order,"hundred"))
                    {
                        sum=sum*100;
                    }
                    if(!strcmp(order,"thousand"))
                    {
                        ans = ans+sum * 1000;
                        sum = 0;
                    }
                    if(!strcmp(order,"million"))
                    {
                        ans =ans+sum *1000000;
                        sum = 0;
                    }
                }
            }
    
    
            if(flag)
                printf("-%d
    ",ans+sum);
            else printf("%d
    ",ans+sum);
        }
        return 0;
    }
  • 相关阅读:
    二级菜单jquery
    js二级导航
    append appendChild appendTo区别
    cssText在 IE6/7/8和chrome/Firefox/IE9+的不同
    cssText
    css slice和splice
    js字符串函数之substring() substr()
    js字符串函数之split()join()
    Python面向对象之:三大特性:继承,封装,多态以及类的约束
    Python3 面向对象之:多继承
  • 原文地址:https://www.cnblogs.com/TreeDream/p/5699785.html
Copyright © 2020-2023  润新知