首页 > 其他分享 >PAT 乙级 1014题(为什么有测试点不对,求助)

PAT 乙级 1014题(为什么有测试点不对,求助)

时间:2024-07-27 22:59:56浏览次数:15  
标签:输出 PAT 测试点 str1 char 字符串 && 1014 数据

题目:福尔摩斯的约会

大侦探福尔摩斯接到一张奇怪的字条:

我们约会吧! 
3485djDkxh4hhGE 
2984akDfkkkkggEdsb 
s&hgsfdk 
d&Hyscvnm

大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间星期四 14:04,因为前面两字符串中第 1 对相同的大写英文字母(大小写有区分)是第 4 个字母 D,代表星期四;第 2 对相同的字符是 E ,那是第 5 个英文字母,代表一天里的第 14 个钟头(于是一天的 0 点到 23 点由数字 0 到 9、以及大写字母 AN 表示);后面两字符串第 1 对相同的英文字母 s 出现在第 4 个位置(从 0 开始计数)上,代表第 4 分钟。现给定两对字符串,请帮助福尔摩斯解码得到约会的时间。

输入格式:

输入在 4 行中分别给出 4 个非空、不包含空格、且长度不超过 60 的字符串。

输出格式:

在一行中输出约会的时间,格式为 DAY HH:MM,其中 DAY 是某星期的 3 字符缩写,即 MON 表示星期一,TUE 表示星期二,WED 表示星期三,THU 表示星期四,FRI 表示星期五,SAT 表示星期六,SUN 表示星期日。题目输入保证每个测试存在唯一解。

输入样例:

3485djDkxh4hhGE 
2984akDfkkkkggEdsb 
s&hgsfdk 
d&Hyscvnm

输出样例:

THU 14:04

解题思路:

        先设置了一个函数用于判断是否放入的两个字符是相同的。再开始寻找复合条件的输出数据1、数据2、数据3,并对其进行输出,输出数据1的时候采用switch语句来进行判断输出何种语句,输出数据2的时候需要进行判断是位于0~9还是A~N的情况再进行输出,输出数据3的时候需要判断是<10还是>10,如果<10就需要对高位进行补位的操作。

注意:

        ①输出部分1:其输出字符是位于A~N;

        ②输出部分2:其输出字符是位于0~9或A~N;

        ③输出的时候如果输出的时钟或分钟是小于10的,就必须在高位上补0,例如:8:2要写成08:02 。

        ④输出的数据其类型必须是char型(输出数据1和数据2)

#include<iostream>
#include<string>
using namespace std;

//判断字符串对应位置是否相同
bool is_string_same(char a,char b)
{
	if(a != b)
	{
		return false;
	}
	else
	{
		return true;
	}
}

int main()
{
	string str1,str2,str3,str4;      //用于存放字符串
	cin>>str1;
	cin>>str2;
	cin>>str3;
	cin>>str4;
	char answer1=0;    //用于记录数据1
	char answer2=0;    //用于记录数据2
	int answer3=0;      //用于记录数据3
	int num=0;    //用于记录str1与str2相同的字符个数

	//找数据1、2
	for(int i=0;;i++)
	{
		if(str1[i] == NULL || str2[i] == NULL)    //当遍历完整个字符串依旧没有找到对应的字符就需要退出
		{
			return 0;
		}
		if(is_string_same(str1[i],str2[i]) && str1[i] >= 'A' && str1[i] <= 'N')     //找到字符串1、2中第一个相同的字符,且这个字符是A~G
		{
			num++;    //记录此时是第几次相同
			if(num == 1)     //第一次相同
			{
				answer1 = str1[i];
			}
			else      //第二次相同
			{
				if(is_string_same(str1[i],str2[i]) && ((str1[i] >= 'A' && str1[i] <= 'N') || (str1[i] >= '0' && str1[i] <= '9')))     //找到字符串1、2中第二个相同的字符,且这个字符是A~N或数字0~9)
				{
					answer2 = str1[i];
					break;     //找到两次相同的字符,退出循环
				}
			}
		}
	}

	//找数据3
	for(int i=0;;i++)
	{
		if(str3[i] == NULL || str4[i] == NULL)    //当遍历完整个字符串依旧没有找到对应的字符就需要退出
		{
			return 0;
		}
		if(is_string_same(str3[i],str4[i]) && ((str3[i] >= 'a' && str3[i] <= 'z') || (str3[i] >= 'A' && str3[i] <= 'Z')))     //找到字符串3、4中字符相同的位置,并且这个字符必须是小写字母
		{
			answer3 = i;
			break;
		}
	}

	//输出1
	switch((int)(answer1-65) % 7)
	{
		case 0:cout<<"MON"<<" ";break;
		case 1:cout<<"TUE"<<" ";break;
		case 2:cout<<"WED"<<" ";break;
		case 3:cout<<"THU"<<" ";break;
		case 4:cout<<"FRI"<<" ";break;
		case 5:cout<<"SAT"<<" ";break;
		case 6:cout<<"SUN"<<" ";break;
	}

	//输出2
	if(answer2 - 48 < 10)   //表示B是0~9,需要输出0_
	{
		cout<<"0"<<answer2-48<<":";
	}
	else    //表示B是A~N中的数
	{
		cout<<answer2-55<<":";
	}

	//输出3
	if(answer3 < 10)    //如果<10就要补0
	{
		cout<<"0"<<answer3;
	}
	else
	{
		cout<<answer3;
	}
	system("pause");
	return 0;
}

标签:输出,PAT,测试点,str1,char,字符串,&&,1014,数据
From: https://blog.csdn.net/weixin_66512566/article/details/140726189

相关文章

  • PAT 乙级 1015题(为什么有测试点不对,求助)
    题目:德才论宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其得小人,不若得愚人。”现给出一批考生的德才分数,请根据司马光的理论给出录取排名。输入格式:输......
  • 常用设计模式-单例模式(Singleton pattern)
    常用设计模式-单例模式(Singletonpattern)一、单例模式目的使用单例模式第一步要了解其作用,单例理解为一个实例(oneinstance)。保证一个类只有一个它的实例。在实际开发中,如线程池,数据库连接对象等。二、实现思路为了保证oneclassoneinstance①则需要保证实例全局唯一,保......
  • 使用 docker run 将 Python 单击选项传递给 ENTRYPOINT 会出现错误:“在 $PATH 中找不
    我有一个简单的python脚本,我想在docker容器内运行它。它打印一行消息“Hello{name}”。python脚本使用clickCLI界面来定义收件人名称,如果我直接运行它(不使用dockerrun命令),它将如下所示:pythonhello.py-nSmithDockerbuild命令:dockerbuild.-thello:1.......
  • Python爬虫技术 第16节 XPath
    XPath是一种在XML文档中查找信息的语言,尽管XML和HTML在语法上有区别,但XPath同样适用于HTML文档的解析,尤其是在使用如lxml这样的库时。XPath提供了一种强大的方法来定位和提取XML/HTML文档中的元素和属性。XPath基础XPath表达式由路径表达式组成,它们指定了文档中的位置。下......
  • Android开发- 正则表达式Pattern类与Matcher类的解析与使用
    简介使用正则表达式需要用到两个类:Pattern类与Matcher类其中Pattern类用来制定匹配规则,而Matcher类用来接收需要进行匹配的字符串Pattern类Patternpattern=Pattern.compile(Stringregex);:Pattern类的创建方法参数解析:regex:取值类型为正则表达式字符串;设置匹配规则......
  • 空间反演对称性 (Spatial Inversion Symmetry) 和非线性响应 (Non-linear Response)
    我们定义一次宇称变换(paritytransformation)为反转所有坐标:\[\mathcal{P}:\begin{pmatrix}x\\y\\z\end{pmatrix}\rightarrow\begin{pmatrix}-x\\-y\\-z\end{pmatrix}\]如果在一维世界中,宇称变换就像是透过“镜子”看这个世界;在三维世界中,则是将全部体系对于......
  • Pattern的多种匹配模式
    参考:好文→Pattern的多种匹配模式–《JAVA编程思想》42目录标题单行匹配多行匹配正则匹配忽略大小写Unicode字符集中的大小写敏感字符都将表示字面含义考虑字符的等价性会忽略正则表达式中的空格及#开始后面的部分只会将`\n`认作换行符`\w`可以匹配任何语言的......
  • XPath
    https://www.w3school.com.cn/xpath/xpath_syntax.asp  <?xmlversion="1.0"encoding="ISO-8859-1"?><bookstore>  <book>    <titlelang="eng">HarryPotter</title>    <price>29.99</......
  • Android开发 - Canvas中Path路径的详解与使用
    Path回顾Path类封装复合(多轮廓)几何路径由直线段、二次曲线和三次曲线组成。它可以用画布绘制:canvas.drawPath(path,paint),填充或笔划(基于绘画的样式),或者可以用于剪裁或绘制路径上的文本。Path既是路径,路径走多了就变成一种套路,只要我们会解套,那这种套路就是高速公路。路径走完形......
  • Hadoop(5-1) HBase 提示SLF4J: Class path contains multiple SLF4J bindings.
    Hadoop(5-1)HBase提示SLF4J:ClasspathcontainsmultipleSLF4Jbindings.问题描述在使用hbaseversion命令时,出现下列的警告信息 。SLF4J:ClasspathcontainsmultipleSLF4Jbindings.SLF4J:Foundbindingin[jar:file:/usr/local/hadoop-3.3.6/share/hadoop/com......