PAT (Basic Level) Practice (中文)1014 福尔摩斯的约会 (20 分)

先说一下这道题吧,没有那么难,纯逻辑扣细节!

自己犯的错误:

                1.读题问题还是有点

                2.对题目的判断出现偏差 

                3.口头debug还是需要一步一步来,别空想

接下来写一下写题思路:

                1.记住前两个字符串的第一个相同大写字母在字母表中的位置

                例如:A——MON   D——THU

                注意:这个大写字母的范围判断时不能写A~Z而是A~G

                因为你需要的只能是这几天,没有星期八星期九

                2.记住前两个字符串的第二个相同字符(0~9 A~N)

                两种判断  是数字,该如何做

                                是字母,该如何做

                3.记住后两个字符串的第一个相同的英文字母的下标大小写都算(第一次提交错了这个)

就是这些,下面是AC代码,以供大家参考,谢谢!

                        

#include<iostream>
#include<cstring>
using namespace std;
int main(){
	char s1[100];
	char s2[100];
	char s3[100];
	char s4[100];
	cin>>s1>>s2>>s3>>s4;
	int day;//星期 switch 
	int count=0;
	int hour;//时间
	int Indexj;//分钟 
	for(int i=0;s1[i]&&s2[i];i++){
		if(((s1[i]>='A'&&s1[i]<='G')&&(s1[i]==s2[i]))&&count==0){
			day=s1[i]-'A'+1;
			count++;
		}
		else{
				if(((s1[i]>='A'&&s1[i]<='N')&&(s1[i]==s2[i]))&&count==1){
					hour=10-'A'+s1[i];
					break;
				}		
				else if(((s1[i]>='0'&&s1[i]<='9')&&(s1[i]==s2[i]))&&count==1){
					hour=s1[i]-'0';
					break;
				}
			}
	}
	for(int i=0;s3[i]&&s4[i];i++){
		if(((s3[i]>='a'&&s3[i]<='z')||(s3[i]>='A'&&s3[i]<='Z'))&&(s3[i]==s4[i])){
			Indexj=i;
			break;
		}
	}
	char DAY[5];
	switch(day){
		case 1:strcpy(DAY,"MON");break;
		case 2:strcpy(DAY,"TUE");break;
		case 3:strcpy(DAY,"WED");break;
		case 4:strcpy(DAY,"THU");break;
		case 5:strcpy(DAY,"FRI");break;
		case 6:strcpy(DAY,"SAT");break;
		case 7:strcpy(DAY,"SUN");break;
	}
	printf("%s %02d:%02d",DAY,hour,Indexj);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值