C++第11周项目3(10)——回文日
2012-11-09 21:17
357 查看
课程首页地址:/article/1353502.html
【项目3- 有趣的数字】先阅读例题,体会处理数字的一般方法,然后自行选题进行解决,掌握这种类型程序设计的一般方法。任务:解决下面的问题(选做一道即算完成任务)(10)很有趣的一个题目:2011年11月02日是一个回文日:2011 1102,在2011级同学做这道题时我们刚刚度过这一天!请列出近80年和近60年还有多少个回文日(假如我们能活到百岁,你和我的……)。注意:一年只有12个月。
问题分析:在近80年中,年份确定后,将其从最低位开始倒着取出,每两位组成一个单位,分别对应月份和日期部分。分别判断这些月份和日期的取值范围是否合乎要求,如果符合则输出……
【项目3- 有趣的数字】先阅读例题,体会处理数字的一般方法,然后自行选题进行解决,掌握这种类型程序设计的一般方法。任务:解决下面的问题(选做一道即算完成任务)(10)很有趣的一个题目:2011年11月02日是一个回文日:2011 1102,在2011级同学做这道题时我们刚刚度过这一天!请列出近80年和近60年还有多少个回文日(假如我们能活到百岁,你和我的……)。注意:一年只有12个月。
问题分析:在近80年中,年份确定后,将其从最低位开始倒着取出,每两位组成一个单位,分别对应月份和日期部分。分别判断这些月份和日期的取值范围是否合乎要求,如果符合则输出……
#include <iostream> using namespace std; int main( ) { int year,month,day,y,ymd; bool is_cycle; int count=0; for(year = 2012; year < 2092; year++) { y = year; //思考:后面直接用year不行吗? month=y%100; //后两位对应月 day=y/100; //前两位对应日 month=(month%10)*10+month/10;//还得把月倒过来,例year=2012时,month由12换为21 day=(day%10)*10+day/10;//对日做同样的处理 is_cycle =false; switch(month) //12个月份,各自对应合法的日期范围 { case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(day<=31) is_cycle =true; break; case 4: case 6: case 9: case 11: if(day<=30) is_cycle=true; break; case 2: if((year%4==0&&year%100!=0)||year%400==0) //闰年 { if(day<=29) is_cycle =true; } else { if(day<=28) is_cycle =true; } break; default: continue; //后两位倒过来根本构不成月份 } if(is_cycle) //能构成回文日 { y=year; ymd=year; //构造出年月日的形式供输出 while(y>0) { ymd=ymd*10+y%10; y=y/10; } cout<<ymd<<endl; count++; } } cout<<"共有 "<< count <<"个回文日。"<<endl; return 0; }运行结果
相关文章推荐
- C++第11周项目3(4)——万以内回文数
- C++第11周项目3——回文、素数
- C++第11周项目3(5)——万以内回文素数
- 2014秋C++第11周项目6参考-回文、素数
- C++第11周(春)项目4 - 类族的设计
- 第11周项目6-回文、素数(3)
- 第11周 项目6-6 输出1000以内所有回文素数
- 第11周项目6(2)-回文、素数
- C++第11周项目2(1)参考——百钱百鸡
- C++第11周(春)项目3 - 点类派生直线类
- 第11周项目3:回文,素数
- 第11周项目六 回文~素数(1)
- C++第11周(春)项目4 - 类族的设计
- C++第11周项目5——歌手大奖赛计分
- C++第11周项目4 - 点类、圆类、圆柱类
- 第11周项目六 回文~素数(2)
- 第11周项目6(4)-1000以内的所有回文数
- 第11周 项目6-回文.素数(4)
- 第11周项目6-回文、素数(4)(5)
- C++第11周项目2(2)参考——换分币