算法设计与问题分析

计算从20100101日起开始"三天打鱼两天晒网",求出在以后的某一天是"打鱼"or"晒网"

即1.计算从20100101日起至指定日期的天数,分别求从2010至指定日期前一年的天数(day_year)+从该年一月到前一月的天数(day_month)+该月指定日期的天数(today.day)=相差日期(diff);

2,用相差日期(diff)%5计算余数判断该天是"打鱼"还是"晒网"

流程图

源程序:

#include #include struct Date

{

int year;

int month;

int day;

};

int DateDiff(FILE* in,FILE* out)

{

struct Date today,term;

term.month = 12;

term.day =31;

long date;

while( fscanf(in,"%ld",&date) != EOF)

{

/*针对读in.txt文件做出测试

printf("%ld\n",date);

*/

int diff,day_year,day_month=0;//sum为由20100101至指定日期的总天数

int leap;

int n = 0; //由20100101至指定日期共经过多少个闰年

static int mon[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};//每月的天数

fscanf(in,"%d",&date);

today.year = date/10000; //将输入日期年,月,日分开

today.month = date/100-today.year*100;

today.day = date%100;

/*对输入的日期年月日分开后的数据进行测试

printf("%d年%d月%d日\n",today.year,today.month,today.day);*/

if(today.year < 2010 || today.month < 1 || today.month > 12) //判断输入的年份和月份是否合理

{

fprintf(out,"输入的日期不合理");

return 0;

}

leap = ( today.year % 4 == 0 && today.year % 100 != 0 )|| today.year % 400 ; //判断输入年份是否为闰年

if(today.day < 1 || (today.day > mon[today.month] && today.month != 2)||(today.month == 2 && today.day > mon[today.month] + leap)) //判断输入日期是否符合当月天数

{

fprintf(out,"输入的日期不合理");

return 0;

}

for(int i = 2010;i < today.year;i++)

{

if(( i % 4 == 0 && i % 100 != 0 )|| i % 400 ==0) //计算由2010年至指定日期经过多少个闰年

{

n++;

}

}

day_year = (today.year - 2010) * 365 + n;

if(leap == 1)

{

for(int j = 0;j < today.month ; j++)

{

day_month += mon[j];

}

if(today.month > 2) //若输入年份为闰年且输入月份大于二计算天数加一

{

day_month += 1;

}

}

else

{

for(int k = 0;k < today.month;k++)

{

day_month += mon[k];

}

}

diff = day_year + day_month + today.day;

switch(diff % 5) //总天数除以5,若余数为1,2,3则为打鱼,其余为晒网

{

case 0:fprintf(out,"晒网 "); break;

case 1:fprintf(out,"打鱼 "); break;

case 2:fprintf(out,"打鱼 "); break;

case 3:fprintf(out,"打鱼 "); break;

case 4:fprintf(out,"晒网 "); break;

}

}

return 0;

}

int main()

{

FILE* in = fopen("in.txt","r");

/*针对文件是否打开且打开是否为空做出测试

if (in != NULL)

{

printf("There are date!\n");

}

else

{

printf("no date!\n");

}*/

FILE* out = fopen("out.txt","w");

DateDiff(in,out);

fclose(in);

fclose(out);

return 0;

}

测试代码:

测试一:针对文件是否打开且打开是否为空做测试

测试二:针对读in.txt文件做出测试

测试三:对输入日期年月日分开后的数据测试

三天打鱼两天晒网的c语言程序,c语言“三天打鱼两天晒网”相关推荐

  1. 棱形旋转c语言程序_C 语言时隔 5 年重回巅峰,这 20 个热门项目拿去练手!

    在上个月的 TIOBE 编程语言排名中,C 语言和 Java 的差距只有 0.01%.在近日 TIOBE 公布的 2020 年 5 月编程语言排行榜中,C 语言成功超越了 Java,重返第一的王者宝座 ...

  2. 蜂鸣器发出7种音阶c语言程序_C语言编程新思路

    第一章 单元测试 1.单选题: 关于一个C语言程序执行的起点和终点,以下选项正确的是 ( ). 选项: A: main 任意 B: main 最后一个 C: main main D: 第一个 最后一个 ...

  3. 文件的记录c语言程序,c语言程序学生籍贯信息记录簿设计.docx

    c 语言程序学生籍贯信息记录簿设计 学生籍贯信息记录簿 课程设计报告书 班 级: 方 0909-1 学 号:姓 名: 苑 小 叶 指导教师 : 康 亚 男 石家庄铁道大学四方学院 2010年 07月 ...

  4. 学生实验平台搭建c语言程序,c语言程序设计实验学生用.doc

    c语言程序设计实验学生用 C语言程序设计 实验指导 (学生用) 计算机基础教研室 <C语言程序设计>课程组 2012年9月 前 言 <C语言程序设计>是计算机科学技术系面向全校 ...

  5. 插入法排序c语言程序,C语言之插入排序算法

    一.什么是直接插入算法? 直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的纪录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的纪录插入完为止,得到一个新的有序序列. 选择 ...

  6. 青花瓷音乐的单片机c语言程序,c语言曲谱_单片机c语言音乐简谱代码

    51单片机曲谱编写音乐程序,我看不懂曲谱,谁能教下我! //<世上只有妈妈好>51单片机C语言程序和音乐采灯程序 //此程序在硬件上调试通过 //本程序的单片机晶振采用11.0592MHZ ...

  7. 框图c语言程序,C语言程序设计框图

    <C语言程序设计框图>由会员分享,可在线阅读,更多相关<C语言程序设计框图(86页珍藏版)>请在人人文库网上搜索. 1.第三章控制结构,返回总目录,目录,3.1节目结构框,3. ...

  8. 简单谱子C语言程序,c语言曲谱_单片机c语言音乐简谱代码

    51单片机曲谱编写音乐程序,我看不懂曲谱,谁能教下我! //<世上只有妈妈好>51单片机C语言程序和音乐采灯程序 //此程序在硬件上调试通过 //本程序的单片机晶振采用11.0592MHZ ...

  9. 用直接分解法求方程组的C语言程序,c语言编程求解线性方程组论文

    计算机编程求解线性方程组 第一章 绪 论 在自然科学.工程技术.经济和医学各领域中产生的许多实际问题都可以通过数学语言描述为数学问题,也就是说,由实际问题建立数学模型,然后应用各种数学方法和技巧来求解 ...

  10. 记得每天锻炼身体c语言程序,c语言程序

    一实验名称计算出1000以内10个最大素数之和二.实验目的1.熟练掌握if.if-else.if-else if语句和witch语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和s ...

最新文章

  1. SQL优化|Java面试题
  2. redis 零散知识
  3. 探索中国广电“智慧城市”未来转型路径
  4. ADB工具 获取ROOT权限及复制文件方法
  5. python画一条曲线有不同的形状_Python+pandas+matplotlib控制不同曲线的属性 !
  6. linux 关闭rsync服务器,linux下配置rsync服务器和实时同步
  7. iPhone平台下的游戏开发
  8. Sonar安装和常见问题解决
  9. 集合对象转json数组
  10. netty权威指南学习
  11. Minecraft mod制作简易教程(二)——Mod配置
  12. 阅读分享——李开复老师《开工愉快:如何保持每天精力充沛》
  13. html视频自动全屏代码,HTML5轻松实现全屏视频背景的示例
  14. 用防火墙自动拦截攻击IP
  15. 构建之法---第一次作业
  16. bzoj4444: [Scoi2015]国旗计划(线段树+倍增)
  17. 华为nova6计算机历史在哪可以看,写在华为nova6发布前:一文看出nova手机使用芯片的变迁历程...
  18. db2 replace函数的用法_48R软件数据的基本处理之删除重复数据(duplicated()、unique()、distinct()函数)...
  19. 广西田园及20家子公司引入契约锁电子签章,提升经销商服务效率
  20. Hutool 自定义excel导出

热门文章

  1. python软件基金会在哪个国家举行_官宣!Python 开发者大会(PyCon US)提供在线订阅啦!...
  2. Cesium鹰眼<利用Cesium本身你的二维地图和三维地图构成>
  3. Win7上通过DckerToolbox部署OnlyOffice
  4. OpenSIPS配置脚本结构
  5. Python selenium使用中遇到的问题总结
  6. 【华为OD机试真题 python】最大股票收益【2022 Q4 | 100分】
  7. 微信开店需要营业执照吗?微信开店需要准备哪些资料?
  8. 快速建站可以怎么实现???
  9. VS2010系统找不到指定的文件
  10. win7升win10,初体验