黎子卿 发表于 2023-11-18 18:39:53

为什么

#include <iostream>
using namespace std;
#include <string>
int main()
{
        string a;
        cin >> a;
        if (a == a and a == a and a == a and a==a and a==a and a==a)
        {
                cout << "YES";
        }
        else
        {
                cout << "NO";
        }
        return 0;
}给一个8位数字的日期,日期按“yyyymmdd”的格式写,判断其是否是一个ABABBABA型回文日期。回文数指的是正着写和倒着写相等的数。20200202、21211212是回文日期,且是ABABBABA型回文日期。20111102是回文日期,但不是ABABBABA型回文日期。怎么不对

Mike_python小 发表于 2023-11-18 18:41:08

问题解答:

根据你提供的代码,判断日期是否是一个ABABBABA型回文日期的逻辑是正确的。然而,你可能遇到了一个排版错误,导致代码无法正常工作。请注意使用正确的空格和缩进。

以下是修改后的代码:


#include <iostream>
#include <string>

using namespace std;

int main() {
    string a;
    cin >> a;

    if (a == a && a == a && a == a && a == a) {
      cout << "YES";
    } else {
      cout << "NO";
    }

    return 0;
}


在这个修改后的代码中,我做了以下更改:
1. 删除了多余的空格和缩进。
2. 修改了条件语句,使其按照ABABBABA型回文日期的规则进行判断。

希望这次能解决问题。如果还有其他问题,请随时提问。

isdkz 发表于 2023-11-18 18:45:01

你的代码中存在一个问题,你使用了 cin 来读取日期,但是 cin 在读取字符串时会遇到空格或换行符就停止读取,所以如果输入的日期是"20200202", cin 只会读取"2020",而不会读取整个日期。这会导致你的判断条件不正确。

你可以使用 getline(cin, a) 来读取整个日期字符串。另外,你的代码中使用了 and 来连接逻辑条件,但在C++中应该使用 && 来表示逻辑与。

下面是修改后的代码:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string a;
    getline(cin, a);
    if (a == a && a == a && a == a && a == a)
    {
      cout << "YES";
    }
    else
    {
      cout << "NO";
    }
    return 0;
}


这样修改后,你就可以正确读取整个日期字符串,并且使用正确的逻辑与操作符来判断是否是ABABBABA型回文日期。
页: [1]
查看完整版本: 为什么