首页 > 其他分享 >打鱼还是晒网问题

打鱼还是晒网问题

时间:2023-04-13 21:11:42浏览次数:26  
标签:totalday 还是 打鱼 int 天数 31 year 晒网

一、问题描述

一个渔夫从1990年1月1日起开始“三天打鱼两天晒网”,问这人在以后的某一天是打鱼还是晒网

二、设计思路: 1:要求出总天数; 2:考虑到闰年和平年的二月天数不同; 3:打鱼还是晒网主要是找一个周期,明显为5,对5求余找余数;     三、程序流程图   四、代码实现 #include<stdio.h>
typedef struct date//定义一个时间类的结构体
    {
        int year;
        int month;
        int day;    
    }Date;

int runYear(int b)//写一个判断润年的函数
{
    if((b%400==0)||(b%100!=0&&b%4==0))
    {
        return 1;//是闰年则返回真值1
    }
    else return 0;//不是闰年则返回0
}
int coutday(Date a)//写一个计算总天数的函数
{
    int permonth[13]={0,31,28,31,30,31,30,31,31,30,31,30};//初始化当闰年时候的月份天数
    //特意设置13个的长度,为了将数组名月月份相对应
    int year;//定义一个年份中间变量
    int i;
    int totalday=0;//定义并初始化总天数
    for(year=1990;year<a.year;year++)//利用年份的循环求出指定年份与1990年的天数累加和
    {
        if(runYear(year))//条件判断,当该年为闰年
        {
            totalday=totalday+366;//则总天数加上366天
        }
        else totalday=totalday+365;//否则总天数加上365天
        
    }
    if(runYear(a.year))//这里做到了修改二月的天数,如果为闰年,则2月份为29天
    {
        permonth[2]++;
    }
    for(i=0;i<a.month;i++)//把指定日期前的月份加起来,指定日期所在月份不足一个月,不能加,跳出循环
    {
        totalday+=permonth[i];
        
    }
    totalday+=a.day;//把指定日期不足一个月的天数,也加进总天数
    return totalday;//返回总天数的值,等待调用
}

int main()
{    
    Date today;//初始化一个名为today的结构体对象
    int totalday;
    int result;
    printf("请输入年月日,如1999 1 31\n");//提示用户输入,一定要有
    scanf("%d%d%d",&today.year,&today.month,&today.day);//结构体以圆点的形式访问地址
    totalday=coutday(today);//函数声明
    result=totalday%5;//三天打鱼两天晒网,则周期为5天,总天数对5求余,若结果为1,2,3则打鱼,
    if(result>0&&result<4)
    {
        printf("今天打鱼");
    }
    else printf("今天晒网");
    return 0;
} 五、收获 1:结构体来定义多个变量比较好操作; 2:从年,月,日逐层去剥的思路,先加年份,再加月份,再加日 3,找周期,求余数来判断打鱼还是晒网

标签:totalday,还是,打鱼,int,天数,31,year,晒网
From: https://www.cnblogs.com/bzsc/p/17316415.html

相关文章

  • 打鱼还是晒网?
    #include<stdio.h> typedefstructdate { intyear; intmonth; intday; }DATE; intrunyear(intyear) { if((year%4==0&&year%100!=0)||(year%400==0)) return1; else return0; } intcountday(DATEcurrentday) { intpermonth[13]={0,31,28,3......
  • day 3 *打鱼与晒网
      设计思路:1.给出一个天数。2.判断距离目标的天数。3.用距离天数%5,进行判断。  #include<iostream>usingnamespacestd;intsum=0;intstatemonth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};intLday(intyear,intmonth,intday){sum+=365*year;for(in......
  • 国内好用的API平台,还是BAT的实力最强
    应用程序编程接口API即(ApplicationProgrammingInterface),现在众多企业的应用系统中常用的开放接口,对接相应的系统、软件功能,简化专业化的程序开发。下面这些厂商提供的API都不错,比如:百度API、阿里云API、腾讯云API、聚合API传送门国内好用的API平台,还是BAT的实力最强......
  • 打鱼还是晒网
    中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”?首先输入判断的年份和日期,根据输入的年份和日期计算出距离1990年1月1日的天数,由于打鱼和晒网的天数一个周期为五天,用计算的天数除以5余数,若余......
  • Java到底是值传递还是引用传递?
    1.什么是形参和实参形参:就是形式参数,用于定义方法的时候使用的参数,是用来接收调用者传递的参数的。实参:就是实际参数,用于调用时传递给方法的参数。实参在传递给别的方法之前是要被预先赋值的。/***@author一灯*@apiNoteJava传递示例**/publicclassDemo{......
  • 如何查看Linux发行版本是Ubuntu还是CentOS
     https://askubuntu.com/questions/459402/how-to-know-if-the-running-platform-is-ubuntu-or-centos-with-help-of-a-bash-scri HowtoknowiftherunningplatformisUbuntuorCentOSwithhelpofaBashscript? OS_NAME=$(lsb_release-si)case"$OS_N......
  • 低代码开发,是稳扎稳打还是饮鸩止渴?
    2023年,从业者对低代码的发展充满了想象,人们认为,未来低代码它的商业价值不可估量。据Gartner的最新报告显示,到2023年,全球低代码开发技术市场规模预计将达到269亿美元,比2022年增长19.6%。随着数字化进入深水区,企业碎片化、个性化、临时化的需求不断涌现,而无论传统应用还是SaaS服......
  • 打鱼还是晒网和抓交通肇事犯
    打鱼还是晒网:中国有句俗语叫“三天打鱼两天晒网”。某人从1990年1月1日起开始“三天打鱼两天晒网”,问找个人在以后的某一天中是“打鱼”还是“晒网”。解题思路:根据输入的日期来计算1990.1.1到输入日期的天数(考虑闰年366天),然后用天数取余5,倘若得到1,2,3则为打鱼,结果为4,0则为晒......
  • Passwork 还是 KeePass, 企业应该选哪一个?
    在企业密码管理方面,有很多选择,其中最受欢迎的两个是Passwork和KeePass。虽然两者都是不错的选择,但它们是为不同的目的而设计的。KeePass是一个主要为个人使用而设计的密码管理器,是一个免费的开源程序,允许用户将密码存储在一个安全的位置。虽然它可以在商业环境中使用,但......
  • LINUX 下如何判断服务器是虚拟机,还是物理机
    要检查服务器是物理服务器还是虚拟服务器,最简单的检查方法是使用dmidecode命令。下面推荐几种常用操作。方法一#如果是物理系统,则应该看到制造商的名称,例如Dell,Lenovo等。[root@laocalhost~]#sudodmidecode-ssystem-manufacturerDellInc.#如果是虚拟系统,则应该看到类......