C,C++,Python怎么实现“三天打鱼两天晒网”的渔夫打鱼晒网问题?

本文主要是介绍C,C++,Python怎么实现“三天打鱼两天晒网”的渔夫打鱼晒网问题?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1.问题描述
  • 2.怎么实现
  • 3.代码实现
    • 1.Python实现
    • 2.C语言实现
    • 3.C++实现

1.问题描述

如果一个渔夫从 2011 年 1 月 1 日开始每三天打一次渔,两天晒一次网,编程实现当输入 2011 1 月 1 日以后的任意一天,输出该渔夫是在打渔还是在晒网。

2.怎么实现

(1) 自定义函数 leap(),用来判断输入的年份是否是闰年。
(2) 自定义函数 number(),用来计算输入日期距 2011 年 1 月 1 日共有多少天。
(3)然后就可以计算出在那天,渔夫是在打鱼还是晒网?

3.代码实现

1.Python实现

源代码:


def leap(b):if ((b%4==0) and (b%100 != 0) or (b%400==0)):return 1else:return 0
def number(y,m,d):global sumsum = 0a=[31,28,31,30,31,30,31,31,30,31,30,31]    # 数组a存放平年每月的天数b=[31,29,31,30,31,30,31,31,30,31,30,31]    # 数组b存放闰年每月的天数if leap(y)==1:   # 判断是否为闰年for i in range(m):sum+=b[i]    # 是闰年,累加数组b前m-1个月份的天数i+=1else:for i in range(m):sum+=a[i]   # 不是闰年,累加数组a前m-1个月份的天数for j in range(2011,y+1):if leap(j)==i:sum+=366    # 2011年到输入的年份是闰年的加366else:sum+=365   # 2011年到输入的年份不是闰年的加365i+=1sum= sum+d   # 将前面累加的结果加上日期,求出总天数return sum   # 返回计算的天数
time = input('请输入日期 YYYY-MM-DD:')
data = time.split("-")
year = int(data[0])
month = int(data[1])
day = int(data[2])
n=number(year,month,day)   # 调用函数 number()
if((n%5) ==4 or (n%5)==5):   # 余数是1或2或3时说明在打渔,否则在晒网print("%d:%d:%d 晒网\n" % (year, month, day))else:print("%d:%d:%d 打鱼\n" % (year, month, day))

运行结果:
在这里插入图片描述

2.C语言实现

源代码:

#include <stdio.h>
int leap(int a) /*自定义函数leap()用来指定输入的年份是否为闰年*/
{if (a%4==0&&a%100!=0||a%400==0)    /* 闰年判定条件 */return 1;    /*是闰年返回1*/elsereturn 0;    /*不是闰年返回O*/
}int number(int year,int month,int day)    /*自定义函数 number() 计算输入日期距2011年1月1日共有多少天*/
{int sum = 0, i, j, k;int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};    /*数组a存放平年每月的天数*/int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};    /*数组b存放闰年每月的天数*/if(leap(year)==1)    /*判断是否为闰年*/for(i=0;i<month-1;i++)sum+=b[i];    /*是闰年,累加数组b前m-1个月份的天数*/elsefor(i=0;i<month-1;i++)sum+=a[i];    /*不是闰年,累加数组a前m-1个月份的天数*/for(j=2011;j<year;j++)if (leap(j)==i)sum+=366;    /*2011年到输入的年份是闰年的加366*/elsesum+=365;    /*2011年到输入的年份不是闰年的加365*/sum+=day;    /*将前面累加的结果加上日期,求出总天数*/return sum;    /*返回计算的天数*/
}int main()
{int year,month,day,n;printf("请输入年月日\n");scanf("%d%d%d",&year,&month,&day);    /*输入年月日*/n=number(year,month,day);    /*调用函数 number()*/if((n%5)<4&&(n%5)>0)    /*余数是1或2或3时说明在打渔,否则在晒网*/printf("%d:%d:%d 打鱼\n",year,month,day);elseprintf("%d:%d:%d 晒网\n",year,month,day);return 0;
}

运行结果:
在这里插入图片描述

3.C++实现

源代码:

#include <iostream>using namespace std;int leap(int a) /*自定义函数leap()用来指定输入的年份是否为闰年*/
{if (a%4==0&&a%100!=0||a%400==0)    /* 闰年判定条件 */return 1;    /*是闰年返回1*/elsereturn 0;    /*不是闰年返回O*/
}int number(int year,int month,int day)    /*自定义函数 number() 计算输入日期距2011年1月1日共有多少天*/
{int sum = 0, i, j, k;int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};    /*数组a存放平年每月的天数*/int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};    /*数组b存放闰年每月的天数*/if(leap(year)==1)    /*判断是否为闰年*/for(i=0;i<month-1;i++)sum+=b[i];    /*是闰年,累加数组b前m-1个月份的天数*/elsefor(i=0;i<month-1;i++)sum+=a[i];    /*不是闰年,累加数组a前m-1个月份的天数*/for(j=2011;j<year;j++)if (leap(j)==i)sum+=366;    /*2011年到输入的年份是闰年的加366*/elsesum+=365;    /*2011年到输入的年份不是闰年的加365*/sum+=day;    /*将前面累加的结果加上日期,求出总天数*/return sum;    /*返回计算的天数*/
}int main()
{int year,month,day,n;cout<<"请输入年月日\n"<<endl;cin>>year>>month>>day;    /*输入年月日*/n=number(year,month,day);    /*调用函数 number()*/if((n%5)<4&&(n%5)>0)    /*余数是1或2或3时说明在打渔,否则在晒网*/cout<<year<<"年"<<month<<"月"<<day<<"日"<<"打鱼\n"<<endl;elsecout<<year<<"年"<<month<<"月"<<day<<"日"<<"晒网\n"<<endl;return 0;
}

运行结果:
在这里插入图片描述
这篇文章主要通过三种语言实现三天打鱼,两天晒网,欢迎大家用自己喜欢的语言写出来,评论,大家相互学习,相互借鉴。

这篇关于C,C++,Python怎么实现“三天打鱼两天晒网”的渔夫打鱼晒网问题?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

在Linux中改变echo输出颜色的实现方法

《在Linux中改变echo输出颜色的实现方法》在Linux系统的命令行环境下,为了使输出信息更加清晰、突出,便于用户快速识别和区分不同类型的信息,常常需要改变echo命令的输出颜色,所以本文给大家介... 目python录在linux中改变echo输出颜色的方法技术背景实现步骤使用ANSI转义码使用tpu

Conda与Python venv虚拟环境的区别与使用方法详解

《Conda与Pythonvenv虚拟环境的区别与使用方法详解》随着Python社区的成长,虚拟环境的概念和技术也在不断发展,:本文主要介绍Conda与Pythonvenv虚拟环境的区别与使用... 目录前言一、Conda 与 python venv 的核心区别1. Conda 的特点2. Python v

Python使用python-can实现合并BLF文件

《Python使用python-can实现合并BLF文件》python-can库是Python生态中专注于CAN总线通信与数据处理的强大工具,本文将使用python-can为BLF文件合并提供高效灵活... 目录一、python-can 库:CAN 数据处理的利器二、BLF 文件合并核心代码解析1. 基础合

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文