设为首页 加入收藏

TOP

问题四十八: 2011年11月02日是一个回文日:2011 1102,我还记得我和2011级的同学在这一天一起做这个题的时候!请列出近80(一)
2014-11-23 22:30:29 来源: 作者: 【 】 浏览:6
Tags:问题 四十八 2011年 11月 02日 一个 文日 2011 1102 记得 同学 一起 这个 时候 列出

[plain]
/* 程序头部注释开始(为避免提交博文中遇到的问题,将用于表明注释的斜杠删除了)
* 程序的版权和版本声明部分
* All rights reserved.
* 文件名称: txt.c
* 作 者: liuyongshui
* 问 题: 2011年11月02日是一个回文日:2011 1102,我还记得我和2011级的同学在这一天一起做这个题的时候!
请列出近80还有多少个回文日

* 完成日期: 2013 年4 月14日
* 版 本 号: V1.0
*/

#include

const int Day[13]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int CheckYear(int year); //检测是否为闰年或平年
int CompareNum(int num1[], int num2[]); // 比较是否为回文日

int main()
{
int i;
int num=1; //计数
int sign=0; //标记
int flag;
int mark;
int j=0;
int l=0;
int m=0;
int n;
int year[4]={0};
int monthday[4]={0};

for(i=2011; i<=2091; i++) //近80年
{
flag=i; //此处的用flag替代i,因为下面flag=flag/10语句会改边flag,如果不替换,会出错的。

for(j=0; j<4; j++) //把年的每一位放入数组year
{
year[j]=flag%10;
flag=flag/10;
}
for(l=1; l<=12; l++)
{
mark=l; // 也是替代l

for(n=1; n<=Day[l]; n++)
{
m=0; //每执行一次,就把m赋为0
sign=0; //每执行一次,就把sign赋为1

if(n<10) // (n<10)
{
monthday[m++]=n;
monthday[m++]=0;
}
else //取第几天(>=10)的每一位(如 10 ,就取 1 和 0)
{
monthday[m++]=n%10; //取每一位
monthday[m]=n/10%10;
}

if(l==2 && CheckYear(i)) //若果是闰年1 且为二月 就加一。
{
monthday[0]+=1;
}

if(l<10) //取第几月(>=10)的每一位(如 10 ,就取 1 和 0)
{
m=2; //让从m=2开始赋值

monthday[m++]=l; //取每一位
monthday[m++]=0;
}
else // (n<10)
{
m=2; //让从m=2开始赋值

monthday[m++]=mark%10; //取每一位
monthday[m]=mark/10%10;
}

if(CompareNum(year, monthday)) // 比较是否为回文日,若是真
{
if(l==2 && CheckYear(i) ) //若果是闰年1 且为二月 就加一
{
sign=1; //是回文日sign赋为1
printf("第%d个 %5d %5d %5d 是回文日.", num++, i, l, n+1);
}
else
{
sign=1; //是回文日sign赋为1
printf("第%d个 %5d %5d %5d 是回文日.", num++, i, l, n);
}
}

if(sign==1) //若果为真,即有回文日
{
printf("\n");
}
}

}

}

return 0;
}


//函数申明
int CheckYear(int year)
{
if((year%100 !=0 && year%4 ==0) || (year%400 ==0)) //若符合条件,为闰年,返回1
{
return 1;
}
else
{
return 0;
}
}

int CompareNum(int num1[], int num2[])
{
int i;
int j=3;

for(i=0, j=3; i<4, j>=0; i++, j--)
{
if(num1[i]!=num2[j]) //num1从开始的每

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇问题四十五: f=1-i/2!+1/3!-...+1.. 下一篇问题四十七: 有等式[※×(※3+※)..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: