C++第11周项目3(10)——回文日-阿里云开发者社区

开发者社区> 贺利坚> 正文

C++第11周项目3(10)——回文日

简介: 课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 【项目3- 有趣的数字】先阅读例题,体会处理数字的一般方法,然后自行选题进行解决,掌握这种类型程序设计的一般方法。 任务:解决下面的问题(选做一道即算完成任务) (10)很有趣的一个题目:2011年11月02日是一个回文日:2011 1102,在2011级同学做这道题
+关注继续查看

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565


【项目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++项目参考解答:三角形类
【项目 - 三角形类雏形】 (1)下面设计一个三角形类,请给出各成员函数的定义 class Triangle { public: void setABC(double x, double y, double z);//置三边的值,注意要能成三角形 double perimeter();//计算三角形的周长 double area();//计算并返
999 0
C++第13周项目3——汉诺塔
课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 【项目3-汉诺塔】汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。古代有一个梵塔,塔内有三个座A、B、C,A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个和尚想把这64个盘子从A座移到C座,但每次只能允许移动一个盘子,并且在移动过程中,3个座上的
937 0
2015级C++第4周项目 函数
【项目1-求最大公约数】 参考解答 (1)输入两个数,并求出其最大公约数 #include &lt;iostream&gt; using namespace std; //自定义函数的原型(即函数声明) int main() { int a,b,g; cin&gt;&gt;a&gt;&gt;b; g=gcd(a,b); cout&lt;
997 0
C++第13周项目2——进制转换
课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 【项目2-二进制转换】输入一个整数,要求输出对应的二进制形式,请用递归函数实现。 参考解答:#include &lt;iostream&gt; using namespace std; void dec2bin(int n); int main() { int n;
952 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4570 0
C++第13周项目1——Fibnacci序列
课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 【项目1-Fibnacci序列】输出Fibnacci序列的第20个数。要求提交两个程序,fib(int n)的实现分别用迭代方法与递归方法实现。提示:如实现困难,先从讲义看求阶乘的迭代方法与递归方法实现,深入体会后再进行设计。参考解答: //迭代法 #include
799 0
C++项目参考-用递归方法求解
【项目-用递归方法求解】(1)编写递归函数求出n的阶乘(自定义main函数,调用定义的递归函数) 参考解答: #include &lt;iostream&gt; using namespace std; long fact(int); //函数声明 int main( ) { int n;
915 0
C++项目参考解答-求最大公约数
【项目-求最大公约数】(1)输入两个数,并求出其最大公约数 #include &lt;iostream&gt; using namespace std; //自定义函数的原型(即函数声明) int main() { int a,b,g; cin&gt;&gt;a&gt;&gt;b; g=gcd(a,b); cout&lt;&lt;"最大公约数是: "&lt;&lt;g; re
867 0
C++项目参考解答:小试循环
【项目-小试循环】   写出实现下面求解任务的程序【提示:m是一个变量,在程序中输入】   (1)求1到m的平方和   (2)求1到m间所有奇数的和   (3)求1到m的倒数和,即 1+12+13+14+...+1m 1+\frac{1}{2}+\frac{1}{3}+\frac{1}{4}+...+\frac{1}{m}   (4)求值:1−12+13−14+...
753 0
+关注
贺利坚
烟台大学计算机学院教师,建设系列学习资源,改革教学方法,为IT菜鸟建跑道,让大一的孩子会编程,为迷茫的大学生出主意,一起追求快乐的大学。 著书《逆袭大学:传给IT学子的正能量》,帮助处于迷茫中的大学
1942
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载