1014 福尔摩斯的约会

香可可 2019-02-09 09:32:10
时间限制
100 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间“星期四 14:04”,因为前面两字符串中第1对相同的大写英文字母(大小写有区分)是第4个字母'D',代表星期四;第2对相同的字符是'E',那是第5个英文字母,代表一天里的第14个钟头(于是一天的0点到23点由数字0到9、以及大写字母A到N表示);后面两字符串第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
//我想了很多遍,我觉得思路没问题,测试用例输进去结果也对但就是不知道,错哪了。
#include<stdio.h>
#include<string.h>
int main()
{
char p[4][60],*m[7]={"MON","TUE","WED","THU","FRI","SAT","SUN"};
int i,num[3],j=0;
for(i=0;i<4;i++)
{
scanf("%s",p[i]);
}
i=0;
while(1)
{
if(p[0][i]==p[1][i])
{
if(p[0][i]>='A'&&p[0][i]<='G'&&j==0)
{
num[j]=(int)(p[0][i]-'A');
j++;
i++;
continue;
}
if(j!=0)
{
if(p[0][i]>='0'&&p[0][i]<='9')
{
num[j]=(int)(p[0][i]-'0');
break;
}
else if(p[0][i]>='A'&&p[0][i]<='N')
{
num[j]=((int)(p[0][i]-'A')+10)%24;
break;
}
}
}
i++;
}
i=0;
while(1)
{
if(p[2][i]==p[3][i])
{
if((p[2][i]>='a'&&p[2][i]<='z')||(p[2][i]>='A'&&p[2][i]<='Z'))
{
num[2]=i;
break;
}
}
i++;
}
printf("%s %d:%02d",m[num[0]],num[1],num[2]);
return 0;
}
...全文
329 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
636f6c696e 2019-02-11
  • 打赏
  • 举报
回复
题目也没说清楚是否一定要位置一致啊,从题目给的用例看,位置是一致的
名字在哪啊 2019-02-10
  • 打赏
  • 举报
回复
我上面的回复有点问题
下面是纠正
这个例子D和E在字符串中的位置一样,你这个代码运行是正确的

这个D和E是两个字符串中相同的大写字母但是在字符串中的位置不同
名字在哪啊 2019-02-10
  • 打赏
  • 举报
回复
楼主的代码是把字符串位置相同的字符进行比较
这个是有问题的

比如:
DUIE
DNJE
s&hgsfdk
d&Hyscvnm
这个例子Y和R在字符串中的位置一样,你这个代码运行是正确的
但是如果是:
DHUE
ODEM
s&hgsfdk
d&Hyscvnm
这个Y和R是两个字符串中相同的大写字母但是在字符串中的位置不同
在你这运行就不对了

70,024

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧