题解:
#include<stdio.h>
int main()
{
int t=0;
int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
//因为2022为平年,所以二月为28天
int b[8]={2,0,2,2};//往数组b放日期
for(int i=1;i<=12;i++)
{
b[4]=i/10;//每月的最高位
b[5]=i%10;//每月的最低位
for(int j=1;j<=day[i];j++)
{
b[6]=j/10;//天数的最高位
b[7]=j%10;//天数的最底位
if(b[4]+1==b[5]&&b[5]+1==b[6]||b[5]+1==b[6]&&b[6]+1==b[7])
//两种情况:顺子日期偏向月份,如1230 顺子日期偏天数,如0123
t++;
}
}
printf("%d",t);
return 0;
}
附:因为2022年这四位无法与后面的四位形成顺子。例,没有2022.34.00,这样的月份不存在,所以只需要判断后面的四位即可,以下位改善题解。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int sum = 0;//记得要给初值****
int day[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};//七八月都有31天
int a[4];
for(int i = 1; i <= 12; i++)
{
a[0] = i/10;
a[1] = i%10;
for(int j = 1; j <= day[i]; j++)
{
a[2] = j/10;
a[3] = j%10;
if((a[0] + 1 == a[1] && a[1] + 1 == a[2]) || (a[1] + 1 == a[2] && a[2] + 1 == a[3]) )
{
sum++;
}
}
}
cout << sum ;
return 0;
}
闰年:能被400整除或能被4整除不能被100整除。