/* 中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,
问这个人在以后的某一天中是“打鱼”还是“晒网”。用C或C++语言/java/python实现程序解决问题。*/
#include <stdio.h>
#define N 200
int TheJudgeOfLeapYear(int year)
{
int judge;
if(year%400==00||(year%4==0&&year%100)){
judge=1;
}
else{
judge=0;
}
return judge;
}
int ExtraDay(int month,int day,int judge)
{
int sum ;
switch(month){//计算month月前的天数
case 1:sum=0;break;
case 2:sum=31;break;
case 3:sum=59+judge;break;
case 4:sum=90+judge;break;
case 5:sum=120+judge;break;
case 6:sum=151+judge;break;
case 7:sum=181+judge;break;
case 8:sum=212+judge;break;
case 9:sum=243+judge;break;
case 10:sum=273+judge;break;
case 11:sum=304+judge;break;
case 12:sum=334+judge;break;
}
sum+=day;
return sum;
}
int run(int data)
{
int InitialYear,year,month,day,days=0;
year=data/10000;
month=(data%10000)/100;
day=data%100;
for(InitialYear=2010;InitialYear<year;InitialYear++){
days+=TheJudgeOfLeapYear(InitialYear)+365;
}
days+=ExtraDay(month,day,TheJudgeOfLeapYear(InitialYear));
return days;
}
int CheckOfData(int check)
{
int JUDGE,LEAP,CHECK[13]={0,31,59,90,120,151,181,212,243,273,304,334,365},loop,month,day;
if(check/10000<2010){
JUDGE=0;
}
else{
month=(check%10000)/100;
day=check%100;
LEAP=TheJudgeOfLeapYear(check/10000);
for(loop=2;loop<13;loop++){
CHECK[loop]+=LEAP;
}
if((CHECK[month-1]+day)>CHECK[month]||month>12||month<1){
JUDGE=0;
}
else{
JUDGE=1;
}
}
return JUDGE;
}
int main (void)
{
int select;
printf("若要选择自行输入模式则输入1,若要使用文件进行数据测试请输入2:");
scanf("%d",&select);
if(select==1){
int days,data;
printf("请输入日期:");
scanf("%d",&data);
if(CheckOfData(data)){
days=run(data);
if(days%5==4||!(days%5)){
printf("今天晒网\n");
}
else {
printf("今天打鱼\n");
}
}
else {
printf("error!please printf again!\n");
}
}
else {
int data[N],i=0,j,days;
char ch='\n';
FILE * ftest,*fresult;
ftest=fopen("test.txt","rt");
fresult=fopen("result.txt","at");
while(fscanf(ftest,"%d",&data[i++])!=EOF);
for(j=0;j<i-1;j++){
if(CheckOfData(data[j])){
days=run(data[j]);
if(days%5==4||!(days%5)){
fprintf(fresult,"he's going to burn the net in %d.%c",data[j],ch);
}
else {
fprintf(fresult,"he's going to fishing in %d.%c",data[j],ch);
}
}
else{
fprintf(fresult,"error!please printf again!%c",ch);
}
}
}
}
中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”, 问这个人在以后的某一天中是“打鱼”还是“晒网”。用C或C++语言/java/python实现程序解决问题
最新推荐文章于 2021-03-22 23:20:31 发布