1014 福尔摩斯的约会 (20 分)

1014 福尔摩斯的约会 (20 分),第1张

1014 福尔摩斯的约会 (20 分)

此题并不难,只是坑比较多。

坑1:题目中的第几对的“对”指的是两个字符串对应位置的两个字母,叫一对,并不是同一个字符串的相邻两个字符叫一对

坑2:当输出天、时后应该立刻结束第一第二个字符串的 *** 作

#include
#include
using namespace std;

unsigned int length(string& str1, string& str2)
{
    if (str1.length() > str2.length())
    {
        return  str2.length();
    }
    else
    {
        return str1.length();
    }
}

int main()
{
    enum
    {
        MON = 'A',TUE='B', WED='C', THU='D',FRI='E',SAT='F',SUN='G'
    };
    vectorv;
    for (int i = 0; i < 4; i++)
    {
        string str;
        cin >> str;
        v.push_back(str);
    }
    int loc = 0;
    for (unsigned int i = 0; i < length(v[0], v[1]); i++)
    {
        //找出相同的位置并记录下来
        if ((v[0][i] == v[1][i]) && (v[0][i] >= 'A' && v[0][i] <= 'G'))
        {
            if (loc==0)
            {
                switch (v[0][i])
                {
                case MON:
                    cout << "MON ";
                    break;
                case TUE:
                    cout << "TUE ";
                    break;
                case WED:
                    cout << "WED ";
                    break;
                case THU:
                    cout << "THU ";
                    break;
                case FRI:
                    cout << "FRI ";
                    break;
                case SAT:
                    cout << "SAT ";
                    break;
                case SUN:
                    cout << "SUN ";
                    break;
                }
                loc=1;
                continue;
            }
        }
        if (loc == 1)
        {
            if ((v[0][i] == v[1][i]) && (v[0][i] >= '0' && v[0][i] <= '9'))
            {
                cout << "0" << v[0][i] << ":";
                break;
            }
            else if ((v[0][i] == v[1][i]) && (v[0][i] >= 'A' && v[0][i] <= 'N'))
            {
                cout << (v[0][i] - 'A') + 10 << ":";
                break;
            }
        }
    
    }
    
    for (unsigned int i = 0; i < length(v[2], v[3]); i++)
    {
        //找出相同的位置并记录下来
        if (((v[2][i] >= 'A' && v[2][i] <= 'Z') || (v[2][i] >= 'a' && v[2][i] <= 'z')) &&(v[2][i] == v[3][i]))
        {
            if (i >= 0 && i <= 9)
            {
                cout << "0" << i << endl;
            }
            else
            {
                cout <<  i << endl;
            }
        }
    }
    system("pause");
    return 0;
}

程序改进地方:比较字符串长度

int length=v[0].length()

解释:指的是如果v[0]的长度小于v[1]的长度就将v[0]的长度赋给length,否则就将v[1]的长度赋给length。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5593477.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存