使用C++求解三天打鱼两天晒网

中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。用C++实现程序解决问题。

根据题意可以将解题过程分为三步:

1)计算从2010年1月1日开始至指定日期共有多少天;
2)由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除;
3)根据余数判断他是在“打鱼”还是在“晒网”;
若 余数为1,2,3,则他是在“打鱼”
否则 是在“晒网”
在这三步中,关键是第一步。求从2010年1月1日至指定日期有多少天,要判断经历年份中是否有闰年,二月为29天,平年为28天。闰年的方法可以用伪语句描述如下:
如果 ((年能被4除尽 且 不能被100除尽)或 能被400除尽)
则 该年是闰年;
否则 不是闰年。
C++语言中判断能否整除可以使用求余运算(即求模)

程序设计流程图

开始日期 
         start_days.year=2010;
         start_days.month=1;
         start_days.day=1;
 指定日期
         end_days.year;
         end_days.month;
         end_days.day;

在这里插入图片描述

源代码

/**
 *Title: 中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始
         “三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”
		 还是“晒网”。
 *@language C++ 
 *@author 齐佳乐
 *@version 2.0 
*/
#include<iostream>
using namespace std;
class number_of_days
{
	public:
		int year;
	    int month;
	    int day;
};
int main()
{
	int months[12]={31,28,31,30,31,30,31,31,30,31,30,31};
	int sum=0;
	number_of_days start_days,end_days;
	start_days.year=2010;
	start_days.month=1;
	start_days.day=1;
	while(1){
		cout<<"input the year(>=2010) ____\b\b\b\b";
	    cin>>end_days.year;
	    cout<<"input the month __\b\b";
	    cin>>end_days.month;
	    cout<<"input the day __\b\b";
	    cin>>end_days.day;
	    //判断输入的数据是否正确 
	    if(end_days.year>=2010&&end_days.month>0&&end_days.month<=12&&end_days.day>=0&&end_days.day<=31)
	    {
	    	 break;
		}
	    else
		{
		     cout<<"   输入错误,请重新输入! "; 
		     system("pause");
	         system("cls");
		     continue;
	    }
	}
        //输入年份和2010整年之间相差年的总天数 
	while((end_days.year-start_days.year)>0)               
	{
		if((start_days.year%4==0&&start_days.year%100!=0)||(start_days.year%400==0))
		{
			sum+=366;
		}
		else
		{
			sum+=365;
		}
		start_days.year++;
	}
    //计算1~end_days.month-1月的总天数 
	for(int i=0;i<end_days.month-1;i++)                     
	{
		sum+=months[i];
		if((end_days.year%4==0&&end_days.year%100!=0)||(end_days.year%400==0))
		{
			if((end_days.month-1)>2)
			{
				sum+=1;
			}
		}
	}
	sum+=end_days.day;                                   
	if((sum%5)!=4&&((sum%5)!=0))
	{
		cout<<"总天数除5余:"<<sum%5<<"在打鱼 "; 
	}
	else{
		cout<<"总天数除5余:"<<sum%5<<"在晒网 ";
	}
	return 0;
 } 

测试图片

输入错误测试01
在这里插入图片描述
数据结果测试01在这里插入图片描述
数据测试结果02在这里插入图片描述

发布了12 篇原创文章 · 获赞 13 · 访问量 5347

猜你喜欢

转载自blog.csdn.net/qq_41522951/article/details/88070093
今日推荐