三天打鱼两天晒网问题
题目:中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。用C或C++语言/java/python实现程序解决问题。
基本要求:1.程序风格良好(使用自定义注释模板),提供友好的输入输出。
问题分析与算法设计
1)计算从2010年1月1日开始至指定日期共有多少天;
2)由于打鱼和晒网的周期为5天,所以可以由天数与5求余的结果得出最终结果(余数为1,2,3为打鱼,4,0为晒网);
那么求其中的总天数是该程序的关键。我们可以分步求输入年月日对应于2010.1.1之间的天数再求和。Sum=sum1+sum2+sum3;其中年份中总天数需要计算出闰年有几个;伪代码如下:
求年份之间所隔天数:判断该年是否为闰年,若为闰年且月份<2,Sum1=(year-2010)*365+(year-2008)/4-1;否则Sum1=(year-2010)*365+(year-2008)/4。其中(year-2008)是计算出输入年份与2010年最近的闰年数之差,再除4就可得期间的闰年数个数。
求月份之间所隔天数:就是输入月份与1月之间月份的总天数。定义一个数组arr[] = { 31,28,31,30,31,30,31,31,30,31,30,31 },month=i,通过for循环实现对天数的累加。Sum2=sum2+arr[i];
求日之间所隔天数:sum3=day;
Sum=sum1+sum2+sum3;
流程图:
代码如下:
#include<stdio.h>
int main()
{int year, month, day, sum1 = 0, sum2 = 0, sum = 0, sum3 = 0,i;printf("请输入年月日,中间用连字符-隔开\n");scanf("%d-%d-%d", &year, &month, &day);i = month;int arr[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };while (year < 2010){printf("年份输入过小,请重新输入: \n");scanf("%d-%d-%d", &year, &month, &day);}if (month < 1 || month>12){printf("月份错误,请重新输入:\n");scanf("%d-%d-%d", &year, &month, &day);}if (day>arr[i-1]){printf("日期错误,请重新输入:\n");scanf("%d-%d-%d", &year, &month, &day);
}if ((year % 4 == 0 && year % 100 != 0 || year % 400 ==0) && month > 2)//判断输入年份是否为闰年且月份是否>2;
sum1 = (year - 2010) * 365 + ((year - 2008) / 4) + 1;//(year-2008)/4计算出输入年份与2000年之间的闰年数,闰年的话多加一天
else
sum1 = (year - 2010) * 365 + ((year - 2008) / 4);
for (i = 0; i<month - 1; i++){sum2 = sum2 + arr[i];}if (day>1){sum3 = day;}//如果输入的日期是一号,则不需要加1sum = sum1 + sum2 + sum3;printf("sum=%d\n", sum);if (sum % 5 == 0 || sum % 5 == 4){printf("晒网\n");}else {printf("打渔\n");}return 0;
}
调试截图:
加断点调试:
测试结果展示:
``
学习心得:
很久没编了,很多东西在第一开始就没学会,这次在网上查了很多,虽然编程知识还是没学会多少,但毕竟有所收获。从理解别人的代码到修改其中的不足,我觉得我思想上也是有进步的。我畏惧编程,或许从内心抵抗它,但是没办法选了这个专业,还有一年9半的时间,我希望自己可以去学习不同新的知识,无论是编程还是其他方面的知识。(或许这个IT博客不适合写这些,可我还是想要说出自己的想法。)希望自己不要老是害怕,勇敢一些,至少不要挂科。加油!
三天打鱼两天晒网问题相关推荐
- 分支-03. 三天打鱼两天晒网(Switch…case)
中国有句俗语叫"三天打鱼两天晒网".假设某人从某天起,开始"三天打鱼两天晒网",问这个人在以后的第N天中是"打鱼"还是"晒网&qu ...
- Java---中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。
已经实现的功能: 从键盘输入指定的年.月.日: 计算从2010年1月1日至指定日期共有多少天: 由于"打鱼"和"晒网"的周期为5天,所以将计算出的天数用5去除. ...
- python天天向上的力量三天打鱼两天晒网_017 示例3-天天向上的力量-Go语言中文社区...
一."天天向上的力量"问题分析 1.1 天天向上的力量 基本问题:持续的价值 一年365天,每天进步1%,累计进步多少呢? (1.01^{365}) 一年365天,每天退步1%,累 ...
- 三天打鱼两天晒网 (15 分)
中国有句俗语叫"三天打鱼两天晒网".假设某人从某天起,开始"三天打鱼两天晒网",问这个人在以后的第N天中是"打鱼"还是"晒网&qu ...
- 三天打鱼两天晒网python程序设计_Python经常会遇到三天的笔试题:钓鱼和两天的晒网:,之,三天打鱼,两天晒网...
问题概述:中国有句俗语叫"三天打鱼两天晒网"某人从1990年1月1日起开始"三天打鱼两天晒网",问这个人在以后的某一天中是"打鱼"还是&qu ...
- C语言程序设计打鱼还是晒网,C语言编程三天打鱼两天晒网
满意答案 dmmk2822 2018.11.05 采纳率:46% 等级:6 已帮助:160人 中国有句俗语叫 "三天打鱼两天晒网 ".某人从 1990年 1月 1日起开始&q ...
- python天天向上的力量三天打鱼两天晒网_天天向上的力量
我前阵子三天打鱼两天晒网地学了一点Python,也就开个头的样子吧,然后就不想学了,一鼓作气再而衰三而竭了.我学到课程的第三个例子,老师给起的名字叫"天天向上的力量". 其实就是那 ...
- 实验3-9 三天打鱼两天晒网 (15 分)
实验3-9 三天打鱼两天晒网 (15 分) 中国有句俗语叫"三天打鱼两天晒网".假设某人从某天起,开始"三天打鱼两天晒网",问这个人在以后的第N天中是" ...
- 三天打鱼两天晒网--捕鱼小游戏
在B站学了好几天,终于搞通了,能跑了,捕鱼的小游戏~ 下面分步骤跟大家说说呗~~~ /*** Java中的窗体类:JFrame(游戏的支架)用来固定游戏界面* 自定义窗体的固定步骤:* 1.创建一个任 ...
- “三天打鱼两天晒网问题
中国有句俗语叫"三天打鱼两天晒网".某人从2010年1月1日起开始"三天打鱼两天晒网",问这个人在以后的某一天中是"打鱼"还是"晒 ...
最新文章
- 就算是戴上口罩,AI也知道你在说什么丨EMNLP 2020最佳论文
- 公司间采购的后台配置备忘录
- 华为 命令 so easy
- 图像算法中常用的数学概念
- 解决启动Biee控制台乱码问题
- jQuery 图片轮流展示效果
- 科发财务凭证登陆出现错误:40002
- 【Shell教程】一----什么是Shell
- mysql profile使用(转)
- 使用IDEA编写一个springMVC架构的HelloWorld
- attack lab 做不出来_让人念念不忘的香油,到底是怎么做的,我们自己就是做不出来?...
- 单例模式详解(线程安全,饿汉,懒汉模式)
- centos du 命令使用
- Internet Explorer无法打开站点,已终止操作
- 程序员”脑筋急转弯”
- win7 c盘空间不足怎么扩大
- nginx 使用总结
- 有关于Mapreduce的读后感
- 用了三年teambition的我,为什么改用飞项了?
- 重拾Java基础知识:IO流
热门文章
- 独孤九剑之SQL调优
- bomb和mysql_Bigger Bomb
- C盘清理的五大技巧,瞬间多出30G
- 【工具】Alfred2.5.1使用全攻略!神一样的Mac app!(神一样的搜索)(推荐)
- 导出anaconda的代码为pdf
- MySQL 一起重新认识下count(*) ,count(1),count(id)
- 【prcc2017实践】win7工具安装python3.7、you-get、QuickTime、ffmpeg、prcc2017
- cmak(kafka Manager) 编译教程
- Agora Talk 回顾 | 深入聊聊不一样的 Flutter
- 人体大脑是如何产生压力的,脑体的机制变化过程