ltx_zero

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

PAT B1014

福尔摩斯的约会,题本身没有任何难度,但是,这个读题有点问题

题目里面暗含了关于三个相同的限定

第一个要求是A-G

第二个要求是0-9或者A-N

第三个要求是英文字母

学会读题

另外复习了一下char*change()

这种里面最后return的东西要定义成static避免被回收

还有就是,在for循环里面ij同时出现,写一写限定条件就写乱了,这种很难检查,如果出现未知错误首先确认这种,或者其他命名非常接近的地方

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
using namespace std;
char*daystring(char a)
{
    static char*ans;
    if(a=='A') ans="MON";
    if(a=='B') ans="TUE";
    if(a=='C') ans="WED";
    if(a=='D') ans="THU";
    if(a=='E') ans="FRI";
    if(a=='F') ans="SAT";
    if(a=='G') ans="SUN";
    return ans;
}
int hour(char a)
{
    if(a>='0' && a<='9')
        return a-'0';
    return a-'A'+10;
}
int main()
{
    char str1[1000];
    char str2[1000];
    char str3[1000];
    char str4[1000];
    scanf("%s %s %s %s",str1,str2,str3,str4);
    //printf("%s\n%s\n%s\n%s\n",str1,str2,str3,str4);
    char same1,same2;
    int same3,i;
    for(i=0;i<=min(strlen(str1),strlen(str2))-1;i++)
    {
        if(str1[i]==str2[i] && str1[i]>='A' && str1[i]<='G')
        {
            same1=str1[i];
            break;
        }
    }
   // printf("same1:%c\n",same1);
    for(int j=i+1;j<=min(strlen(str1),strlen(str2))-1;j++)
    {
        if(str1[j]==str2[j] &&((str1[j]>='0' && str1[j]<='9')||(str1[j]>='A' && str1[j]<='N')))
        {
            same2=str1[j];
            break;
        }
    }
    //printf("same2:%c",same2);
    for(int i=0;i<=min(strlen(str3),strlen(str4))-1;i++)
    {
        if(str3[i]==str4[i] && ((str3[i]>='a' && str3[i]<='z')||(str3[i]>='A' && str3[i]<='Z')))
        {
            same3=i;
            break;
        }
    }
    char*str=daystring(same1);
    int h=hour(same2);
    printf("%s ",str);
    printf("%02d:%02d",h,same3);
    return 0;
}
View Code

 

posted on 2019-09-03 21:16  ltx_zero  阅读(117)  评论(0编辑  收藏  举报