当前位置:编程学习 > C/C++ >>

问题四十八: 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语言 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,