题目链接:https://www.bilibili.com/video/av21356335?p=3

问题描述:某人从1999年1月1日起开始三天打鱼两天晒网,计算输入的日期是打鱼还是晒网

问题分析:

(1)先计算出输入的日期距1990.01.01一共有多少天

(2)用计算出的天数去取余5,根据结果判断若余数为1,2,3则为打鱼,其他为晒网

程序一:

#include<iostream>
using namespace std;//判断输入的年份是否为闰年
bool is_leap_year(int year)
{if ((year%400==0) || ((year%100!=0)&&(year%4==0))){return true;}return false;
}//计算输入的日期距离 1990 年 1 月 1 日一共多少天
int total_day(int year, int month, int day)
{int total_num = 0;int this_year = year;int day_of_month[] = {31,28,31,30,31,30,31,31,30,31,30,31};while(this_year>1990){if(!is_leap_year(this_year)){total_num += 365;}else{total_num += 366;}this_year--;}for(int i = 1; i<month; i++){total_num += day_of_month[i-1];}//若日期大于二月并且该年是闰年,总天数 + 1 if(month>2 && is_leap_year(year)){total_num++;}total_num += day;return total_num;
}int main()
{cout<<"请输入日期:"<<endl;int year,month,day;int total_number;cin>>year;cin>>month;cin>>day; total_number = total_day(year,month,day);cout<<year<<"年"<<month<<"月"<<day<<"日距1990年1月1日一共有"<<total_number<<"天"<<endl;int remainder = total_number % 5;if(remainder==1 || remainder==2 || remainder==3){cout<<"今天打鱼!"<<endl; }else{cout<<"今天晒网!"<<endl; }return 0;
}

程序二:定义结构体存储日期

#include<iostream>
using namespace std;//定义日期结构体
typedef struct date{int year;int month;int day;
}DATE; //计算天数的函数声明
int countDay(DATE);//判断是否为闰年的函数声明
int runYear(int); int main(){DATE today;        //指定日期 int totalDay;        //指定日期距 1990.01.01的天数int result;        //总天数对 5 取余的结果cout<<"输入指定日期: "<<endl; cin>>today.year;cin>>today.month;cin>>today.day;totalDay = countDay(today);cout<<"今天是第"<<totalDay<<"天"<<endl; result = totalDay%5;if(result>0&&result<4)cout<<"今天打鱼!"<<endl;elsecout<<"今天晒网!"<<endl;return 0;
} //判断是否为闰年
int runYear(int year)
{if((year%400==0&&year%100!=0)||(year%400==0))return 1;elsereturn 0;} //计算输入日期距规定日期的总天数 int countDay(DATE currentDay){int perMonth[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};int totalDay = 0,i,year;for(year=1990;year<currentDay.year;year++){if(runYear(year))totalDay += 366;elsetotalDay += 365;}if(runYear(currentDay.year))perMonth[2] = 29;for(i=0;i<currentDay.month;i++)totalDay += perMonth[i];totalDay += currentDay.day;return totalDay;}

打鱼晒网问题(C++)相关推荐

  1. JavaScript网页特效-“渔夫打鱼晒网”程序设计

    程序设计时,把可能需要反复执行的代码封装为函数,然后在需要执行该段代码功能的地方进行调用,这样不仅可以实现代码的复用,更重要的是可以保证代码的一致性,只需要修改该函数代码,则所有调用位置均得到体现.同 ...

  2. python练习, 打鱼晒网问题

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

  3. java捕鱼设计_java实现渔夫打鱼晒网

    package com.example.demo.sample; import java.util.Scanner; /** * Desc :如果一个渔夫从 2015 年 1 月 1 日开始每三天打一 ...

  4. C语言练习题 打鱼晒网问题

    题目: 一个渔夫从2011年1月1日起每三天打一次鱼,两天晒一次网,编程实现输入2011年1月1日后任意一天,输出当天是在打鱼还是晒网. 代码: #include <stdio.h> #i ...

  5. c语言200例 009 打鱼晒网问题

    问题:中国有句俗语叫"三天打鱼两天晒网".某人从2011年1月1日起便开始"三天打鱼两天晒网",问这个人在以后的某一天中是"打鱼"还是&qu ...

  6. 68-C语言-打鱼晒网问题

    问题: 正所谓三天打鱼两天晒网,你成为了一名渔夫,每三天第一次鱼,每两天打一次网,若你从2011年1月1日开始干活,请从键盘输入任意日期,问这天是打鱼还是晒网? 思路: 这个什么时候打鱼,什么时候晒网 ...

  7. C语言试题七十七之请编写函实现渔夫打鱼晒网问题

  8. Python趣味算法入门 - 打鱼还是晒网

    问题描述 中国有句俗语叫"三天打鱼两天晒网".某人从1990年1月1日起便开始"三天打鱼两天晒网",问这个人在以后的某一天中是"打鱼"还是& ...

  9. 算法初级_Question3_打鱼还是晒网(java实现)

    这篇文章讲述的是算法初级部分的打鱼还是晒网问题的java实现,参考的书籍为清华大学出版社出版,贾蓓等编著的<c语言趣味编程1000例>,如有错误或者不当之处,还望各位大神批评指正. 问题描 ...

最新文章

  1. Ajax接收Java异常_java – 处理来自Servlet的Jquery AJAX响应中的异常
  2. move语句java_Oracle中的move命令
  3. 搭建kafaka_Kafka 环境部署搭建
  4. windows查看linux文件中文,Linux 系统下无法查看Windows 中创建的中文文件名
  5. mysql 5.5 外键_MySQL 5.5添加外键失败,错误[HY000] [150]和[HY000] [1005]
  6. 根据ip获取经纬度_PHP使用百度地图获取指定地址坐标:创建AK(图文+视频)
  7. Golang (Go语言) Mac OS X下环境搭建 环境变量配置 开发工具配置 Sublime Text 2 【转】...
  8. java day21【缓冲流、转换流、序列化流】
  9. 转载:cisco voip转码设置
  10. 【Sublime Text 3】编译环境
  11. 格雷码和二进制码的互相转换
  12. 小程序微信JSAPI支付进行退款操作
  13. macOS Monterey系列原版光盘镜像文件制作
  14. mysql外码内码定义_内码和外码分别是什么啊?
  15. 数位板使用技巧_保护您的眼睛技巧,以帮助防止数位眼疲劳
  16. 配置网卡和修改ip地址
  17. windows上安装linux_Linux系统安装Windows软件? 通过这个工具可以做到
  18. LTE学习-信道估计(LS算法)
  19. spring boot车辆管理系统毕业设计源码031034
  20. unity中rectTransform的宽和高如何取

热门文章

  1. 关于submit() 对象不支持此属性或方法的解决方法
  2. tf data 切换数据集 使用并行提高效率
  3. 计算机三级网络技术考试容易吗,计算机三级网络技术难吗?
  4. 视频惠民发布平台助力智慧城市升级
  5. 重装计算机键入用户名,电脑用户名,小编教你电脑用户名怎么修改
  6. Linux释放内存及手动释放Oracle共享内存段
  7. rewind java_Java IntBuffer rewind()用法及代码示例
  8. 用Power BI解读幸福星球指数
  9. 关注木马是如何免杀的
  10. 如何限制IP访问你的网站?