这道题是PAT Basic Level,坑挺多的,必须先找到星期几后,再接着找第几个小时,注意各个if的条件,字母不是A到Z。而且找到星期后,必须用cintinue跳出此次循环,否则有可能满足“小时”的条件。本是一道20分的题,断断续续费了好久时间,还需要多刷题。
#include<bits/stdc++.h>
using namespace std;
string str;
int h,m;
void day(char c)
{
if(c=='A')
str = "MON";
else if(c=='B')
str = "TUE";
else if(c=='C')
str = "WED";
else if(c=='D')
str = "THU";
else if(c=='E')
str = "FRI";
else if(c=='F')
str = "SAT";
else if(c=='G')
str = "SUN";
}
void tt(char c)
{
if(c>='0'&&c<='9')
h = c-'0';
else{
h = c-'A'+10;
}
}
int main()
{
string s1,s2,s3,s4;
cin>>s1>>s2>>s3>>s4;
int flag = 0;//判断是第几个相同的字符
for(int i = 0;i<s1.length()&&i<s2.length();i++)
{
if(s1[i]==s2[i]&&s1[i]>='A'&&s1[i]<='G'&&flag==0)
{
flag++;
day(s1[i]);
continue;
}
if(flag==1&&s1[i]==s2[i]&&((s1[i]>='0'&&s1[i]<='9')||(s1[i]>='A'&&s1[i]<='N')))
{
tt(s1[i]);
break;
}
}
for(int i = 0;i<s3.length()&&i<s4.length();i++)
{
if(s3[i]==s4[i]&&((s3[i]>='a'&&s3[i]<='z')||(s3[i]>='A'&&s3[i]<='Z')))
{
m = i;
break;
}
}
cout<<str;
printf(" %02d:%02d",h,m);
}
不知道为啥,复制粘贴代码的时候,总是显示0行,预览也变成一片空白,这段代码粘了好几遍才弄过来的,难道是我浏览器的问题?!