【问题描述】
中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的以后的某一天中是打鱼还是晒网。
基本要求:1.程序风格良好(使用自定义注释模板),提供友好的输入输出。
提高要求:1.输入数据的正确性验证。
2.使用文件进行数据测试。如将日期 20100101 20111214 等数据保存在in.txt文件中,程序读入in.dat文件进行判定,并将结果输出至out.txt文件。
【问题分析与算法设计】
根据题意可以将解题过程分为三步:
1)计算从2010年1月1日开始至指定日期共有多少天;
2)由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除取余;
3)根据余数判断他是在“打鱼”还是在“晒网”;
若 余数为1,2,3,则他是在“打鱼”
否则 是在“晒网”
因为个人能力问题,我只能完成提高要求中的第一点,因此设计里只有时间判断,没有读取文件。
根据以上的问题分析,可以画出以下流程图:
程序设计实现的源代码如下:

/*中国有句俗语“三天打鱼两天晒网”,
有个人从2010年1月1日起开始“三天打鱼,两天晒网”
问这个人在以后的某一天是“打鱼”还是“晒网”。*/ #include<stdio.h>
int main()
{int year,month,day;int y=2010;int sum=0;int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//建立一个有平年各月份天数的数组printf("请按照年月日的顺序输入日期,中间用空格隔开\n");scanf("%d""%d""%d",&year,&month,&day);//输入日期while((year<2010)||(month<1||month>12)||(month==2&&(year%4!=0||year%400!=0)&&day>=29)||(day>a[month])){printf("输入日期错误,请重新输入\n");printf("请按照年月日的顺序重新输入日期,中间用空格隔开\n");scanf("%d""%d""%d",&year,&month,&day);}//判断输入日期是否正确for(y;y<year;y++)//用此循环加上相差年份所隔的天数。 {if((y%400==0)||(y%4==0&&y%100!=0))//判断此年份是否是闰年 {sum+=366;}//是闰年,则总天数加上366. else{sum+=365;}//是平年,总天数加上365 }for(int m=1;m<month;m++)//用此循环加上所隔月份的总天数 {sum+=a[m];if(m==2&&((year%400==0)||(year%4==0&&year%100!=0))) {sum+=1;}//判断月份是否为闰年2月,若是2月,则总天数加一。}sum+=day;//总天数加上日 if((sum%5==1)||(sum%5==2)||(sum%5==3))//用相隔总天数除以周期5,若余数为1,2,3,则此人打鱼。 {printf("这个人今天打鱼\n");}else//否则,这个人晒网{printf("这个人今天晒网\n"); }return 0;
}

调试截图:
这个错误是因为我判断时间错误时用的是连续三个的while语句,它们在我把可能出现的日期错误都输出后无法返回最上一个重新判断,经过重新思考后,我最终使用的只使用了一个while语句,各种判断条件用逻辑运算或连接。
测试截图:

将问题改正后,最终运行结果如上图所示。
此次编程问题总结:
我的编程经验是很不足的,基础太差。以上代码都是我用了很长时间,问了很多同学后才做出来的,这次遇到的问题主要就是在时间判断是否正确上,一个是我之前测试时,遇到无法返回的情况,另外一个是刚开始的时候,我是用的if语句来替代while语句,那样导致输入错一次时间后程序就会退出,经过了我长时间的思考(是真的基础差。。),我选择了while语句,让它不把时间输入正确就一直循环下去,总体来说,我对自己此次的编程还是挺满意的,在编程遇到的问题也几乎都解决了。让我觉得不太满足的地方可能就提高要求文件的那块了 ,我会努力的,以后一定把文件那块的问题给解决掉!

三天打鱼两天晒网(C语言)相关推荐

  1. 三天打鱼两天晒网C语言实现

    文章目录 一.问题描述 二.问题分析与算法设计 总结 一.问题描述 中国有句俗语叫"三天打鱼两天晒网".某人从2010年1月1日起开始"三天打鱼两天晒网",问这 ...

  2. 三天打鱼两天晒网c语言版

    浙大第三版题目运用switch语句解题 中国有句俗语叫"三天打鱼两天晒网".假设某人从某天起,开始"三天打鱼两天晒网",问这个人在以后的第N天中是"打 ...

  3. python天天向上的力量三天打鱼两天晒网_017 示例3-天天向上的力量-Go语言中文社区...

    一."天天向上的力量"问题分析 1.1 天天向上的力量 基本问题:持续的价值 一年365天,每天进步1%,累计进步多少呢? (1.01^{365}) 一年365天,每天退步1%,累 ...

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

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

  5. “三天打鱼两天晒网”程序的c语言实现

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

  6. 中国有句俗语叫“三天打鱼两天晒网”(C语言实现)

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

  7. C语言程序设计打鱼还是晒网,C语言编程三天打鱼两天晒网

    满意答案 dmmk2822 2018.11.05 采纳率:46%    等级:6 已帮助:160人 中国有句俗语叫 "三天打鱼两天晒网 ".某人从 1990年 1月 1日起开始&q ...

  8. 三天打鱼两天晒网的c语言程序,c语言“三天打鱼两天晒网”

    算法设计与问题分析 计算从20100101日起开始"三天打鱼两天晒网",求出在以后的某一天是"打鱼"or"晒网" 即1.计算从2010010 ...

  9. 三天打鱼两天晒网的c语言程序,回归经典之C语言《三天打鱼两天晒网》

    //一个人从2000年1月1日开始三天打鱼两天晒网,用户输入一个日期,判断该人这天在打鱼还是晒网 #include void input(); void sum(int y,int m,int d); ...

最新文章

  1. 除 Java 外,还有哪些编程语言蹭了 JVM 的车票?
  2. 5G时代,会有什么奇葩事儿?
  3. javascript数组常用方法
  4. mysql连接nginx_nginx四层负载均衡连接mysql
  5. courses to choose
  6. 补习系列(16)-springboot mongodb 数据库应用技巧
  7. HDU 4255 A Famous Grid 素数+BFS
  8. Mac屏幕常亮时间控制:Theine
  9. 计算机绘图的教学目的,浅谈如何提高《计算机绘图AutoCAD》课程的教学质量
  10. ev3 android,乐高®头脑风暴教育机器人EV3编程
  11. 软件工程学习笔记—————传统模型、面向对象模型的比较
  12. 计算机软件防干扰,抗干扰技术
  13. 【第73期】资深游戏执行策划,很厉害?惊天大忽悠!
  14. Firefox Developer Edition下载
  15. ecshop + 主从 + memcache + memcache监控
  16. D. New Year and the Permutation Concatenation 题解翻译+思路解释(官方为主,我为补充)+普通人能看得懂的代码(我照着思路写的哈哈哈)
  17. C#.Net干货分享-构建Aocr_ImageHelper读取图片文字做解析
  18. vue创建项目报错command not found:create-webpack
  19. 微服务架构和面向服务架构的区别
  20. python 计算两个经纬度的距离_python实现两个经纬度点之间的距离和方位角的方法...

热门文章

  1. 这一周CSDN人都看了些什么?
  2. Spring-Mybatis整合 从零开始
  3. 关于海思3536编解码与FFmpeg的相关问题——推流相关
  4. 后端实体类接收数组_前端代码+后端API,值得一学的Vue高仿音乐播放器实战项目...
  5. 求 职 信 的 内 容
  6. Connection refused问题总结
  7. 想去紫禁城参观一下吗`?告诉你一个密秘
  8. 用Tensorflow重现YOLO V4
  9. SaaSBase:什么是Microsoft ERP?
  10. 马伊琍晒“哺乳照”的四重智慧