代码中的问题在于变量名不一致导致。在check函数中,应该使用变量名date而不是data来判断日期是否符合条件。
修改后的代码如下:
#include<iostream>
#include<string>
using namespace std;
int months[]={
0,31,28,31,30,31,30,31,31,30,31,30,31
} ;
int leap(int y) {
if(y % 400 == 0 || (y%4==0 && y%100 !=0))
return 1;
return 0;
}
int get_days(int y,int m) {
if(m == 2) return 28 + leap(y);
return months[m];
}
bool check(int date) {
int m = date % 10000 /100;
int d = date %100;
int y = date /10000;
if(m<1 || m>12)
return false;
if(d<1 || d > get_days(y,m))
return false;
return true;
}
int main() {
int a,b; // 声明a和b
cin>>a>>b; // 输入a和b
int res = 0;
for(int i =1000;i<9999;i++) {
string s1 = to_string(i);
string s2(s1.rbegin(),s1.rend());
int date = stoi(s1 + s2);
if(date >= a && date <= b && check(date)) {
res++;
}
}
cout<<res;
return 0;
}
这样修改后,对于输入数据20110101和20111231,res的结果应该会增加。
内容由零声教学AI助手提供,问题来源于学员提问




