你的代码已经接近正确了,只需要在原有的基础上进行一些修改。
首先,在hefa函数中,你需要在最后加上return true;来表示日期是合法的。否则,如果日期符合条件,在函数末尾没有返回值,会导致编译错误。
其次,在主函数main中,你计算日期个数的循环条件应该是i <= date2 - date1 + 1,而不是i <= date2 - date1。这是因为题目要求包括起始和终止日期本身。另外,你还需要在循环中加上一个计数器count,每当检查到一个回文日期时,将count加1。最后输出count即可。
下面是修改后的完整代码:#include<iostream>using namespace std;int days[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};bool hefa(int date){ int year = date / 10000; int mon = date / 100 % 100; int day = date % 100; if(mon == 0 || mon > 12) return false; if(day == 0 || (mon != 2 && day > days[mon])) return false; if(mon == 2) { bool leap = (year % 100 != 0 && year % 4 == 0) || (year % 400 == 0); if(day > 28 + leap) return false; } return true;}int main(){ int date1, date2; cin >> date1; cin >> date2; int count = 0; for(int i = date1; i <= date2; i++) { if(hefa(i)) count++; } cout << count << endl; return 0;}
希望能对你有所帮助!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |