题目描述:计算对称年(即年月日倒过来依旧为原数)
思考:判断月份天数,考虑闰年,进行每一位数的输出
完整代码:
#include <stdio.h>
int main()
{
int y,m,d,t,c=0; //定义
for(y=1000;y<=3000;y++) //外循环输出
for(m=1;m<=12;m++) //内循环判断月份天数
{
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
t=31;
else if(m==4||m==6||m==9||m==11)
t=30;
else if(m==2&&y%4==0&&y%100!=0) //闰月的判断
t=29;
else
t=28;
for(d=1;d<=t;d++)
c+=panduan(y,m,d); //调用函数
}
printf("出现过%d次世界完全对称日",c); //输出
return 0;
}
int panduan(int y,int m,int d)
{
int i,zong,s[8];
zong=y*10000+m*100+d;
for(i=0;i<8;i++)
{
s[i]=zong%10;
zong=zong/10;
}
if(s[7]==0&&s[6]==0&&s[5]==0) //确定每一位上的数字
{
for(i=0;i<2;i++)
{
if(s[i]!=s[4-i])
return 0;
}
}
else if(s[7]==0&&s[6]==0)
{
for(i=0;i<3;i++)
{
if(s[i]!=s[5-i])
return 0;
}
}
else if(s[7]==0)
{
for(i=0;i<3;i++)
if(s[i]!=s[6-i])
return 0;
}
else
{
for(i=0;i<4;i++)
if(s[i]!=s[7-i])
return 0;
}
return 1;
}
|