wordpress网站会员太多app模板下载网站模板
web/
2025/9/25 12:56:34/
文章来源:
wordpress网站会员太多,app模板下载网站模板,电子商务推广方式,搜索引擎营销的主要模式CSP-201503-3-节日
关键点#xff1a;格式化输出 在C中#xff0c;格式化输出通常利用iostream库中的功能#xff0c;特别是iomanip头文件提供的一系列操作符。这些操作符用于控制输出格式#xff0c;如宽度、填充、对齐方式等。在你提供的代码中#xff0c;用于格式化输…CSP-201503-3-节日
关键点格式化输出 在C中格式化输出通常利用iostream库中的功能特别是iomanip头文件提供的一系列操作符。这些操作符用于控制输出格式如宽度、填充、对齐方式等。在你提供的代码中用于格式化输出的部分主要涉及setw和setfill操作符。 setw(int n)这是一个格式化操作符用于设置下一个输出值的宽度。在此处n代表输出值应占用的字符数。如果实际数值的位数少于n则根据对齐方式默认右对齐输出会在左侧填充空格或其他字符如果设置了填充字符。 setfill(char c)这个操作符用于设置用于填充额外空间的字符。默认情况下如果使用setw设置的宽度大于实际数据的宽度空出的位置会被空格填充。setfill可以改变这个默认行为用另一个字符来替代空格。例如setfill(0)会使用0来填充空白。例如 setw(4) setfill(0) year这保证了年份year以四个字符的宽度输出不足四位的部分会用0补足。例如如果年份是1995它将正常输出为1995如果年份是205则输出为0205。
解题思路 输入年份和日期规则用户输入五个整数a月份b该月的第几个星期c星期几y1开始年份y2结束年份。程序需要输出从y1年到y2年每年的a月第b个星期c的日期。 闰年判断实现一个isLeapYear函数来判断给定的年份是否是闰年。如果年份能被400整除或者能被4整除但不能被100整除则该年是闰年。这对于计算二月份的天数和确定日期很重要。 计算天数总和从1850年开始计算到目标年份year之前的所有年份中每一年的天数总和。普通年有365天闰年有366天。 月份处理累加目标年份的月份之前的所有月份的天数。如果目标年份是闰年并且目标月份大于2月意味着影响到二月的天数则需要额外加一天。 计算目标月份的第一天是星期几已知1850年1月1日是星期二基于这一点和之前累计的天数可以计算出目标月份的第一天是星期几。 计算目标日期基于目标月份的第一天是星期几计算出该月的第b个星期c是哪一天。这里需要考虑目标星期c与该月第一天星期的差并计算出准确日期。 输出结果对于每个年份先检查计算出来的日期是否合法即是否超出了该月的实际天数。如果日期合法则以“yyyy/mm/dd”的格式输出如果不合法如计算出的日期超出了该月的天数则输出none。 异常处理和格式化程序需要处理各种边界情况如闰年的二月、每个月的天数不同等。同时输出格式要求年、月、日分别以四位数、两位数、两位数表示位数不足时前面补零。
完整代码
#includeiostream
#includestring
#includevector
#include iomanip
using namespace std;bool isLeapYear(int year) {return (year % 4 0 year % 100 ! 0) || (year % 400 0);
}
int daysOfMonth[] { 31,28,31,30,31,30,31,31,30,31,30,31 };int main() {int month, weekOrdinal, weekday, startYear, endYear;cin month weekOrdinal weekday startYear endYear;for (int year startYear; year endYear; year) {long long dayCount 0; // 从1850年1月1日起的总天数for (int i 1850; i year; i) {dayCount isLeapYear(i) ? 366 : 365;}for (int i 1; i month; i) {dayCount daysOfMonth[i - 1];}if (isLeapYear(year) month 2) dayCount; // 闰年且月份超过2增加一天int firstDayOfWeek (2 dayCount) % 7; // 当前年月的1号是星期几if (firstDayOfWeek 0) firstDayOfWeek 7; // 调整星期的值使其从1到7int dayOfMonth 1 (weekOrdinal - 1) * 7; // 当月的目标日期int offset weekday - firstDayOfWeek; // 需要调整的天数if (offset 0) offset 7;dayOfMonth offset;// 检查日期是否存在注意闰年if (dayOfMonth (month 2 isLeapYear(year) ? 29 : daysOfMonth[month - 1])) {cout none endl; // 日期不存在}else {cout year / setw(2) setfill(0) month / setw(2) setfill(0) dayOfMonth endl;}}return 0;
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/81626.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!