PAT 1014 Bホームズデート(C言語)、124個のテストポイントエラーとソリューション

1014ホームズの予定(20分)

シャーロックホームズは奇妙な注意を受けた:我々はそれを満たしています!S&hgsfdk D&Hyscvnm 3485djDkxh4hhGE 2984akDfkkkkggEdsb。同じ大文字(大文字と小文字を区別区別)の最初の文字列の前二つは最初の4つの文字であるため、探偵はすぐにDの時間にその実際に奇妙な文字化けの予定日(木)14:04のメモを、実現します代表木曜日2が同じ文字のEであり、それは1つが9までの数字0によって夜11時00分まで0:00となるように(アルファベットの最初の5つの文字、14時間の代表的な一日であり、そしてNの大文字示されている);文字Sの同じ文字列の最初の二つの後ろ4位(0から数えて)最初の4分の代表で現れます。さて、文字列の2組を与えられた、助けてくださいホームズは、予定の時間をデコード。

入力フォーマット:
入力ライン4は、4つの非空、スペースなしに与えられ、列60の長さを超えません。

出力フォーマット:
行の出力予定時間、フォーマットDAY HH:MON =月曜日、水曜日のための火曜日、WEDための火が、木が木曜日発現していることが週DAY 3文字の略語ですMM、FRI手段上の金曜日、土曜日のための土、日曜日のための日 話題の保証に各テストのためのユニークな解の存在を入力します。

サンプル入力:

3485djDkxh4hhGE

2984akDfkkkkggEdsb

S&hgsfdk

D&Hyscvnm

出力例:

木曜午後二時04分

124テストポイント間違った答えは、長い時間を見て、最終的にはアウトに変更、元は愚かな間違いなく、ASCIIコード番号(コードのカウント時間、ライン25)のデジタル交換価値の有罪である¯□¯||
このそれは上げる必要がある多くのピットの質問、私は話をしたくないポイントに注意を払う、兄のコードの多くを見て、感じて、非常に長い書かれたが、ポインタに精通ポインタができ、それが大幅にコードの量を簡素化することができます。

#include <stdio.h>
int main()
{
    int d,b=0,m,h;
    char a[4][61];
    for(int i=0;i<4;i++)
        gets(a[i]);
    for(int j=0;j<60;j++)
    {
        if(a[0][j]>='A' && a[0][j]<='G' && a[1][j]==a[0][j] && b==0)
        {    
            d=a[0][j]-'A'+1;
            b++;
            continue;
        }
        if(b==1 && a[1][j]==a[0][j] )
        {    
            if(a[0][j]>='A' && a[0][j]<='N')
            {
                h=a[0][j]-'A'+10;
                break;
            }
            if(a[0][j]>='0' && a[0][j]<='9')
            {
                h=a[0][j]-'0';
                break;
            }
        }
    }
    for(int k=0;k<60;k++)
    {
        if( (a[2][k]>='A' && a[2][k]<='Z') || (a[2][k]>='a' && a[2][k]<='z') && a[2][k]==a[3][k])
        {
            m=k;
            break;
        }
    }
    switch(d)
    {
        case 1:printf("MON ");break;
        case 2:printf("TUE ");break;
        case 3:printf("WED ");break;
        case 4:printf("THU ");break;
        case 5:printf("FRI ");break;
        case 6:printf("SAT ");break;
        case 7:printf("SUN ");break;
    }
    printf("%02d:%02d\n",h,m);
	return 0;
}

/*测试点124答案错误,看了半天,终于改出来了,原来是犯了低级错误,没把数字的ASCII码换回数字的数值(算小时的代码里,第25行) ̄□ ̄||*/
/*注意的点我不想讲了,看了很多大佬的代码,感觉自己写得很冗长,有待提高吧,对指针熟悉的可以用指针,可以大大简化代码量。*/
公開された15元の記事 ウォンの賞賛0 ビュー286

おすすめ

転載: blog.csdn.net/weixin_44562957/article/details/104057793