中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。用C或C++语言/java/python实现程序解决问题。
基本要求:1.程序风格良好(使用自定义注释模板),提供友好的输入输出。
提高要求:1.输入数据的正确性验证。
2.使用文件进行数据测试。如将日期 20100101 20111214 等数据保存在in.txt文件中,程序读入in.dat文件进行判定,并将结果输出至out.txt文件。
程序运行结果截图:
源代码:
package cn.zuoye1;
import java.io.*;
public class Test1 {
public static void main(String[] args) throws Exception{
FileReader reader=new FileReader(“C:\Users\admin\Desktop\in.txt”);
BufferedReader br=new BufferedReader(reader);
FileWriter writer=new FileWriter(“C:\Users\admin\Desktop\out.txt”);
BufferedWriter bw=new BufferedWriter(writer);
int date=0;
//int Sumday=0;
String str=null;
while ((str=br.readLine())!=null) {
date=Integer.valueOf(str);//将文件中的时间读入
int y=date/10000;//年份
int m=date%10000/100;//月份
int d=date%100;//日期
if(SumDay(y,m,d)%5==0||SumDay(y,m,d)%5==1||SumDay(y,m,d)%5==2)
{System.out.println(str+”日在打鱼”+”距离开始日总天数为:”+SumDay(y,m,d)+”天”);
bw.write(str+”在打鱼”+”距离开始日总天数为:”+SumDay(y,m,d)+”天”);
bw.newLine(); }
else
{System.out.println(str+”日在晒网”+”距离开始日总天数为:”+SumDay(y,m,d)+”天”);
bw.write(str+”在晒网”+”距离开始日总天数为:”+SumDay(y,m,d)+”天”);
bw.newLine();}
}
br.close();
bw.close();
}
这里写代码片public static int Thisyearday(int y,int m,int d){
int i,sum=0;
for(i=1;i<m;i++)//计算当前年份的总天数
{
switch(i){
case 1:sum+=31;break;
case 2:{if((i%4==0&&i%100!=0)||i%400==0)
sum+=29;
else {sum+=28;}
};break;
case 3:sum+=31;break;
case 4:sum+=30;break;
case 5:sum+=31;break;
case 6:sum+=30;break;
case 7:sum+=31;break;
case 8:sum+=31;break;
case 9:sum+=30;break;
case 10:sum+=31;break;
case 11:sum+=30;break;
case 12:sum+=31;break;
}
}
sum+=d;
return sum;
}
public static int SumDay(int y,int m,int d){
int i,sum=0,sumday=0;
for(i=2010;i<y;i++)//计算相差整年的总天数
{
if((i%4==0&&i%100!=0)||i%400==0)
{sum+=366;}
else{sum+=365;}
}
sumday=sum+Thisyearday(y,m,d)-1;
return sumday;
}
}