PAT甲级 1061 Dating+测试点分析

题目

在这里插入图片描述
题目的意思就是给你四行字符串,让你解密最后的约会时间是多少,第一行和第二行字符串一样的第一个大写字母(A-G)之间,A代表周一依次类推。确定周几后找第二个位置相同的数字字符或大写字母(A-N)输出对应的时间,数字字符‘0’-‘9’表示0点-9点,大写字母‘A’表示10点往后依次类推。找一下第三行第四行相同的英文字母输出对应的位置(从0开始)。

思路

写一个循环第一行英文字母和第二行英文字母,找到相同位置的大写字母(A-G)就输出对应的周几缩写,可以写一个字符串数组来存储周几的缩写,调用一个字符串数组就可以了。可以定义一个变量用来确定大写字母是第几个相同的,不然易混。查找第二个相同的数字字符或大写字母时分两种情况。
第三行第四行直接遍历查找位置相同的英文字母输出位置即可。

测试点1,2,4都是因为查找第一行位置相同的英文字符,查找第一个范围要写‘A’-‘G’;查找第二个范围要写‘A’-‘N’;直接写‘A’-‘Z’导致结果不对。

代码

#include <bits/stdc++.h>
using namespace std;
int main()
{
    string s[5],week[8]={"","MON","TUE","WED","THU","FRI","SAT","SUN"};//周几的缩写
    for(int i=1;i<=4;i++)
        getline(cin,s[i]);
    int f=0;
    for(int i=0;i<min(s[1].size(),s[2].size());i++)
    {
        if(f&&s[1][i]==s[2][i]&&(s[1][i]>='A'&&s[1][i]<='N'))//第二个相同的英文字母
        {
            cout<<s[1][i]-'A'+10<<":";
            break;
        }
        if(f&&s[1][i]==s[2][i]&&(s[1][i]>='0'&&s[1][i]<='9'))//第二个相同的字符
        {
            printf("%02d:",s[1][i]-'0');
            break;
        }
        if(s[1][i]==s[2][i]&&(s[1][i]>='A'&&s[1][i]<='G'))
        {
            f++;
            if(f==1)//第一个相同字符
            {
                cout<<week[s[1][i]-'A'+1]<<" ";
            }
        }
    }
    for(int i=0;i<min(s[3].size(),s[4].size());i++)
    {
        if(s[3][i]==s[4][i]&&((s[3][i]>='a'&&s[3][i]<='z'||(s[3][i]>='A'&&s[3][i]<='Z'))))
        {
            printf("%02d",i);
            break;
        }
    }
    return 0;
}
  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值