问题四十八: 2011年11月02日是一个回文日:2011 1102,我还记得我和2011级的同学在这一天一起做这个题的时候!请列出近80
[plain]
/* 程序头部注释开始(为避免提交博文中遇到的问题,将用于表明注释的斜杠删除了)
* 程序的版权和版本声明部分
* All rights reserved.
* 文件名称: txt.c
* 作 者: liuyongshui
* 问 题: 2011年11月02日是一个回文日:2011 1102,我还记得我和2011级的同学在这一天一起做这个题的时候!
请列出近80还有多少个回文日
* 完成日期: 2013 年4 月14日
* 版 本 号: V1.0
*/
#include <stdio.h>
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;
}
补充:软件开发 , C语言 ,