首页 > 其他 > 详细

PAT(Basic Level) Practice : 1044 火星数字 (20分)

时间:2020-09-25 08:15:36      阅读:49      评论:0      收藏:0      [点我收藏+]

1044 火星数字 (20分)

输入错误

这是一个很坑的地方
输入是

4
29
5
elo nov
tam

第一步cin>>4之后
要加一步getline,把4这行读取了。然后再按行读取内容
因为getline是从第一行“4”开始读取的,如果不注意,会造成错误

代码

#include <iostream>
#include"stdlib.h"
#include <vector>
#include <string>
#include <cstdio>
//scanf printf防止超时
#include <algorithm>
//vector的sort
#include <sstream>
//转换
using namespace std;

#include<iomanip>
//精度

#include<cmath>
//round四舍五入取整


int main()
{
    int num;
    cin>>num;
    vector<string> strs;
    string low[13]= {"tret","jan","feb","mar","apr","may","jun","jly","aug","sep","oct","nov","dec"};
    string high[13]={"tret","tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mer","jou"};

    string s;
    getline(cin,s);
    for(int i=0;i<num;i++)
    {
        string str;
        getline(cin,str);
        if(str[0]>=‘0‘&&str[0]<=‘9‘)
        {
            stringstream ss;
            ss<<str;
            int temp;
            ss>>temp;
            int n1=temp/13;
            int n2=temp%13;
            if(temp<13)
            {
                cout<<low[n2]<<endl;
            }else if(n2==0)
            {
                cout<<high[n1]<<endl;
            }else
            {
                cout<<high[n1]<<" "<<low[n2]<<endl;
            }

        }else if(str.length()==3)
            {
                if(str=="tret")
                    cout<<0<<endl;
                for(int i=1;i<13;i++)
                {
                    if(str==low[i])
                    {
                        cout<<i<<endl;
                    }
                    if(str==high[i])
                    {
                        cout<<i*13<<endl;
                    }
                }
            }
            else{
                int sum=0;


                for(int i=1;i<13;i++)
                {
                    if(str.substr(0,3)==high[i])
                    {
                        sum+=i*13;
                    }
                    if(str.substr(4,3)==low[i])
                    {
                        sum+=i;
                    }
                }
                cout<<sum<<endl;
            }

    }

    return 0;
}

PAT(Basic Level) Practice : 1044 火星数字 (20分)

原文:https://www.cnblogs.com/zchq/p/13727572.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!