概述
三天打鱼,两天晒网(C++实现)
题目:中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。用C或C++语言实现程序解决问题。
输入格式:
输入在一行中给出三个整数,分别代表年月日
输入样例1:
2020 11 28
输出样例
你在“晒网”
输入样例2:
2012 13 28
输出样例2:
请修正月份,月份应大于0小于等于12
2012 12 28
请修正月份,月份应大于0小于等于12
这一天距2010年1月1日已经过去了1123天
你在“晒网”
代码
#include <iostream>
#include<string>
#include<fstream>
using namespace std;
//计算2010年1月1日后的某天距这天的天数差
int DaySum(int year, int month, int day) {
//天数的累加器
int sum = 0;
//循环加每一年的天数
for (int i = 2010; i < year; i++)
{
//判断是否是闰年,闰年sum加366,平年加365
if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) {
sum += 366;
}
else {
sum += 365;
}
}
//当前的月份不一定恰好是最后一天
month--;
//判断月份类型,并循环加多出来的每一月的天数
if (month > 0) {
for (int j = 1; j <= month; j++) {
//判断特殊月份2月
if (j == 2) {
//闰年二月sum加29
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
sum += 29;
}
//平年sum加28
else
sum += 28;
}
else if (j == 1 || j == 3 || j == 5 || j == 7 || j == 8 || j == 10 || j == 12) {
//大月sum加31
sum += 31;
}
else
sum += 30;
}
}
//sum加上多出来的天数得到最终答案
sum += day - 1;
return sum;
}
//判断某年某天是打鱼还是晒网
string Judge(int daySum) {
//用所经历的天数%5,判断余数与3的大小,大于3晒网,小于3打鱼
int x = daySum % 5;
if (x < 3)return "你在“打鱼”";
else return "你在“晒网”";
}
//判断输入是否合法
void keepsure(int* year, int* month, int* day) {
int y = *year;
int m = *month;
int d = *day;
while (y < 2010) {
cout << "请修正年份,年份至少大于2010" << endl;
cin >> y;
}
while (m < 1 || m > 12) {
cout << "请修正月份,月份应大于0小于等于12" << endl;
cin >> m;
}
if (m == 2) {
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) {
while (d > 29 || d < 1) {
cout << "请重新输入,这一年的2月份天数只有29天" << endl;
cin >> d;
}
}
else {
while (d > 28 || d < 1) {
cout << "请重新输入,这一年的2月份天数只有28天" << endl;
cin >> d;
}
}
}
if (m != 2) {
if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) {
while (d > 31 || d < 1) {
cout << "请重新输入,这一年的这月份天数只有31天" << endl;
cin >> d;
}
}
else {
while (d > 30 || d < 1) {
cout << "请重新输入,这一年的这月份天数只有30天" << endl;
cin >> d;
}
}
}
}
int main()
{
cout << "请依次输入年月日:";
int year;
int month;
int day;
cin >> year >> month >> day;
keepsure(&year, &month, &day);
int sum = DaySum(year, month, day);
cout << "这一天距2010年1月1日已经过去了" << sum << "天" << endl;
cout << Judge(sum) << endl;
}
最后
以上就是外向眼睛为你收集整理的三天打鱼,两天晒网(C++实现)的全部内容,希望文章能够帮你解决三天打鱼,两天晒网(C++实现)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复