概述
第一章作业——三天打鱼两天晒网
题目:
中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。用C或C++语言/java/python实现程序解决问题。
基本要求:1.程序风格良好(使用自定义注释模板),提供友好的输入输出。
提高要求:1.输入数据的正确性验证。
2.使用文件进行数据测试。如将日期 20100101 20111214 等数据保存在in.txt文件中,程序读入in.dat文件进行判定,并将结果输出至out.txt文件。
学习心得:
刚开始看到这个题目我是没有思路的,因为之前本来学的就不好,也没有练习过多少编程题目,一时间无从下手,思考之后我决定用最基础的c语言完成此次作业。
首先,我就想着要知道某一天是打鱼还是晒网应该是要先知道经历了多少时间,然后在思考满足什么条件打鱼,满足什么条件晒网。
通过老师的作业思路分析我知道了要想知道经历了多长时间需要先判断平年和闰年,这个老师给出了思路,运用数学思路:如果 ((年能被4除尽 且 不能被100除尽)或 能被400除尽);则 该年是闰年;否则 不是闰年。
其次便是打鱼和晒网各自的条件了,打鱼和晒网的周期为5天,可以求模取余来判断,余数1、2、3为打鱼,4、5为晒网
其中对提高要求里的时间正确性的判断,我是用if语句来判断的,即如果年份小于2010或者月份大于13或者日期大于31,则输入数据错误,否则判断打鱼还是晒网。
这些完成后对于文件部分我实在是不知怎么办,查阅书籍上网搜寻还是不会,为此我去请教了其他同学。
总之,这份作业我经自己努力完成了,从中学到了很多,也收获了很多,特别是体会到了数学思想的重要性。
程序:
#include<stdio.h>
#define YEAR 2010
void main()
{
int year,month,day,y,days=0;
int num[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
//将一年中每个月的天数保存为一维数组
printf("请输入正确的年月日(年月日用空格键隔开):n");
scanf("%d%d%d",&year,&month,&day);
if(year<2010||month>12||day>31)
//判断输入数据的正确性
printf("The date is wrong.");
else
{
for(y=2010;y<year;y++)
//判断输入年份是否为闰年
{
if((y%4==0&& y%100!=0)||y%400==0)
//利用if else 语句判断是否是闰年,如果是闰年则一年加366天,如果不是闰年则一年加365天
days+=366;
else
days+=365;
}
for(y=1;y<month;y++)
//计算从2010年1月1日到输入年份总共多少天
{
days+=num[y];
}
days+=day;
printf("n从2010年1月1日起到%d年%d月%d日共经过了%d天nn",year,month,day,days);
if(days%5==1||days%5==2||days%5==3)
//用计算出的总天数除以5,求模
printf("%d年%d月%d日他在打鱼nn",year,month,day);
else
printf("%d年%d月%d日他在晒网nn",year,month,day);
}
}
最后
以上就是热心牛排为你收集整理的三天打鱼两天晒网C语言的全部内容,希望文章能够帮你解决三天打鱼两天晒网C语言所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复