02不吉利日期,noi练习题,小学生编程

2024-01-22 13:36

本文主要是介绍02不吉利日期,noi练习题,小学生编程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

02:不吉利日期

总时间限制: 

1000ms

内存限制: 

65536kB

描述

在国外,每月的13号和每周的星期5都是不吉利的。特别是当13号那天恰好是星期5时,更不吉利。已知某年的一月一日是星期w,并且这一年一定不是闰年,求出这一年所有13号那天是星期5的月份,按从小到大的顺序输出月份数字。(w=1..7)

输入

输入有一行,即一月一日星期几(w)。(1 <= w <= 7)

输出

输出有一到多行,每行一个月份,表示该月的13日是星期五。

样例输入

7

样例输出

1
10

提示

1、3、5、7、8、10、12月各有31天
4、6、9、11月各有30天
2月有28天

题目解析:

首先需要先读懂题目中各个变量的意义,输入,输出是什么。

本题中输入的为1月1日的星期,假设输入数字为2 ,则1月1日星期二。如果输入的数字为4,则表示的是1月1日星期四。

于是我们可以先写出一月份的日期及对应的星期,去找到题目要求当中的1月13日是否为星期五即可。

定义day为日,根据日的变化规律,为1到31,所以当我们写一月份的日期时,可以直接用循环语句中的i。

定义week为星期,根据星期的变化规律,当week==7的时候,下一个的值为week=1,若week不等于7的时候,例如为5,下一个值为6,可写成week++。

此知识点设计循环语句中输出两个变量。例如之前练习过的九九乘法表。

#include<bits/stdc++.h>
using namespace std;
int main(){int week;inr day;cin>>week;for(int i=1;i<=31;i++){day=i;cout<<"1月"<<i<<"日"<<"星期"<<week<<endl;if(week==7){week=1;} else{week++;}} return 0;} 

此时可以输出一月份的日期和对应的星期

现在我们想要去找一月的13号是不是星期五,加一个判断语句即可

if(week==5&&day==13){
cout<<"不吉利";
}

当我们写好了一月的时候,同理可以写2月的,3月的。

假设每一个月都有31天的时候,可以写成12个循环的形式

#include<bits/stdc++.h>
using namespace std;
int main(){int week=7;for(int j=1;j<=12;j++){for(int i=1;i<=31;i++){//cout<<j<<"月"<<i<<"日星期"<<week<<endl;if(i==13&&week==5){cout<<j<<"月不吉利"<<endl; } if(week==7){week=1;}else{week++;}}
}return 0;
}  

但是每个月份的天数不全都是31天,则需要利用数组

#include<bits/stdc++.h>
using namespace std;
int main(){int m[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int week=7;for(int j=1;j<=12;j++){for(int i=1;i<=m[j-1];i++){//cout<<j<<"月"<<i<<"日星期"<<week<<endl;if(i==13&&week==5){cout<<j<<"月不吉利"<<endl; } if(week==7){week=1;}else{week++;}}
}return 0;
}  

上述的方法是以每个月为单位,做出12个月,然后找到哪几个月满足不吉利日期。

还有一种方法是以年为单位,给出365天,去输出一年的第一天是1月1日星期日,第二天是1月2日星期一,一直到第365天。所以我们需要考虑的是week是1到7循环,但是日期是以每个月的天数发生变更。例如1月31日的下一个是2月1日,2月28日的下一个是3月1日。

我们依然做一个简单版本,假设每个月都有31天,则day这个变量和week写法类似,当day==31时,day的下一个值为1。

#include<bits/stdc++.h>
using namespace std;
int main(){int week=7;int day=1;int a=1;//月份 for(int i=1;i<=365;i++){cout<<a<<"月"<<day<<"日星期"<<week<<endl;if(day==31){day=1;a++; }	else{day++;}if(week==7){week=1;}else{week++;}}return 0;
} 

输出

之后我们依然需要考虑到每个月份天数不同的问题,和之前的方法一样,增加数组。

#include<bits/stdc++.h>
using namespace std;
int main(){int m[12]={31,28,31,30,31,30,31,31,30,31,30,31};int week=7;int day=1;int a=1;//月份 for(int i=1;i<=365;i++){//cout<<a<<"月"<<day<<"日星期"<<week<<endl;if(day==13&&week==5){cout<<a<<"月不吉利"<<endl; }if(day==m[a-1]){day=1;a++; }	else{day++;}if(week==7){week=1;}else{week++;}}return 0;
} 

简单课后总结,欢迎大家一起交流学习。

这篇关于02不吉利日期,noi练习题,小学生编程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/633139

相关文章

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Java实现优雅日期处理的方案详解

《Java实现优雅日期处理的方案详解》在我们的日常工作中,需要经常处理各种格式,各种类似的的日期或者时间,下面我们就来看看如何使用java处理这样的日期问题吧,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言一、日期的坑1.1 日期格式化陷阱1.2 时区转换二、优雅方案的进阶之路2.1 线程安全重构2

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

Mysql表如何按照日期字段的年月分区

《Mysql表如何按照日期字段的年月分区》:本文主要介绍Mysql表如何按照日期字段的年月分区的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、创键表时直接设置分区二、已有表分区1、分区的前置条件2、分区操作三、验证四、注意总结一、创键表时直接设置分区

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、